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)
我有一个包含 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)