目次


IBM InfoSphere Streams 3.2ハンズオン・ラボ

入門編【ラボ3】

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: IBM InfoSphere Streams 3.2ハンズオン・ラボ

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:IBM InfoSphere Streams 3.2ハンズオン・ラボ

このシリーズの続きに乞うご期待。

ラボ3 強化された分析とデータ視覚化

このラボでは、オペレーターを追加することで、これまで構築してきたアプリケーションを強化します。これにより、追跡している各車両別に、5 つの観測ごとの平均速度を計算します。その後、Streams Console を使用し、結果を視覚化します。

これまでに使用してきたオペレーターは、各タプルを個別に見ており、履歴を取る必要はありませんでした。しかし、多くの分析処理においては、求められる結果を計算するのに、ある程度の履歴を記憶しなければなりません。ストリーム処理においては、「データセット全体」と呼べるものは存在しませんが、連続するタプルの限られたシーケンスを持つバッファーを定義することはできます。これにより、例えば、1 つ以上の数値属性を持つタプルの制限されたサブセットに対し、平均を計算することができます。このようなバッファーは、ウィンドウと呼ばれます。このラボでは、Aggregate オペレーターを使用して、まさにそうした平均を計算していきます。

3.1 これまでの結果を活用

全員が同じ状態から作業を継続できるように、事前に用意されている次の Studio ワークスペースへ進んでください。

  1. Studio のトップ・メニューから、「ファイル (File)」 > 「ワークスペースの切り替え (Switch Workspace)」 >「/home/streamsadmin/Workspaces/workspace3」の順に選択します。

Studio が終了し、新しいワークスペースで再起動します。ラボ 1 と 2 で構築したのと同じアプリケーションを伴うプロジェクトが既に使用可能な状態となっています。唯一、プロジェクトに Project3、メイン・コンポジットに MainComposite3 の名前が付いているという点で異なります。「プロジェクト・エクスプローラー (Project Explorer) 」で、「Project3」 > 「my.name.space」を展開し、「MainComposite3」をダブルクリックしてグラフィカル・エディターを開きます。

  1. Instance Graph」を表示します。
    1. 「Streams エクスプローラー (Streams Explorer)」の「InfoSphere Streams 3.2.0.0」を展開します。
    2. 「インスタンス (Instances)」を展開します。
    3. 「streams@streamsadmin」を右クリックし、「Instance Graph の表示 (Show Instance Graph)」を選択します。

これまでのラボのジョブで、現在も実行中のものが表示されます。適宜、キャンセルまたは非表示にしてください。

3.2 ウィンドウ・ベースのオペレーター

これから、車両 C101 および C133 ごとに、ウィンドウでの平均速度を計算していきます。ここでは、固定数のタプルの「タンブリング」ウィンドウを使用します。ウィンドウが必要な数のタプルを収集し終えると、オペレーターが結果を計算し、出力タプルをサブミットします。そして、ウィンドウ・コンテンツを廃棄し、空になったウィンドウでタプルを再度収集し始めます。指定の属性に基づいたウィンドウのパーティション化とは、オペレーターが、その属性の各値に対し別々のバッファーを割り当てることを意味しています。実質的に言うと、属性でストリームを分割し、別々のオペレーターを各サブストリームに適用したような形となります。仕様については、表 4 にまとめてあります。

表 1. 仕様: ウィンドウ・ベースの集約
仕様
オペレーター・タイプAggregate
ウィンドウの仕様タンブリング: タプルのcount に基づく。5 タプル
ウィンドウのパーティション化実施する。車両 ID (id) に基づき、パーティション化する
集約するストリームFiltered (Filter_n の出力)
出力スキーマid – rstring
time – rstring
avgSpeed – float64
集約の計算Average(speed)
結果の宛先ファイル: average.speed
  1. 必要な 2 つのオペレーターを追加します。
    1. グラフィカル・エディターのパレット・フィルター・ボックスで、agg と入力し、Aggregate オペレーターをメイン・コンポジットへドラッグします。エディターには、Aggregate_n と名前が付きます。これは、このラボでの主要な分析オペレーターとなります。
    2. パレット・フィルターで、fi と入力し、FileSink をメイン・コンポジットへドラッグします (FileSink_n’ )。このオペレーターで、分析結果をファイルに書き込めるようにします。
  2. 2 つの新しいオペレーターのうち、1 つを既存ストリームに接続し、もう 1 つを追加して、両方をグラフに盛り込みます。
    1. ストリームをFilter_n からAggregate_n へドラッグします。これにより、Aggregate_n は、FileSink_n が既に使用しているのと同一のストリームを活用することになるため、スキーマは定義済みとなります。これは、エディターで、矢印が実線になっていることからも分かります。
    2. ストリームをもうひとつAggregate_n からFileSink_n’ へとドラッグします。このストリームは、スキーマがないため、矢印は破線になります。

