Я думаю, что сложность заключается в том, что вы хотели бы записывать данные в HDFS практически в реальном времени, но также не хотите маленьких файлов (по очевидным причинам), и это может быть трудной задачей.
Вам необходимо найти оптимальный баланс между следующими двумя параметрами:
hdfs.rollSize (Default = 1024)
- размер файла для запуска броска, в байтах (0: никогда не свернуть на основе размера файла)
и
hdfs.batchSize (Default = 100)
- число событий, записанных в файл перед его сбросом в HDFS
Если ваши данные вряд ли достигнут 128 МБ в предпочтительное время, то вам может потребоватьсячтобы уменьшить rollSize
, но только до такой степени, чтобы вы не столкнулись с проблемой небольших файлов .
Поскольку вы не установили размер пакета в приемнике HDFS, выдолжны видеть результаты сброса HDFS после каждых 100 записей, но как только размер очищенных записей совместно достигнет 128 МБ, содержимое будет свернуто в файл 128 МБ. Разве этого тоже не происходит?Не могли бы вы подтвердить?
Надеюсь, это поможет!