多行JSON未解析

多行JSON未解析,json,scala,apache-spark,Json,Scala,Apache Spark,控制台上出现错误 scala>var njson=spark.read.option(“multiLine”,“true”).json(“C:/Users/Onkar/Desktop/new.json”) njson:org.apache.spark.sql.DataFrame=[\u corrupt\u record:string] 我的JSON: [{ "Name": "Onkar", "Age": 24, "Place": "Baramati" }] spark版本2.2.0forwar

控制台上出现错误
scala>var njson=spark.read.option(“multiLine”,“true”).json(“C:/Users/Onkar/Desktop/new.json”) njson:org.apache.spark.sql.DataFrame=[\u corrupt\u record:string]

我的JSON:

[{
"Name": "Onkar",
"Age": 24,
"Place": "Baramati"
}]

spark版本
2.2.0
forwards支持解析json对象数组。json对象的spark解析数组的较低版本不受支持或解析不正确

请检查下面的代码

scala> spark.version
res47: String = 2.2.0

scala> "cat /tmp/app.json".!
[{
"Name": "Onkar",
"Age": 24,
"Place": "Baramati",
"Number": 7709526425
}]
res48: Int = 0

scala> val jdf = spark.read.option("multiLine","true").json("/tmp/app.json")
jdf: org.apache.spark.sql.DataFrame = [Age: bigint, Name: string ... 2 more fields]

scala> jdf.printSchema
root
 |-- Age: long (nullable = true)
 |-- Name: string (nullable = true)
 |-- Number: long (nullable = true)
 |-- Place: string (nullable = true)


scala> jdf.show(false)
+---+-----+----------+--------+
|Age|Name |Number    |Place   |
+---+-----+----------+--------+
|24 |Onkar|7709526425|Baramati|
+---+-----+----------+--------+
spark版本
2.1.1
有一些问题,因为它没有解析json对象的数组&这个问题已在较新版本中修复

scala> spark.version
res2: String = 2.1.1

scala> val jdf = spark.read.option("multiLine","true").json("/tmp/app.json")
jdf: org.apache.spark.sql.DataFrame = [_corrupt_record: string]

scala> jdf.printSchema
root
 |-- _corrupt_record: string (nullable = true)


不工作。。我甚至还试过{“Name”:“Onkar”,“Age”:24,“Place”:“Baramati”,“Number”:7709526425}你是说你的文件只包含
{“Name”:“Onkar”,“Age”:24,“Place”:“Baramati”,“Number”:7709526425}
而上面的代码没有加载数据帧吗?正如第一条评论中解释的那样,spark json reader希望记录(不管是否多行)是json记录,而不是数组——因为它将每个键视为一列——不能使用数组。在读取spark版本后,您希望数据帧的内容是什么?spark版本?我的spark版本是2.1.1,scala版本是2.11.8。这有什么问题吗?val jdf=spark.read.json(sc.wholeTextFiles(“C:/Users/Onkar/Desktop/new.json”).values)这对我有效..spark 2.1.1不支持.option(),我更新了答案,如果此解决方案有助于解决您的问题,请接受或投票。在spark 2.1.0或2.1.1中解析json对象数组将不起作用&spark 2.2.0版本中修复了相同的问题。。。为什么否决投票???