レイアウト (Layout) 」 をクリックし、「内容に合わせる (Fit to Content) 」をクリックします。

図 1. グラフィカル・エディター:レイアウト
  1. Aggregate オペレーターの出力に専用のスキーマを与えます。
    1. Aggregate_n からFileSink_n’ までの新しいストリーム上を右クリックし、「編集 (Edit) 」を選択します。
    2. プロパティー (Properties) 」ビューの「スキーマ (Schema) 」タブで、属性の名前とタイプを入れます。
      1. 名前 (Name) 」下の最初のフィールドに、id と入力し、Enter キーを押します。
      2. タイプ (Type) 」下で、rstring と入力し、Tab キーを押して次の名前フィールドに進みます。
      3. 引き続き、キーボード入力し、Tab キーを用いて次のフィールドへ移動する形で、33 ページの表 4 に掲載の属性名とタイプを入れていきます。
図 2. プロパティー・ビュー
  1. Aggregate オペレーターに動作を指示します。
    1. Aggregate_n オペレータを選択します。「プロパティー (Properties) 」ビューで、「ウィンドウ (Window) 」タブを開きます。プレースホルダーのウィンドウ仕様が既に入力されているので、少々編集する必要があるだけです。
      1. 編集… (Edit…) 」をクリックします。
      2. ウィンドウ・モードの追加… (Add Window Mode…) 」ダイアログで、「タンブリング・ウィンドウ (Tumbling Window) 」が選択されたままの状態にします。
      3. 排除ポリシー値 (Eviction policy value) 」の値を 5 に設定します。
      4. パーティション化 (Partitioned) 」にチェックを入れます (その下の「排除ポリシー (Eviction policy) 」には何も入れないでください)。
      5. OK」をクリックします。
        図3. プロパティー・ビュー
    2. 車両 ID (id 属性) でパーティション化するよう、ウィンドウを構成します。
      1. パラメーター (Param) 」タブで、「追加… (Add…) 」をクリックします。
      2. パラメーターの選択 (Select parameters)」ダイアログで、「partitionBy」にチェックを入れ、「OK」をクリックします。
      3. partitionBy」値のフィールドで、id と入力します。
    3. 出力 (Output) 」タブを開き、出力の割り当てを指定します。「名前 (Name) 」欄の Aggregate_n_out0 の前にある三角アイコンを展開します。「名前 (Name)」と「値 (Value)」欄を完全に表示させるには、欄を広げ、水平方向に拡大する必要があるかもしれません。属性idtime は、最新の入力タプルからそのままコピーされることになります。これは既に「値 (Value)」欄に反映されています。出力属性値は、最後の入力属性に基づいて、同じ名前の属性から割り当てられるようにデフォルトで設定されています。

      ウィンドウはid でパーティション化されるため、この属性に対しては、ウィンドウ・パーティションのすべてのタプルに同じ値がつくことになります。time の場合はこれに当てはまりませんが、この例では最新の値を使用するのが理にかなっています。
      1. 入力の表示 (Show Inputs) 」をクリックし、「フィルター済み (Filtered)」の三角アイコンを展開すると、出力の代入式の作成に使用できる属性が表示されます。
      2. avgSpeed の値フィールドをクリックし、Ctrl+Spece キーを押してコンテンツ・アシストを表示します。使用できるエントリーのリストから、Average(T) : T を選択 (ダブルクリックするか、選択して Enter キー) します (この構文は、任意の入力タイプ T に対して、出力値もタイプ T となることを意味しています)。
      3. 再び avgSpeed の値フィールドをクリックします。丸括弧内の T を削除し、カーソルをその位置にとどめます。Ctrl+Space キーを押してコンテンツ・アシストを表示し、今度はspeed - float64 を選択します。Enter キーを押します。
        図4. プロパティー・ビュー
  1. 結果の宛先を指定します。
    1. エディターで、FileSink_n’ を選択します。「プロパティー (Properties) 」ビュー (「パラメーター (Param)」タブ) で、file パラメーターを "average.speeds" (二重引用符付き) に設定します。
    2. 追加… (Add…) 」をクリックします。「パラメーターの選択 (Select parameters) 」ダイアログで、「format」と「quoteString」にチェックを入れ、「OK」をクリックします。format を csv に設定し、quoteStrings を false に設定します。
    3. 保存し、「プロパティー (Properties)」ビューを閉じます。これで、アプリケーションを起動する準備が整いました。
  2. アプリケーションを起動します。「プロジェクト・エクスプローラー (Project Explorer) 」でMainComposite3 (もしくは、ワークステーションを切り替えたかどうかにより、2 または 1) を右クリックし、「起動 (Launch) 」を選択します (Launchがグレーアウトされている場合はBuild(ビルド)実行してください) 。 「構成の編集 (Edit Configuration) 」ダイアログで、「適用 (Apply)」をクリック (必要に応じ) して、「継続 (Continue)」をクリックします。

