Как контролировать размер выходных файлов в Spark Structured Streaming
Мы рассматриваем возможность использования Spark Structured Streaming в проекте. Вход и выход - паркетные файлы в корзине S3. Можно ли как-то контролировать размер выходных файлов? Мы нацелены на выходные файлы размером 10-100 МБ. Как я понимаю, в традиционном пакетном подходе мы могли бы определять размеры выходного файла, регулируя количество разделов в соответствии с размером набора входных данных, возможно ли нечто подобное в структурированной потоковой передаче?
1 ответ
В Spark 2.2 или более поздней версии оптимальным вариантом является установка spark.sql.files.maxRecordsPerFile
spark.conf.set("spark.sql.files.maxRecordsPerFile", n)
где n
настроен на отражение среднего размера строки.
Увидеть
- SPARK-18775 - ограничить максимальное количество записей, записанных в файл.
- https://github.com/apache/spark/commit/354e936187708a404c0349e3d8815a47953123ec