Spark 解析 JSON 仅包含数组和整数
Posted
技术标签:
【中文标题】Spark 解析 JSON 仅包含数组和整数【英文标题】:Spark parse JSON consisting of only array and integer 【发布时间】:2017-01-30 20:37:47 【问题描述】:我有一个包含一行的文件
[[1],[2,3]]
我认为这是一个有效的 json 文件,我想在 Spark 中读取它,所以我尝试了
df = spark.read.json('file:/home/spark/testSparkJson.json')
df.head()
Row(_corrupt_record=u'[[1],[2,3]]')
在我看来,Spark 无法解析此文件,我希望 Spark 将其作为 Array of Array of Array of Array in a column 读取,以便我可以拥有
df.head()
Row(sequence=[[1], [2, 3]])
df.printSchema()
root
|-- sequence: array (nullable = true)
| |-- element: array (containsNull = true)
| | |-- element: long (containsNull = true)
我该怎么做?
我现在在 Spark 2.1.0 中使用 pyspark,也欢迎任何基于其他语言/以前版本的解决方案。
【问题讨论】:
【参考方案1】:Spark 要求每个 json 行都有一个 json 字典,并且你有数组。如果您将文件内容更改为:
"sequence": [[1],[2,3]]
然后 spark 将根据需要创建架构:
>>> spark.read.json("/tmp/sample.json").printSchema()
root
|-- sequence: array (nullable = true)
| |-- element: array (containsNull = true)
| | |-- element: long (containsNull = true)
【讨论】:
以上是关于Spark 解析 JSON 仅包含数组和整数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Newtonsoft.Json 将包含数组数组的 json 对象解析为 C# 中的对象列表?
如何仅将一些选定的 Json 数组和 Json 对象从 Url 解析到 android 设备