今回は、そのデータの表示に Studio の「Live Graph」は使わず、Streams Console を使用します。

3.3 Streams Console

Streams Console は、Web ベースの汎用管理ツールです。インスタンスそれぞれにコンソール環境があり、Web サイトに類似しています。コンソールが 1 度に対話できるのは、1 つの特定のインスタンスのみです。ホストやジョブ、ログ、トレース、その他多くの項目を管理し、モニターするのに加え、シンプルなデータ視覚化ツールとしての役割も果たします。Cognos RTM のように実稼働並みのダッシュボードを意図したものではなく、主として、開発中にアプリケーションをモニターし、データを把握するのに役立つツールです。

Console を起動するには、「ビッグデータ用タスク・ランチャー (Task Launcher for Big Data) 」から起動するなど、いくつか方法がありますが、このラボでは、Streams Instance Manager を使用して Console を開きます。また、Streams を実行するサーバーに対して https アクセスがあれば、どのマシンからでも、Firefox やその他のブラウザーから直接開くことができます。通常のユーザー認証とセキュリティーが適用されます。

  1. デスクトップのアイコンが見えるように、Studio ウィンドウを最小化もしくは移動します。「Streams_Instances」ランチャーをクリックします。
    1. IBM InfoSphere Streams Instances Manager」ダイアログで、インスタンスが既に選択されています。「コンソールの起動 (Launch console) 」をクリックします。
    2. 無効な証明書 (Invalid Certificate) 」ダイアログが一度だけ表示される可能性がありますが、その場合、「危険性を理解した上で接続するには」をクリックし、「例外を追加・・・」をクリック、「セキュリティ例外を承認」をクリックしてください (バグではありません)。
    3. ユーザー名 (User name) 」に streamsadmin、「パスワード (Password) 」に passw0rd と入力し、「ログイン (Login) 」をクリックします。
  2. 左側のペインにある「ジョブ (Jobs) 」をクリックします。現在実行中のジョブに関する情報が、メインのペインに表示されます。Studio の「Streams エクスプローラー (Streams Explorer)」で取得できる情報に似ています。
  3. Application Graph」をクリックします。これは Studio の Instance Graph に似ています。
    最初は縮小表示された状態で表示され、ジョブ全体を示すボックスしか見えません。いろいろと試してみてください。
    1. ジョブ上にある ボタンをクリックして展開します。そのジョブの中の PE が表示されます。
    2. オペレーターを表示するには、ボタンをクリックし、ドロップダウンで、「ジョブ内のオペレーター (Operators in Jobs) 」を選択します。
図 5. アプリケーション・グラフ・ビュー

コンソールにはその他にもたくさんの機能がありますが、このラボではデータの視覚化を中心に進めていきます。

3.4 ビューとチャート

Streams ランタイムでは、Aggregate のようなオペレーターのウィンドウと同様、バッファーを維持し、グラフ内のどのストリームからでも最近のデータのスナップショットを保持することができます。Streams Web Service (Streams コンソール全体をサポートするインスタンス・サービス) は、これらのバッファーに基いてチャートや表を提供することができ、データ理解を容易にします。これらのバッファーには、(わずかな CPU サイクルに加えて) メモリー・リソースが必要であるため、さまざまな構成設定で作成し、オンデマンドでアクティブにする必要があります。

そのため、データの視覚化設定は、複数の段階を経るプロセスとなります。

  • ビューの作成
  • ビューの開始
  • チャートの作成 (ビューに基づく)
  • チャートのオープン

ビューとチャートのカスタマイズ・オプションは多数あり、適切な種類のストリームでアプリケーションを用意することで、非常に優れた、役に立つ視覚化を実現できます。ここでは、複雑な手順を最小限に抑え、できる限りシンプルなチャートとテーブルを作成します。

