「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ファーストステップ @ Windows。
インストール †
ダウンロードする。 †
- 以下からダウンロード(Windowsならzipファイル形式のもの)
- 最新の、nifi-toolkitではない方をダウンロード。
(nifi-toolkitは多分色々なツールが同梱されてる)
インストールする。 †
任意のパスに解凍すればイイらしい。とりあえず、Cドラ直下に解凍。
(JMeterっぽい。ZIP64の可能性があるので解凍ツールに注意)。
起動する。 †
binフォルダ以下の「run-nifi.bat」バッチを管理者実行。
(これもまたJMeterっぽい。設定ファイルなどは取り合えずスルー)。
- 必要に応じて、Java のランタイム (JRE)のインストールや、パス設定を行う。
- 必要に応じて、confフォルダ以下のnifi.propertiesでポート番号を変更する。
(私の環境で、Docker for windowsが8080を使用していてUnauthorizedでハマった。
故に、nifi.propertiesのnifi.web.http.portで、ポート番号を8081に変更。)
もっと簡単な利用 †
画面にアクセスする。 †
以下の辺りを理解しつつ、次へ進む。
Processorを追加する。 †
- Processorの追加により、データフローを作成を開始する。
- Processorについては、コチラを参照。
追加する。 †
- ヘッダのComponentToolBar?のProcessorアイコンを方眼紙風のキャンバスにD&D。
- 追加するProcessorを選択できるダイアログが表示される。
- Processorを選択して[Add]ボタンを押下(必要に応じて[Filter]可能)
- ここでは、ファースト・ステップにお似合いのProcessorを追加する。
- [GetFile? Processor]
- [LogAttributes? Processor]
設定する。 †
- Processorをダブルクリック(若しくは、右クリック -> configure)で設定を行う。
- [GetFile? Processor]の設定を、[Property]タブから行う。
- ポイント
- 太字のプロパティは必須のプロパティ
- 必須プロパティが構成されるまで、Processorは開始できない。
- 設定値
- Input Directory : ./data-in
- [LogAttributes? Processor]の設定を、[Settings]タブから行う。
- ポイント
末端のProcessorになるので、FlowFile?の処理が完了した場合、
データを削除することを考慮する必要がある。
- 設定値
- Automatically Terminate Relationships : checked to [success]
使い方を確認する。 †
Processorを右クリックし[View usage]を選択すると、Processorのヘルプが表示される。
Connectionで接続する。 †
- この状態で以下のようになっている。
問題がある場合は、warningマークが表示される。
- 接続が無いため、warningマークが表示される。
接続する †
Connectionで接続する場合、以下のように操作する。
設定する †
するとダイアログが表示されるので
- Connectionに名前を付ける
[Name] : hogehoge
- Dataの有効期限とQueueの設定
- [FlowFile? Expiration] : 既定値
- [Back Pressure Object Threshold] : 既定値
- [Back Pressure Data Size Threshold] : 既定値
- キューの優先順位の設定
1つ以上のPrioritizerを設定し、
1つ目のPrioritizerで優先順位が同じだった場合、
2つ目のPrioritizerで優先順位が再評価される。
- [Selected Prioritizers] :
FirstInFirstOutPrioritizer?
NewestFlowFileFirstPrioritizer?
- ここまでの設定で、Processorは停止状態になる。
Processorを起動しデータフローを実行する。 †
実行 †
- ぞれぞれ、Processorを選択してOperatorの再生ボタンを押下する。
- すると、以下の状態になり、データフローを実行できる。
- この状態で、data-inフォルダにファイルを放り込むと確実に処理されていることを確認できるのだが、
LogAttribute? 1.6.0 の仕様が No description provided. のため、最後まで流れたのかどうかを全く確認できない。
修正 †
そこで急遽、PutFile?というProcessorを追加・接続して、以下のように設定して動かしてみる。
- PutFile? Processor
- Directory : ./data-out
- [Automatically Terminate Relationships] : checked to [failure] and [success]
確認 †
すると、data-inフォルダに放り込んだファイルがdata-outフォルダに出力されることを確認できる。
分岐、分割・集約辺りの利用 †
分割 †
前述の例にSplitText? Processorを追加して、
以下のようなデータフローを定義して分割を評価できる。
データフロー †
ポイント †
- Processor
- SplitText?
Line Split Count : 2
- PutFile?
- PutFile?(2-1に接続)
Directory : ./data-out1
- PutFile?(2-2に接続)
Directory : ./data-out2
- Connection
- Connection2-1のRelationship : original, failure
- Connection2-2のRelationship : splits
動作確認 †
data-inフォルダに放り込んだファイルがdata-out1, 2フォルダに出力されることを確認できる。
- data-out1 : data-inに放り込んだファイル
- data-out2 : SplitText?で抽出した先頭の2行のテキストを含むファイル
分割・集約 †
SplitContent?、MergeContent? Processorを追加、
以下のようなデータフローを定義して分割・集約を評価できる。
データフロー †
ポイント †
- GetFile?
Directory : ./data-in
- PutFile?
- PutFile?(3-1に接続)
Directory : ./data-temp
- PutFile?(3-2に接続)
Directory : ./data-out
- 分割・集約
- SplitContent?
Byte Sequence : 3B(;区切りを意味する)
- MergeContent? : 既定値
- その他
- LogAttribute? : 既定値
- UpdateAttribute? : filename = ${UUID()}
- Connection
- Connection2-0のRelationship : original
- Connection2-1のRelationship : splits
- Connection2-2のRelationship : splits
- Connection3-1のRelationship : success
- Connection3-2のRelationship : failure, merged, original
動作確認 †
data-inフォルダに放り込んだファイルがdata-temp、data-outフォルダに出力されることを確認できる。
- data-temp
- Byte Sequenceで分割されたファイル
- ファイル名は、UpdateAttribute?により、UUIDに変更される。
- data-out
- 分割後、再び集約されたファイル。
- Byte Sequenceで分割後、マージされるため、Byte Sequenceが削除されている。
変換・処理辺りの利用 †
これからやります。
参考 †