У меня есть приложение Spark Streaming, которое записывает свой вывод в HDFS.
Какие меры предосторожности и стратегии я могу предпринять, чтобы гарантировать, что в этом процессе не будет создано слишком много маленьких файлов, что приведет к нехватке памяти в Namenode HDFS. Предоставляет ли Apache Spark какие-либо готовые решения, позволяющие избежать небольших файлов в HDFS.





Нет. Spark не предоставляет такого решения.
Что ты можешь сделать:
Еще одно решение - получить другое приложение Spark, которое собирает небольшие файлы каждый час / день / неделю и т. д.
Вы можете уменьшить количество файлов деталей. По умолчанию Spark генерирует выходные данные в 200 файлах деталей. Вы можете уменьшить количество файлов деталей.
Я знаю, что это старый вопрос, но он может быть полезен кому-то в будущем.
Другой вариант - использовать coalesce с меньшим количеством разделов. coalesce объединяет разделы вместе и создает разделы большего размера. Это может увеличить время обработки пакета потоковой передачи из-за уменьшения количества разделов во время записи, но поможет уменьшить количество файлов.
Это уменьшит параллелизм, поэтому слишком мало разделов может вызвать проблемы с заданием потоковой передачи. Вам нужно будет протестировать с разными значениями разделов для coalesce, чтобы найти, какое значение лучше всего работает в вашем случае.