Я пытаюсь использовать NiFi для обработки больших CSV-файлов (по потенциально миллиардам записей каждый) с использованием HDF 1.2. Я реализовал поток, и все отлично работает для небольших файлов.Apache NiFi - OutOfMemory Ошибка: превышен верхний предел GC на процессоре SplitText
Проблема заключается в том, что если я пытаюсь нажать размер файла 100MB (1M записей) Я получаю java.lang.OutOfMemoryError: GC overhead limit exceeded
от процессора SplitText ответственного разбиения файла на отдельные записи. Я искал это, и это в основном означает, что сборщик мусора выполняется слишком долго, не получая много кучи. Я ожидаю, что это означает, что слишком много файлов потока генерируются слишком быстро.
Как я могу это решить? Я попытался изменить конфигурацию nifi в отношении максимального пространства кучи и других свойств, связанных с памятью, но ничего не работает.
Прямо сейчас я добавил промежуточный SplitText с количеством строк 1К и что позволяет мне избежать ошибки, но я не вижу в этом виде твердого раствора для того, когда размер входящего файла будет потенциально гораздо более чем это, я боюсь, что получаю такое же поведение от процессора.
Любые предложения приветствуются! Спасибо
Если у вас нет способа «одного выстрела», я обязательно попробую несколько уровней. Что касается PutKafka, я бы прекратил создание Kafka вместе с NiFi в кластере. Игнорируя тот факт, что это потребует некоторых ресурсов кластера, есть ли преимущества с точки зрения производительности или других точек зрения? Спасибо, как всегда, за полезную информацию о поведении NiFi. – riccamini
Ну, я не обязательно говорил, что вам нужно Kafka как часть этого, я больше спрашивал о том, что вы хотите сделать в своем потоке после того, как вы разделились на 1 строку на файл потока, чтобы убедиться, действительно ли вам нужно это делать , Много раз люди просто хотят доставлять эти строки во внешнюю систему, и в этих случаях может быть возможно иметь процессор, который перетекает в большой файл и отправляет каждую строку где-то, не создавая миллионы файлов потока, кафка и splunk были это всего лишь два примера. –
Мне действительно нужно разделить файлы по строкам, а затем применить другое преобразование/нормализацию в каждом из своих полей. Затем я возвращаюсь к каждой линии и экспортирую все на улей. – riccamini