2016年5月12日木曜日

NiFiプロセサ紹介 ExecuteProcessとPutFile

ExecuteProcess
OSのシステムコマンドを実行して結果をFlowFileに出力する。
処理が長くなりそうな場合はBatch Durationに時間を設定するとその時間間隔で出力を分けてくれるのでテキストの出力の場合は活用してもいいかもしれない。

PutFile
ローカルのファイルシステムにFlowFileを書き込む。
DirectoryにFlowFileを書き込むディレクトリを設定する。

sample1は上記二つのプロセサを組み合わせて/tmp/nifi_tempディレクトリにデータを出力するテンプレートファイル
ExecuteProcessプロセサが"Hello"を引数としてEchoの実行を行い、PutFileプロセサがFlowFileの出力を行う。

※windowsでExecuteProcessを使用する場合は、commandをcmdとして引数に実際のコマンド( /c echo hello)などと打てば、動く
**************
ExecuteStreamCommand

図にするとこんな感じかな


やり方いろいろあるだろうがExecuteStreamCommandのCommand Pathにはシェルスクリプトやバッチファイルの場所を書いたほうが無難みたい。

***************
 GenerateFlowFile
 負荷テストなどの目的で利用できるランダムデータからなるFlowFileの生成が行える。
 File Size :生成したいファイルサイズ
 Data Format  :テキストかバイナリか選べる

sample2ではGenerateFlowFileプロセサが10KBのランダムな文字列からなるテキストファイルを2秒ごとに生成し、PutFileプロセサがFlowFileの出力を行う。
*************
GetHTTP
指定したURLに対してGETリクエストをかけて、取得したボディを指定した名前のFlowFileにする。

sample3ではHTTPGetプロセサがhttp://localhost:8080/nifiを呼び出し、結果をtest3.txtというファイルに保存する。念のためSchedule Durationを十日後に設定している。PutFileプロセサがFlowFileの出力を行う。
(SDKのバージョンによってエラーが出る場合があるため注意せよ)
*******