2016-12-05 19 views
0

条件に基づいてフローデータを分割します。 私たちは "ExecuteStreamCommand"プロセッサを使用すると考えました(インターンはJavaクラスを使用します)が、単一のフローデータファイルのみを与えています。 2つのフローデータファイルを用意したいと思います.1つは適合したもので、もう1つは比類のない基準です。Apache NiFiは条件に基づいてデータを分割します

私は "RouteText"プロセッサを見ましたが、その一部としてJavaクラスを使用する機能はありません。

誰にでも提案があれば教えてください。

+3

条件とは何か、なぜJavaクラスを使用する必要がありますか? – JDP10101

+0

こんにちは、指定された位置の特定の文字列が "ABC"の場合、そのメッセージを別のトピックであるカフカのトピックに移動する必要があります。 Soiは、文字列 "ABC"をDBから動的に取得し、将来、より多くの異なるコマンドタイプを追加することを確認したいと考えています。 –

+0

他の言葉で言えば、着信FlowFileがあります。結果が特定の位置にあるFlowFileの内容に含まれているかどうかを確認するために、DBクエリの結果を使用したいとします。次に、それがルートかどうかに基づいてルーティングします。これは正しいです?また "DB"は何を使用していますか?最後に、入ってくるFlowFileの内容は特定の形式ですか? – JDP10101

答えて

0

私は、あなたがルートに取得した値の不在/存在に基づいて、着信flowfilesをRouteOnContentを使用し、その後、それらの定義値を読み、DistributedMapCacheClientServiceによってアクセスマップにそれらを格納するためにGetMongoを使用できると思います。それでも解決しない場合は

、あなたは可能性が代わりにGetMongoから、その後PutFileとにクエリ結果は、ファイルシステムとルート上の辞書ファイルからの読み込みScanContentを、使用した経路は、それらのキーワードの不在/存在下に基づくflowfilesコンテンツ。

最後に、他のすべてが失敗した場合は、ExecuteScriptを使用してこれらのステップを1つのプロセッサに結合し、matched/unmatchedリレーションシップにルーティングできます。 Groovyコードを簡単に処理するので、必要に応じて既存のJavaクラスを直接呼び出すことができます。

+0

最初の1つが機能していません。 2番目の選択肢では、 "ディレクトリファイル"内のどのようにmongoデータにアクセスできますか?私は FYI、ScanContentへの入力はMongoとListeningPortです。 –

+0

Mongoのクエリの結果をディスクに保存するフラットファイルに書き込む必要があります。また、クエリの出力形式によっては、 'ReplaceText'を使って正しくフォーマットすることができます。次に、 'RouteOnContent'の辞書ファイルパスとして' PutFile'の出力パスを使用して、それらの定義を読み込みます。 – Andy

関連する問題