web-dev-qa-db-ja.com

PythonでNiFiExecuteScriptプロセッサを使用するにはどうすればよいですか?

ここに示すように、単純なPythonスクリプト(.pyファイルとして保存)を使用したApache NiFiでのExecuteScriptプロセッサの非常に基本的なセットアップがあります。プロセッサのプロパティで、スクリプトを設定します。エンジンをpythonに、スクリプトファイルをこのスクリプトのパスに。

import time

count = 0

while(count < 20):
    print "The counter says: ", count
    count = count + 1
    time.sleep(.1)

そして、これは私が作成したデータフロー図です: nifi dataflow

ログまたはPutFileに出力されたものが何も表示されません。ただし、printステートメントは\ nifi-0.6.1\logs\nifi-bootstrap.logに表示されます。これについての私の知識は現在限られています。 ExecuteScriptプロセッサの使用方法を知っている人からの回答をいただければ幸いです。また、現在の設定よりも優れた例を教えてください。

11
Mushu909

スクリプトを考えると、すべてが期待どおりに機能していると思います。スクリプトはFlowFilesを生成しないため、ExecuteScriptから他のプロセッサに何も移動せず、システム出力に送信されたものはすべてbootstrap.logにキャプチャされるため、printステートメントはそこで終了します。

ExecuteScriptでで実行するスクリプトは、いくつかの標準オブジェクトにアクセスできます。

  • セッション
  • 環境
  • ログ
  • REL_FAILURE
  • REL_SUCCESS

FlowFilesを生成するには、session.create()を呼び出し、結果のFlowFileを取得してREL_SUCCESSに転送する必要があります。

スクリプトプロセッサに関する最良の情報源は、Matt Burgessのブログです。このページには、いくつかの優れた背景があります(Groovyを使用)。

http://funnifi.blogspot.com/2016/02/executescript-processor-hello-world.html

これにはJythonの例があります。

http://funnifi.blogspot.com/2016/03/executescript-json-to-json-revisited_14.html

15
Bryan Bende