【问题标题】:Spark parse JSON consisting of only array and integerSpark 解析 JSON 仅包含数组和整数
【发布时间】: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,也欢迎任何基于其他语言/以前版本的解决方案。

【问题讨论】:

    标签: json apache-spark 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多