#оффтоп
Всем привет!
Работаю на pyspark и появилась проблема, может кто сталкивался. Нужно пройтись по колонке датафрема, применить некоторую функцию для каждой строки и записать вывод этой функции в стороннюю переменную.
Например:
Есть DataFrame с названием df и колонкой Text
Есть словарь dict, который имеет в качестве ключа гласную, а в качестве значения -сколько раз эта гласная встречалась - {'a':0,'e':4 и т.д.}
Есть функция func, которая добавляет в словарь dict частотность гласных в этой строке. Например, dict['a']+=1
Я пробовал выполнить задачу следующим образом:
Сделал так, чтобы func возвращал 0
инициализировал func_udf, которая возвращает IntegerType()
df.withColumn("any",func_udf("Text",dict))
Предполагалось, что функция пройдет по датафрейму, создаст фиктивную колонку с нулями и результаты операции запишет в dict
но в итоге dict не изменилась
Еще был вариант записывать для каждой строки словарь в отдельную колонку т.е.
df.withColumn("column_with_dict",func_udf("Text"))
Но как потом объединить результаты column_with_dict в один словарь, не используя collect непонятно...
Вопросы такие:
1) Можно ли в pyspark записать результаты во внешние переменные, не используя collect?
2) Если нельзя, то как объединить результаты колонки column_with_dict в одно значение, не используя collect
3) Какие есть методы решения данной задачи?
Стековерфло особо не помог(