我有一个JSON数据,我想以表格形式表示它,然后将其写入不同的格式(parquet)
结构描述
root
|-- : string (nullable = true)
示例数据
+----------------------------------------------+
+----------------------------------------------+
|{"deviceTypeId":"A2A","deviceId":"123","geo...|
|{"deviceTypeId":"A2B","deviceId":"456","geo...|
+----------------------------------------------+
预期输出
+--------------+------------+
| deviceTypeId|deviceId|...|
+--------------+--------+---+
| A2A| 123| |
| A2B| 456| |
+--------------+--------+---+
我试着拆分字符串,但这似乎不是一种有效的方法
split_col = split(df_explode[''], ',')
然后提取列,但它也会追加初始字符串。
df_1 = df_explode.withColumn('deviceId',split_col.getItem(1))
# df_1 = df_explode.withColumn('deviceTypeId',split_col.getItem(0))
printOutput(df_1)
我正在寻找更好的方法来解决这个问题
2条答案
按热度按时间k4aesqcs1#
爆炸功能仅适用于Array。
在您的情况下,这是一个json,您应该使用from_json函数。
请从pyspark.sql函数中引用from_json
f87krz0w2#
我可以使用from_json函数来实现。
我们需要创建解析Json数据的Json Schema。
此Json数据中的值字符串为空,因此列由空字符串组成