#java #apache-nifi
#java #apache-nifi
Вопрос:
Мы получаем сообщения в формате Json из вышестоящей системы через раздел Kafka. Требуется сохранять эти сообщения в HDFS с определенным интервалом. Поскольку мы сохраняем в HDFS, мы хотим объединить определенное количество этих записей в один файл. Согласно документации NiFi, для этого мы используем процессор «MergeRecords».
О поступающих записях:##
- Это многострочные JSon-сообщения с вложенной структурой.
- Они основаны на одной схеме (они выбраны из одной темы Kafka)
- Это проверенные сообщения, и даже процессор NiFi способен их анализировать. так что, по-видимому, никаких проблем с сообщениями JSon с точки зрения схемы нет
Текущая конфигурация
Ниже приведен снимок конфигурации процессора. Версия NiFi: 1.8
Ожидаемое поведение
Для приведенной выше конфигурации ожидается, что записи слияния должны иметь вес для одного из пороговых значений, т.е. для максимального размера записей (100000) или для максимального размера компонента (100 КБ).
Наблюдаемое поведение
Но было замечено, что bean довольно сильно упаковывается до того, как будет достигнут любой из пороговых значений. Это запускает формирование компонента только для 2 записей размером 5 КБ.
Если бы вы могли помочь с анализом и / или указателями на то, почему процессор MergeRecord работает не в соответствии с конфигурацией?
Комментарии:
1. Вы получаете более 2 записей в ячейке в течение 1 минуты?
2. Да, @Bryan Bende, мы пытались отправить как минимум 20 сообщений за 1 минуту.
Ответ №1:
Возможно, он не ожидает максимального количества записей (100000) или максимального размера компонента (100 КБ), потому что он достигает максимального возраста ячейки, который вы указали первым (1 минута).
Максимальный возраст ячейки определен в документах как:
Максимальный возраст ячейки, который приведет к заполнению ячейки.