Skip to content

Ropes of Apache NiFi: Tutorial 3

Koji Kawamura edited this page Sep 21, 2016 · 5 revisions

チュートリアル 3: NextBusライブストリームの取込

はじめに

このチュートリアルでは、車両位置情報XMLのシミュレーションデータを生成するデータフローセクションを、NextBus San Francisco Muni AgencyのOceanView路線からのライブストリームデータをNiFiデータフローに取り込む新しいセクションで置き換えます。

このチュートリアルでは、データフローのNextBus SF Muniライブストリーム取込セクションを構築します:

Lab3-NiFi-Learn-Ropes.xmlテンプレートファイルをダウンロードして利用しても良いですし、スクラッチでデータフローを作成する場合はチュートリアルに進みましょう。

事前準備

  • 「チュートリアル 0: NiFiのダウンロード、インストール、起動」を完了していること
  • 「チュートリアル 1: シンプルなNiFiデータフロー構築」を完了していること
  • 「チュートリアル 2: 地理情報でデータフローをエンリッチメント」を完了していること

概要

  • NextBus Live Feed
  • Step 1: NextBus Live Streamをデータフローに追加する
  • Step 2: NiFiデータフローを実行する
  • まとめ
  • さらに理解を深めるために

NextBus Live Feed

NextBus Live Feedは車両の位置情報、車両到着予測時刻、車両の経路や様々な運行会社(San Francisco Muni、Unitrans City of Davisなど)の乗客に関するナマの情報を公に提供しています。 NextBus APIを利用してXMLライブフィードデータにアクセスし、URLを生成する方法を学びます。 このURLの中ではクエリ文字列としてパラメータを指定します。 チュートリアルで利用するパラメータには、車両位置情報、運行会社、経路、時刻があります。

ライブフィードのドキュメントを参照して、次のURLをGetHTTPプロセッサで作成します:

http://webservices.nextbus.com/service/publicXMLFeed?command=vehicleLocations&a=sf-muni&r=M&t=0

パラメータを一つずつみて見ましょう、URLの組み立て方が良くわかるはずです。 パラメータは4つあります:

  • commands: command = vehicleLocations
  • agency: a=sf-muni
  • route: r=M
  • time: t=0

個々のパラメータに関する詳細情報は、BextBus's Live Feed Documentationを参照してください。

Step 1: NextBus Live Streamをデータフローに追加する

GetHTTP

  1. GetFile、UnpackContent、COntrolRateプロセッサを削除します。これらをGetHTTPプロセッサで置き換えます。

  2. GetHTTPプロセッサをドラッグし、以前の3つのプロセッサがあった場所に配置します。 GetHTTPをSplitXMLの上にあるEvaluateXPathプロセッサに接続します。 Create Connectionウィンドウが表示されたら、successがチェックされていることを確認し、Applyをクリックします。

  3. GetHTTPのプロパティ設定タブを表示します。 Nextbus XMLライブフィードURLをプロパティ値にコピー&ペーストしましょう。 表1に示すプロパティを設定します。

表1: 設定するGetHTTPプロパティの値

プロパティ
URL http://webservices.nextbus.com/service/publicXMLFeed?command=vehicleLocations&a=sf-muni&r=M&t=0
Filename vehicleLoc_SF_OceanView_${now():format("HHmmssSSS")}.xml

  1. 各プロパティが設定できました。 Settingsタブを表示し、Run Scheduleを0 secから1 secに変更します、このプロセッサは1秒ごとにタスクを実行します。 過度なシステムリソースの利用を避けることができます。

  2. Settingsタブを開き、プロセッサの名前をGetHTTPからIngestVehicleLoc_SF_OceanViewに変更します。 Applyボタンをクリックします。

地理情報エンリッチメントセクションのPutFileを変更する

  1. PutFileのProperties設定タブを開きます。 Directoryプロパティの値を以前の値から表2の値に変更します。

表2: 更新するPutFileのプロパティ

プロパティ
Directory /tmp/nifi/output/nearby_neighborhoods_liveStream

NextBusライブストリームから受信するリアルタイムデータ用にDirectoryを新しい場所に変更します。

![

  1. Applyをクリックします。

Step 2: NiFiデータフローを実行する

NextBus San Francisco Muniライブストリームの取込をデータフローに追加しました。 データフローを実行し、期待する結果が得られているか、出力ディレクトリを確認しましょう。

  1. actionsツールバーにあるスタートボタンをクリックします。以下のような画面になっているはずです:

  1. 出力ディレクトリにあるデータが正しいか確認しましょう。 以下のディレクトリに移動し、ランダムに一つを開き、データを確認します。
cd /tmp/nifi/output/nearby_neighborhoods_liveStream
ls
vi 58849126478211

以下の画像のような近隣情報が取得できましたか?

まとめ

おめでとうございます! NextBus APIを利用し、XMLライブフィードを車両ロケーションデータに結合する方法を学習しました。 GetHTTPプロセッサの利用方法も学び、ライブストリームをNextBus San Francisco MuniからNiFiへ取り込むことができました!

さらに理解を深めるために

前へ