【发布时间】:2018-06-13 22:57:06
【问题描述】:
我在 PySpark 中有一个数据框,其中包含一个值为 [{"AppId":"APACON","ExtId":"141730"}] 的字符串列(该字符串与我的列中的字符串完全相同,它是一个字符串,而不是数组)
我想将其转换为结构数组。
我可以简单地使用本机 spark 函数来做到这一点,还是必须解析字符串或使用 UDF?
sqlContext.createDataFrame(
[ (1,'[{"AppId":"APACON","ExtId":"141730"}]'),
(2,'[{"AppId":"APACON","ExtId":"141793"}]'),
],
['idx','txt']
).show()
+---+--------------------+
|idx| txt|
+---+--------------------+
| 1|[{"AppId":"APACON...|
| 2|[{"AppId":"APACON...|
+---+--------------------+
【问题讨论】:
-
你需要
from_json -
在 2.0 中不可用......还有其他选择吗?
-
您可以尝试 pyspark.sql.functions.get_json_object 它将解析 txt 列并为每个字段创建一个具有关联值的列
-
@plalanne 解析 json,但我不知道如何访问列表中的元素。
-
我编辑了我的答案并提出了一个正则表达式来忽略 df.txt 中的方括号作为第一步。让我知道这是否有帮助
标签: python apache-spark pyspark