0

現在、ElasticSearch Nifi プロセッサを作成中です。ES への個別の挿入/書き込みは最適ではなく、ドキュメントのバッチ処理が推奨されます。Nifi プロセッサ内でドキュメント (FlowFiles) を追跡 (バッチ) するための最適なアプローチと考えられるものは何ですか? 私が最も懸念しているのは、ES が利用できない、ダウンしている、ネットワークが分断されているなどの理由でバッチが成功しない場合です。質問の主なポイントは、Nifi にはキューイング/バックプレッシャーなどのためのコンテンツ ストレージがあることです。宛先がダウンした場合に FlowFiles が失われないようにするために、それを使用するための推奨される方法はありますか? 例として、別のプロセッサを検討する必要がありますか?

Mongo プロセッサ、Merge などを調べて、プロセッサ内でバッチ処理を行うための推奨されるアプローチを試してみましたが、具体的なものを見つけることができないようです。任意の提案をいただければ幸いです。

Nifi に組み込まれているいくつかの基本的な機能を見落としている可能性があります。私はまだプラットフォームにかなり慣れていません。

ありがとう!

4

1 に答える 1

2

素晴らしい質問であり、かなり一般的なパターンです。これが、ProcessSession の概念がある理由です。これにより、0 個以上のものを外部エンドポイントに送信し、受信者が確認したことを確認してからコミットすることができます。この意味で、少なくとも 1 回のセマンティクスを提供します。使用しているプロトコルが 2 フェーズ コミット スタイルのセマンティクスをサポートしている場合、とらえどころのない 1 回限りのセマンティクスにかなり近づけることができます。ここで尋ねていることの詳細の多くは、宛先システムの API と動作によって異なります。

Apache コードベースには、これを行う方法を明らかにする例がいくつかあります。1 つの方法は、宛先システムにプッシュする前に、マージされたイベントのコレクションを生成できる場合です。その API に依存します。私は、PutMongo と PutSolr がこのように動作していると思います (ただし、その専門家は検討する必要があります)。あなたが探しているものにもっと似ているかもしれない例は、フローファイルのバッチを操作して単一のトランザクションで送信するPutSQLにあります(宛先DBで)。

https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ PutSQL.java

ここで監視しますが、users@nifi.apache.org でより大きな NiFi グループの目を引くことができます

ありがとうジョー

于 2015-11-26T19:25:36.860 に答える