Pyspark - эффективно записывает DF в разделы - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь записать искровой фрейм данных в hdfs, используя раздел by.

Но выдает java ошибка пространства кучи.

Ниже приведены конфигурация кластера и моя конфигурация искры.

Конфигурация кластера:

5 nodes
No of cores/node: 32 cores
RAM/Node: 252GB 

Конфигурация Spark:

spark.driver.memory = 50g
spark.executor.cores = 10
spark.executor.memory = 40g

df_final создается путем чтения файла avro и выполнения некоторых преобразований (довольно простых преобразований, таких как разделение столбцов и добавление новых столбцов по умолчанию) значения)

Размер исходного файла составляет около 15M

df_final.count() = 361016

Я сталкиваюсь с java Ошибка пространства кучи при записи окончательного DF в hdfs:

df_final.write.partitionBy("col A", "col B", "col C", "col D").mode("append").format("orc").save("output")

Я даже пытался использовать конфигурацию spark Dynami c:

spark.dynamicAllocation.enabled = 'true'
spark.shuffle.service.enabled = 'true'

Все еще с ошибкой java пространства кучи.

Я даже пытался записать df без разделов, но он все равно не работает с ошибкой java пространства кучи или ошибкой G C.

Это именно та стадия, на которой я имею java ошибка кучи:

WARN TaskSetManager: Stage 30 contains a task of very large size (16648KB). The maximum recommended task size is 100 KB

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

...