Влияет ли coalesce (1) кадр данных перед записью на производительность? - PullRequest
0 голосов
/ 19 ноября 2018

Перед тем, как я записываю фрейм данных в hdfs, я coalesce(1) заставляю его писать только один файл, поэтому его легко обрабатывать вручную при копировании, получать из hdfs, ...

Я бы написал такой код для записи вывода.

outputData.coalesce(1).write.parquet(outputPath)

(выходные данные - org.apache.spark.sql.DataFrame)

Я хотел бы спросить, влияют ли они на производительность, а не на объединение

outputData.write.parquet(outputPath)

Ответы [ 2 ]

0 голосов
/ 31 июля 2019

Хотя это и не рекомендуется при работе с большими данными, использование coalesce (1) может быть полезно, когда в _tevent слишком много небольших файлов разделов, а перемещение файлов занимает довольно много времени, чтобы переместить их в надлежащие каталоги.

0 голосов
/ 19 ноября 2018

Я бы не рекомендовал это делать.Вся цель распределенных вычислений состоит в том, чтобы данные и обработка находились на нескольких машинах и извлекали выгоду из преимуществ ЦП / памяти многих машин (рабочих узлов).

В вашем случае вы пытаетесь собрать все в одном месте.Зачем вам нужна распределенная файловая система, если вы хотите записать в один файл только один раздел?Производительность может быть проблемой, но ее можно оценить только после проверки до / после использования функции Coalesce для огромного количества данных, которые распределены по нескольким узлам в кластере.

...