Спарк не сохраняет df в impala
Пытаюсь реализовать следующий алгоритм:
- Загрузка df из impala в виде единственной колонки (100 тыс. строк), тип данных - string;
- Обработка каждой строки udf функцией с помощью df.withcolumn, на выходе новая колонка с обработанными данными (итого получается две колонки df, тип string)
- Запись полученного df с двумя колонками в impala через df.write.format("parquet").saveAsTable
Ошибка возникает на шаге 3, не могу записать результат в impala.
Виды ошибок:
- EOF: read didn't return enought bytes;
- unpack requires buffer of 4 bytes;
- task failed while writing rows, json.decoder.JSONDecodeError: Unterminated string started at: line 1 column 116133 (char 116132).
ЗАМЕЧАНИЕ: при попытке реализовать алгоритм на менее объемной выборке (10 тыс. строк) ошибок не возникает, все успешно записывается в impala.
Исходные настройки спарк сессии:
.config('spark.driver.memory', '20g') \
.config('spark.executor.cores', 2) \
.config('spark.executor.memory', '20g') \
.config('spark.driver.memory', '20g') \
.config('spark.dynamicAllocation.enabled', True) \
.config('spark.dynamicAllocation.maxexecutors', 20) \
.config('spark.yarn.executor.memoryOverhead', '4095') \
.config('spark.serializer', 'org.apache.spark.serializer.KryoSerializer')
Что то надо добавить в настройках? В чем может быть проблема?
Спасибо.