1.4.1 ビューの作成と開始

  1. 左側のペインで、「ビュー (Views) 」をクリックします。
  2. 集約データ (平均速度) 用のビューを作成します。
    1. ビュー (Views) 」ペインの一番上にあるボタンをクリックして「ビューの追加 (Add View) 」ウィザードを開始します。
    2. 最初のパネルで、「ビューの名前 (View Name) 」を「Average Speed View」に設定します。「次へ (Next) 」をクリックします。
    3. 使用可能なジョブのみを選択し、「次へ (Next) 」をクリックします。
    4. ストリームAggregate_n を選択し、「次へ (Next) 」をクリックします。
      図 6. ビューの追加 (Add View)
    5. ヘッダーの一番左側にあるチェック・ボックスにチェックを入れ、すべての属性を選択します。「次へ (Next) 」をクリックします。
      チャートを作成する際に、さらに属性を選択できます。そのため、このビューで、すべての属性を使用可能としておくに越したことはないでしょう。
      図 7. ビューの追加 (Add View)
    6. すべてのタプルの属性データを保持 (Keep attribute data for all tuples) 」を、デフォルトどおり、選択された状態のままにします。その他の設定についても、すべてデフォルトのままでかまわないので、このまま「完了 (Finish) 」をクリックします。
  3. ビュー (Views) 」ペインで、「Average Speed View」ビューを選択し、ペインの一番上にある Start ボタンをクリックします。このビューに対する「開始済み (Started) 」欄のエントリーが、0 から 1 に変わります。

1.4.2 チャートの作成

  1. 左側のペインの「チャート (Charts) 」をクリックします。
  2. Average Speed」ビューに基づきチャートを作成します。
    1. チャート (Charts) 」ペインの一番上にあるボタンをクリックして「チャートの追加 (Add Chart) 」ウィザードを開始します。
    2. 最初のパネルで以下の対応をします。
      1. チャート名 (Chart name) 」を Average Speed Chart とします。
      2. チャート・タイトル (Chart title) 」 Average Speed に設定します。「最上部 (Top) 」 が選択されたままにしておきます。
      3. チャート・タイプ (Chart type) 」を「折れ線 (Line) 」のままにしておきます。
      4. Viewの選択肢で「From an exsting view…) 」を選び「選択 … (Select …) 」をクリック、ビュー「Average Speed View」を選択し、Attributesから「avgSpeed」を選択し、「OK」をクリックします。
      5. Axis」タブをクリックします。
        図 8. チャートの追加 (Add Chart)
    3. Y 軸 (Y Axis) 」のオプションを設定します。
      1. タイトル (Title) 」に Speedと入力します。
      2. 他はデフォルトのままにし、「OK」をクリックします。

1.4.3 表の作成

  1. 「チャート (Charts)」ペインでボタンをクリックします。
    1. チャート名 (Chart name)」を Average Speed Table に設定します。
    2. Viewで「From an exsting view…」をクリックし、「選択 (Select) 」、ダイアログで、「Average Speed View」を選択しAttributesでヘッダーの「Name」を選択し、すべての属性のチェックを入れ、「OK」をクリックします。

1.4.4 チャートの表示

  1. チャート (Charts) 」 ペインで、「Average Speed Chart」と「Average Speed Table」にチェックを入れ、をクリックします。
  2. 表示するデータが確実に存在するようにするため、Data ディレクトリーにall.cars ファイルをもうひとつコピーしてください (File Browser が開いたままの状態になっているかと思います)。

2 つのタブを切り替える形で、チャートと表を交互に切り替えていきます。チャートが折れ線で埋められていくのが見えるかと思います。表については変化が見えにくいかもしれませんが、こちらでも更新されていくのが分かるかと思います。

  1. チャート上で Detachをクリックします。表示が、Console 内のタブから Firefox ブラウザー内の別のタブに移動します。そこから、新しいウィンドウへ移動できます。Firefox タブをクリックし、「新しいウィンドウへ移動 (Move to New Window) 」を選択してください。

チャートと表が並んだ状態で表示されるように、ブラウザーのウィンドウを調整してみてください。data の File Browser ウィンドウに、追加のコピーを貼り付けながら、データが流れ続けるようにしてください。

図 9. チャート・ビュー

ブラウザー・ウィンドウを閉じるか、最小化します。Streams Instances Manager を「終了 (Exit)」するか、最小化します。

ラボ3 は以上です。


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management, Cloud computing, Linux
ArticleID=968872
ArticleTitle=IBM InfoSphere Streams 3.2ハンズオン・ラボ: 入門編【ラボ3】
publish-date=05072014