如何在Pyspark中将ArrayType的列转换为Dictionary

时间:2020-07-14 13:05:59

标签: sql dictionary pyspark apache-spark-sql user-defined-functions

我正在对一个数据帧进行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错误的零参数。

1 个答案:

答案 0 :(得分:0)

我已将一个样本作为您的数组,并将其转换为字典。

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)