2017-02-09 7 views
0

私は、2つ以上の入力が1つの出力を生成するためにそれらに対して実行された操作(集合、補数など)を持つワークフローを持っています。私は自分自身で設定されたロジックを実行するプロセッサを作成する必要があると予想しますが、異なる起源の複数のフローファイルで同時に作業することも可能ですか?Apache NiFi - プロセッサへの入力として複数のFlowFilesを使用する

+0

あなたが(ない場合NiFiに)サンプルセット操作をコンセプトにどのように動作するかを説明することはできますか?複数のソースフローファイルを使用するほとんどのNiFi操作は、マージ、ソート、バッチプットのいずれかです。 – James

+0

最も基本的な操作は 'マッチ&マージ'(交差)操作に似ています - フローファイルAとBを取り、AとBに共通の要素を持つ単一の出力フローファイルを生成します。マージ/ MergeContentのドキュメントは、受信接続が1つしかサポートされていないことを示しているようですが – 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分かかる場合)はどうでしょうか。入力Bを受け取るまで、入力Aを「保留」にすることは可能ですか? – septagram

+0

一部のプロセッサは、フローファイルを全体の断片として識別するために属性を使用します。データにそのパターンがあることが分かっていれば、セット全体が到着するまでフローファイルをスキップすることができます。 – James

関連する問題