没有名称的ArrayType的PySpark from_json模式

时间:2019-02-02 01:54:53

标签: pyspark

我正在尝试将from_json与以下JSON字符串一起使用,并且需要指定一个架构。哪种模式与该JSON匹配?

[{"key": "value1"}, {"key": "value2"}]

作为一种变通方法,我正在做一个字符串concat来将JSON转换为JSON(即添加一个数组名)。

{ "data": [{"key": "value1"}, {"key": "value2"}] }

然后,我可以使用以下架构。但是,应该可以在不更改原始JSON的情况下指定架构。

schema = StructType([
  StructField("data", ArrayType(
    StructType([
      StructField("key", StringType())
    ])
  ))
])

1 个答案:

答案 0 :(得分:0)

嗨,这是例子


df = self.spark.createDataFrame(['[{"key": "value1"}, {"key": "value2"}]'], StringType())
df.show(1, False)

schema = ArrayType(StructType([StructField("key", StringType(), True)]))

df = df.withColumn("json", from_json("value", schema))
df.show()

+--------------------------------------+
|value                                 |
+--------------------------------------+
|[{"key": "value1"}, {"key": "value2"}]|
+--------------------------------------+

+--------------------+--------------------+
|               value|                json|
+--------------------+--------------------+
|[{"key": "value1"...|[[value1], [value2]]|
+--------------------+--------------------+