Spark Как указать количество результирующих файлов для DataFrame во время / после записи - PullRequest
0 голосов
/ 29 июня 2018

Я видел несколько вопросов о записи одного файла в hdf, кажется, достаточно использовать coalesce(1).

например,

df.coalesce(1).write.mode("overwrite").format(format).save(location)

Но как мне указать "точное" количество файлов, которые будут записаны после операции сохранения?

Итак, мой вопрос:

Если у меня есть датафрейм, состоящий из 100 разделов, при выполнении операции записи он будет записывать 100 файлов?

Если у меня есть датафрейм, состоящий из 100 разделов, когда я выполняю операцию записи после вызова repartition(50)/coalsesce(50), будет ли он записывать 50 файлов?

Есть ли в искре способ, позволяющий указать результирующее количество файлов при записи кадра данных в HDFS?

Спасибо

1 Ответ

0 голосов
/ 29 июня 2018

Количество выходных файлов в общем случае равно количеству задач записи (разделов). При нормальных условиях он не может быть меньше (каждый записывающий пишет свою собственную часть, а несколько задач не могут записать в один и тот же файл), но может быть больше, если формат имеет нестандартное поведение или используется partitionBy.

Обычно

Если у меня есть датафрейм, состоящий из 100 разделов, при выполнении операции записи будет ли записываться 100 файлов?

Да

Если у меня есть фрейм данных, состоящий из 100 разделов, когда я выполняю операцию записи после вызова repartition (50) / coalsesce (50), будет ли он записывать 50 файлов?

И да.

Есть ли в искре способ, позволяющий указать результирующее количество файлов при записи кадра данных в HDFS?

Нет.

...