pyspark 从数据框中读取 json 列

pyspark read json column from dataframe

我有一个包含 json 内容的数据框,我想阅读 json 并创建一个包含多列的数据框

data
[{"name": "john","lastname": "kenny","zip": "12345"},{"name": "larry","lastname": "free","zip": "98765"}]

我想从数据框列中读取上面的内容 json 并创建如下数据框

name lastname zip
john kenny 12345
larry free 98765

这是我的代码,但我在提取时看到空值

schema = StructType(
     [
      StructField('name', StringType(), True),
      StructField('lastname', StringType(), True),
      StructField('zip', StringType(), True)
     ]
)
df = df.withColumn("data", F.from_json("data", schema))
df = df.select("data").select(F.col("data.*"))
df.show()
name lastname zip
null null null

data中json字符串的schema应该是struct数组,修改如下:

schema = ArrayType(
    StructType(
        [
            StructField('name', StringType(), True),
            StructField('lastname', StringType(), True),
            StructField('zip', StringType(), True)
        ]
    )
)
df = df.withColumn('data', F.from_json('data', schema)).selectExpr('inline(data)')
df.show(truncate=False)