未解析多行json

lvmkulzt  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(480)

这个问题在这里已经有答案了

用apache spark读取json-corrupt\u record(4个答案)
7个月前关门了。
控制台出错
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"
}]
icnyk63a

icnyk63a1#

在spark版本中 2.2.0 支持向前解析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)

相关问题