Spark解析JSON只包含数组和整数

时间:2017-01-30 20:37:47

标签: json apache-spark pyspark

我有一个包含一行的文件

[[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在一列中将其读作数组长数组,以便我可以拥有

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 个答案:

答案 0 :(得分: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)