Apache NiFiでRDBにSQLを投げて、結果をテキスト出力してみました。
インストール
本番サイトから、tar.gzかzipファイルをダウンロードして解凍します。
起動
binディレクトリ内のシェルを実行します。
Macな人の例
$ nifi-0.4.1/bin/nifi.sh start
詳しくは他の方が書かれているこのページが参考になります。
データフローオーケストレーションツールApache NiFiとは?
JDBCコネクションを設定
画面左上のController SettingsアイコンからNiFi Flow Settingsダイアログを開いて、DBCPConnecitonPoolを追加します。
DBCPConnecitonPoolダイアログでは、JDBCのいつもの4点セット(コネクションURL、ドライバクラス名、ユーザ、パスワード)とドライバjarファイルのファイルパスを設定してください。ファイルパスの先頭には"file://"が必要です。
設定が終わったら、右の方にあるイナズマアイコンをクリックして、ステータスをEnabledにして下さい。
SELECT文を投げてJSON形式てテキストファイルに出力する。
つづけて、Processorを追加してConnectionでつなぎます。基本的な使い方はこちらを参考にしてください。
Apache NiFiで基本のデータフローを作成するには?
Processorは、「ExecuteSQL」「ConvertAvroToJSON」「PutFile」の3種類を使います。
ExecuteSQLプロセッサの追加
- Database Connection Pooling Service ・・・先ほど作成したJDBCコネクション
- SQL select query ・・・実行したいSQLのSELECT文
ConvertAvroToJSONプロセッサの追加
設定内容はディフォルトのままで良いです。このプロセッサを省略してExecuteSQLのをPutFileに直接つなぐと、Avro形式のバイナリファイルが出力されます。
PutFileプロセッサの追加
- Directoryにファイルの出力先を設定します。
Connection
Processorを追加したら、ExecuteSQLからCovertAvroToJSON、CovertAvroToJSONからPutFileをそれぞれConnectionでつないでください。
For relationshipsは、とりあえず、failuerとsuccessの両方にチェックを入れておきます。
実行
準備が終わったら、Processorを3つともStartの状態にします。正常に動作すれば、PutFileプロセッサに設定したディレクトリにJSONファイルが出力されます。
TODO
- 今回は静的なSQLを実行たが、パラメータ設定したい
- 取得したデータをDB保存したい