Kuduにデータを書き込むチュートリアルを試してみましょう。NiFiはNSA(国家安全保障局)が開発し、オープンソースとしてApacheに寄贈されたソフトウェアです。複雑なデータフローをビジュアルユーザーインターフェースで作成でき、データを生成元からターゲットに安全に着地させることができます。https://www.slideshare.net/KojiKawamura/nifi)Kudu-NiFiのクイックスタートはこちらから参照できます。このチュートリアルでもDockerを使ってNiFiを起動します。よってインストール等は不要です。便利な時代になりましたね。(サービスが起動するまでには若干時間がかかります。ブラウザからアクセスして下記の画面が表示されないようであれば、少し待ってからリトライしてください)KuduにNiFi用のテーブルを作成するNiFiからデータを投入するために、予めKuduにテーブルを作成しておきます。チュートリアルに従いjshellを使って対話的に行います。introjshell>シェルが起動したら下記のコードを貼り付けます。入力してコンテナから抜けます。いう名前のテーブルを作成しています。テーブルのスキーマは次の通り。STRINGこれでテーブルが作成できました。テーブルが作成できたことを確認してください。http://localhost:8050)これで準備完了です。テンプレートを読み込むNiFiは、グラフィカルインターフェースを使ってブラウザから直感的にデータフローを定義することができますが、そのフローの定義の実態はXMLファイルです。今回のチュートリアルにはデータフローのテンプレートが用意されているので、GUIからゴリゴリ作成する必要はありません。cloneした際にローカルに保存されています。いう名前のファイル)このファイルをNiFiのUIからインポートします。NiFiの画面から、下記のスクリーンショットの丸印で囲まれたアイコンをクリックします。続いてテンプレートファイルを選択します。ファイルが置かれている場所を選択してください。選択したらUPLOADボタンを押します。完了すると次の画面が表示れます。ここから先はチュートリアルだけではわかりにくい点でした。NiFi側で以下の操作を行います。先ほどインポートしたテンプレートが下記のスクリーンショットのように一覧表示されるはずです。テンプレートを利用するテンプレートはまだ使えるようになっていません。テンプレートを利用できるようにするには、上部のメニューのテンプレートアイコンをキャンバス(方眼紙の部分)にドラッグします。Templates画面をクローズしてから、下記のTemplateアイコンをマウスでキャンパスにドラッグしてください。Templateダイアログに表示されます。Addボタンを押してキャンバスに追加します。NiFi-Kuduのデータフローテンプレートをキャンバスに追加すると、下記のようなデータフローが表示されます。一画面に表示しきれない場合は左側のNavigateパネルの虫眼鏡の+または-アイコンをクリックして、拡大、縮小することができます。このフローは何を行っているのでしょうか?NiFiでは、データをどう加工するかの要素を「プロセッサー」と呼びます。このフローには5つのプロセッサーが定義されています。(PutKudu)これらを特に変更する必要はありません。それぞれのプロセッサーの詳細に興味がない方は以下の説明はスキップしてください。ランダムに生成されたユーザーデータを取り込んでいます。四角い箱をダブルクリックするとプロセッサーの設定を行うことができます。取得間隔は10秒です。設定されているように、ここでは100件のレコードを取得しています。APIで取得しているJSONは次のようになります。プロセッサーからの入力を配列に変換しています。EvaluateJsonPathこのプロセッサーはフローファイルの内容に対するJsonPathの評価を行います。(詳細)Destinationが「flowfile-attribute」に指定されている場合は、JsonPathにマッチする属性がそれぞれのプロパティに設定されます。4つの項目が設定されています。AttributesToJsonこのプロセッサーは属性(アトリビュート)をJSONに変換します。EvaluateJsonPathの4つの属性をJSONに変換しています。PutKuduこのプロセッサでKuduに書き込みます。Masterのアドレス、テーブル名はスクリーンショットにある通りです。Readerプロパティで指定します。設定されていましたが、CSVやAvroなども指定できます。JsonTreeReaderの右側の矢印をクリックし、設定を表示します。歯車のアイコンをクリックするとJsonTreeReaderの設定を確認できます。これはJsonのツリーを読み込みます。Schema(デフォルト)に設定されていました。これはドキュメントに詳細が記載されていますが、スキーマを手動で生成するのではなく、データの値に基づいてスキーマを推論する方法です。便利なためによく使われるようです。NiFiのフローを開始するここではNiFiのフローを開始します。コントロールサービスの有効化コントロールサービスを有効化しないとフローを開始できません。ダブルクリックします。Readerの右側の矢印をクリックします。(スクリーンショットは上記参照)続いて右側の稲妻のアイコンをクリックし、その後右下の「ENABLE」をクリックします。CLOSEをクリックして前の画面に戻ると、StateがEnabledに変わっています。右上のXを押してキャンバスに戻ると、PutKuduの状態が黄色の三角から赤い四角のアイコンに変わっていることがわかります。フローの開始フローを開始する準備ができました。パネルの三角ボタンを押してフローを開始します。フローが開始すると、アイコンが右側の三角に変わります。上記のスクリーンショットにあるように、10秒ごとに取り込んだデータをKuduに書き込んでいるように見えます。チュートリアルではここでNiFiを止めていますが、このままデータを書き続けながらデータを確認してみましょう。使ってデータを確認します。Sparkがインストールされていない場合はチュートリアルに従ってインストールします。入力し、次のコードを貼り付けます。random_user").show()最後の行に、次のように件数が表示されるはずです。9500|+--------+もう一度上記の行(spark.sql("SELECT...")を入力するか、あるいは矢印の上を押して上記のクエリをもう一度実行すると、徐々に件数が増えていることが確認できるでしょう。チュートリアルに従って操作を行う予定です。Sparkはテクノロジープレビュー扱いです。現時点ではサポート対象外なのでご注意を。Spark2.x版です。以前からありましたが、ついに対応されそうです。昨日に続いて今日もwordcountです。(Scala、Python、Java)でwordcountを実行してみましょ...KuduKuduのパフォーマンスが60倍早くなった!?週末にKuduの生みの親、Toddが以下のようなツイートをしていました。コメントをキャンセルメールアドレスが公開されることはありません。*サイトProfilekernel023HadoopやSparkなどのビッグデータ系技術情報を公開しています。(outdated)ホーム検索トップサイドバーProfilekernel023HadoopやSparkなどのビッグデータ系技術情報を公開しています。