多行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版本中修复了相同的问题。。。为什么否决投票???