Не удается получить объект карты из PySpark sql - PullRequest
1 голос
/ 18 апреля 2019

Я новичок в PySpark - и у меня проблема. Я создал код, который читает файл паркета, запрашивает его с помощью SQL-запроса - в то время как я использую udf (udf получает объект списка и возвращает объект словаря), а затем сохраняю его как паркет.

Вывод, который я хочу получить - Тип карты, в столбце, который я получаю из udf (словарь). Вывод получаю - строковый тип.

UDF:

def udf_count_frequencies(elements):
    if not elements:
        return None

    counter = Counter()
    for e in elements:
        e = unicode(e).encode('utf-8').strip()
        counter[e] += 1

    return dict(counter)

SQL:

select user_id, count_frequencies(collect_list(group))
from user_likes
group by 1

Как я могу запросить данные и получить ответ, который устанавливает столбец как карту, пока я его сохраняю, а не преобразовывает его в строку?

Большое спасибо заранее!

1 Ответ

0 голосов
/ 18 апреля 2019

Вы пытаетесь указать тип карты udf?

udf_flatten_counter = udf(
    lambda x: dict(Counter(x)),
    MapType(StringType(), IntegerType()))
...