2017-02-09 10 views
0

У меня есть рабочий процесс, в котором два или более входа выполняют заданные операции (объединение, дополнение и т. Д.) Для создания одного выхода. Я ожидаю, что мне придется написать процессор для самостоятельной работы с установленной логикой, но возможно ли работать с несколькими файловыми файлами разного происхождения и работать над ними одновременно?Apache NiFi - использование нескольких FlowFiles в качестве входных данных для процессора

+0

Можете ли вы описать, как операция набор образец будет работать в концепции (если не в Nifi)? Большинство операций NiFi с использованием нескольких исходных файловых файлов относятся к объему, сортировке или сортировке по партии. – James

+0

Самая основная операция будет похожа на операцию «совпадение и слияние» (пересечение) - возьмите потоковые файлы A и B и создайте один выходной файл потока с элементами, общими для A и B. Похоже, что слияние/сортировка приближаются к тому, что я хочу, хотя документы для MergeContent, по-видимому, указывают, что он поддерживает только одно входящее соединение. – septagram

ответ

1

Процессоры 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 
    ... 

Вы можете использовать компонент Воронка принести несколько входов в единый входной очереди, которые затем могут одни и те же противодавлением и приоритизации настройки.

NiFi Funnel consolidating input queues

+0

Это имеет смысл, но что, если скорость прихода очень различна (т. Е. Вход A принимает 1 минуту, который должен быть сгенерирован, вход B занимает 10 минут). Можно ли положить вход A «на удержание», пока вы не получите вход B? – septagram

+0

Некоторые процессоры используют атрибут для идентификации файловых файлов как фрагментов целого. Если бы вы знали, что ваши данные будут иметь этот шаблон, вы можете пропустить файлы потоков, пока не появится весь набор. – James