Сохраните каждый раздел данных в отдельном файле в HDFS / S3 - PullRequest
0 голосов
/ 06 марта 2020

У меня есть требование сохранять каждый раздел фрейма данных spark в отдельном файле имени Dynami c в HDFS. Любые идеи, как реализовать методы параллельного распараллеливания

1 Ответ

0 голосов
/ 06 марта 2020

Вы можете достичь этого, используя метод DataFrame.repartition(). Проблема с использованием coalesce(1) заключается в том, что ваш параллелизм падает до 1, и в лучшем случае он может быть медленным, а в худшем - ошибочным. Увеличение этого числа также не помогает - если вы делаете coalesce(10), вы получаете больше параллелизма, но в итоге получаете 10 файлов на раздел.

Чтобы получить один файл на раздел без использования coalesce(), используйте repartition() с теми же столбцами, для которых вы хотите, чтобы вывод был разделен.

import spark.implicits._
df.repartition($"col1", $"col2", $"col3", $"col4", $"col5").write.partitionBy("col1", "col2", "col3", "col4", "col5").mode(SaveMode.Append).parquet("$location")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...