【问题标题】:Multiline JSON is not parsing [duplicate]多行 JSON 未解析 [重复]
【发布时间】:2020-05-21 20:36:25
【问题描述】:

控制台错误
scala> var njson = spark.read.option("multiLine", "true").json("C:/Users/Onkar/Desktop/new.json") njson: org.apache.spark.sql.DataFrame = [_corrupt_record: string]

我的 JSON:

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

【问题讨论】:

  • 不工作..我什至也试过了
  • { “姓名”:“Onkar”,“年龄”:24,“地点”:“Baramati”,“号码”:7709526425 }
  • 您是说您的文件只包含{ "Name": "Onkar", "Age": 24, "Place": "Baramati", "Number": 7709526425 } 并且上面的代码没有设法加载数据框?
  • 正如第一条评论中所解释的,spark json reader 期望记录(不管是否多行)是 JSON 记录,而不是数组 - 因为它将每个键视为一列 - 可以'不要用数组完成。读取后您希望数据帧的内容是什么?
  • 火花版本?

标签: json scala apache-spark


【解决方案1】:

在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)

【讨论】:

  • 我的版本 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 版本中修复...为什么不投票???
猜你喜欢
  • 2013-02-02
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
  • 2012-04-10
  • 2016-02-24
  • 2017-01-09
  • 1970-01-01
相关资源
最近更新 更多