Как преобразовать столбец ArrayType в словарь в Pyspark - PullRequest
0 голосов
/ 14 июля 2020

Я делаю 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, чтобы получить это, но получаю следующую ошибку:

Ожидаемые нулевые аргументы для ошибки class dict.

1 Ответ

0 голосов
/ 15 июля 2020

Я взял образец в качестве вашего массива и преобразовал его в словарь.

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)
...