У меня есть рабочий процесс, в котором два или более входа выполняют заданные операции (объединение, дополнение и т. Д.) Для создания одного выхода. Я ожидаю, что мне придется написать процессор для самостоятельной работы с установленной логикой, но возможно ли работать с несколькими файловыми файлами разного происхождения и работать над ними одновременно?Apache NiFi - использование нескольких FlowFiles в качестве входных данных для процессора
ответ
Процессоры NiFi могут работать на всех файловых файлах в их очереди ввода. Например:
@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) {
List<FlowFile> flowFiles = session.get(context.getProperty(BATCH_SIZE).asInteger());
if (flowFiles == null || flowFiles.size() == 0) {
return;
}
// process flowFiles
...
Вы можете использовать компонент Воронка принести несколько входов в единый входной очереди, которые затем могут одни и те же противодавлением и приоритизации настройки.
Это имеет смысл, но что, если скорость прихода очень различна (т. Е. Вход A принимает 1 минуту, который должен быть сгенерирован, вход B занимает 10 минут). Можно ли положить вход A «на удержание», пока вы не получите вход B? – septagram
Некоторые процессоры используют атрибут для идентификации файловых файлов как фрагментов целого. Если бы вы знали, что ваши данные будут иметь этот шаблон, вы можете пропустить файлы потоков, пока не появится весь набор. – James
Можете ли вы описать, как операция набор образец будет работать в концепции (если не в Nifi)? Большинство операций NiFi с использованием нескольких исходных файловых файлов относятся к объему, сортировке или сортировке по партии. – James
Самая основная операция будет похожа на операцию «совпадение и слияние» (пересечение) - возьмите потоковые файлы A и B и создайте один выходной файл потока с элементами, общими для A и B. Похоже, что слияние/сортировка приближаются к тому, что я хочу, хотя документы для MergeContent, по-видимому, указывают, что он поддерживает только одно входящее соединение. – septagram