我有一个包含一行的文件
[[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,也欢迎任何基于其他语言/以前版本的解决方案。
答案 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)