0

だから、私は初めてNiFiを使用しています。それを使用して API を呼び出し、データを HDFS (Hortonworks Sandbox 2.4) にパイプしようとしています。現在、GetHTTP と PutHDFS の 2 つのプロセッサしか使用していません。

両方のプロセッサが正常に構成されているようです...それらは実行されますが、Ambari を介して Hadoop にアクセスしたときに作成された出力ファイルが見つかりません...出力ディレクトリを /user/ に設定しました。しかし、何も表示されません。ただし、PutHDFS プロセッサに関する警告メッセージが表示されます。

WARNING PutHDFS[...] penalizing StandardFlowFileRecord[...] and routing to failure because file with same name already exists.

...そのため、ファイルはどこかに書き込まれている必要があります。xml 形式と JSON 形式の両方を指定して API 呼び出しを変えてみましたが、明らかな違いはありません。

NiFi のパイプラインに何らかの処理を追加する必要があるか、サンドボックスの間違った場所を探しているかのどちらかだと思います。誰でもアドバイスできますか?

4

2 に答える 2

3

PutHDFS プロセッサは、着信 FlowFile の「ファイル名」属性を読み取り、それを HDFS のファイル名として使用します。ドキュメント[1]に記載されているとおり。

GetHTTP は、「filename」属性を「..リモート サーバー上のファイルの名前」に設定します[2]。したがって、GetHTTP プロセッサは毎回同じファイルを取得しているので、「ファイル名」属性はすべての FlowFile で同じになると思います。

したがって、このエラーを回避するには、「ファイル名」属性を一意の値に変更する UpdateAttribute プロセッサ [3] が必要です。

[1] https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.hadoop.PutHDFS/index.html

[2] https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.standard.GetHTTP/index.html

[3] https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.attributes.UpdateAttribute/index.html

于 2017-01-09T00:18:47.173 に答える
0

最後にこれが機能しました。4 つのプロセッサで構成されるデータフローを構築しました。

  • getHTTP
  • evaluateXPath
  • 2 x PutHDFS、1 つは「一致」用、もう 1 つは「不一致」用

Auto Terminate Relationships を正しく指定した ( で「成功」と「失敗」の両方を選択した) 場合だったと思います。

構成要素を提供してくれたhttp://nifi.rocks/getting-started-with-apache-nifiの功績と、他の人たちのコメントに感謝します。

于 2017-01-10T22:44:40.510 に答える