如何将 spark 数据框中的 JSON 数据转换为新列
How to convert JSON data inside a spark dataframe into new columns
我有一个像
这样的火花数据框
key value
1111 {'fruit1': 'apple', 'fruit2': 'mango'}
2222 {'fruit1': 'orange'}
我想将 JSON(字符串)转换为新列
key fruit1 fruit2
1111 apple mango
2222 orange null
我不想手动指定 JSON 中的键,因为有超过 100 个键
json_keys = df.selectExpr('explode(json_object_keys(value))').select(F.collect_set('col')).first()[0]
df.select('key', F.json_tuple('value', *json_keys).alias(*json_keys)).show()
+----+------+------+
| key|fruit1|fruit2|
+----+------+------+
|1111| apple| mango|
|2222|orange| null|
+----+------+------+
我有一个像
这样的火花数据框key value
1111 {'fruit1': 'apple', 'fruit2': 'mango'}
2222 {'fruit1': 'orange'}
我想将 JSON(字符串)转换为新列
key fruit1 fruit2
1111 apple mango
2222 orange null
我不想手动指定 JSON 中的键,因为有超过 100 个键
json_keys = df.selectExpr('explode(json_object_keys(value))').select(F.collect_set('col')).first()[0]
df.select('key', F.json_tuple('value', *json_keys).alias(*json_keys)).show()
+----+------+------+
| key|fruit1|fruit2|
+----+------+------+
|1111| apple| mango|
|2222|orange| null|
+----+------+------+