2016-12-07 1 views
0

У меня есть набор данных, который я пишу на S3 с помощью DataFrameWriter. Я использую Parquet, а также выполняю вызов partitionBy в столбце с 256 различными значениями. Он работает хорошо, но занимает некоторое время, чтобы написать набор данных (и читать другие задания). В отладке я заметил, что запись только выводит 256 файлов, по одному на суффикс, несмотря на то, что мой repartition вызов содержит 256 разделов. Есть ли способ увеличить количество файлов, выводимых для каждого значения partitionBy?Изменение количества выходных файлов с использованием DataFrameWriter в Spark

Мой код выглядит следующим образом:

myDS = myDS.repartition(256, functions.col("suffix")); 
myDS.write().partitionBy("suffix").parquet(String.format(this.outputPath, "parquet", this.date)); 

ответ

1

Вопрос с моим кодом было наличие указания столбца в моем repartition вызова. Просто удаление столбца из repartition звонит исправил проблему.

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

Смежные вопросы