如何在 Pyspark 中将 ArrayType 的列转换为 Dictionary
Posted
技术标签:
【中文标题】如何在 Pyspark 中将 ArrayType 的列转换为 Dictionary【英文标题】:How to convert column of ArrayType to Dictionary in Pyspark 【发布时间】:2020-07-14 13:05:59 【问题描述】:我正在一个数据帧上执行 collect_list,它产生了所需的column(TASourceId)
,如下所示:
["TASourceId": "Source1", "flag": "true", "TASourceId": "Source2", "flag": "true"]
查询:
SELECT col1, col2,col3, collect_list(struct(TASourceId, flag)) as TASourceId
FROM table
GROUP BY 1,2,3
是否可以获得字典对象的字典作为列的输出,如下所示?
"col1":"TASourceId": "Source1", "flag": "true", "col2":"TASourceId": "Source2", "flag": "true"
我正在尝试使用spark UDF
来获取此信息,但出现以下错误:
类 dict 错误的预期参数为零。
【问题讨论】:
请使用您尝试过的代码添加示例输入和示例。最好是表格格式的 src 行。 【参考方案1】:我已将样本作为您的数组并将其转换为字典。
a=["TASourceId": "Source1", "flag": "true", "TASourceId": "Source2", "flag": "true"]
s=
for i in range(0,len(a)):
s["col"+str(i)]=a[i]
print(s)
【讨论】:
以上是关于如何在 Pyspark 中将 ArrayType 的列转换为 Dictionary的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Pyspark 中将 ArrayType 的列转换为 Dictionary
在 PySpark 中将 ArrayType(StringType()) 的列转换为 ArrayType(DateType())
在 PySpark 中将 StringType 转换为 ArrayType