Azure Stream Analytics を使用してイベント ハブからのデータを処理する

Azure Stream Analytics サービスを利用すると、簡単に Azure Event Hubs からストリーミング データを取り込み、処理し、分析できるようになり、優れた分析情報を利用してリアルタイム操作を始動できます。 Azure portal を使用して、受信データを視覚化し、Stream Analytics クエリを記述できます。 クエリを準備できたら、数回のクリック操作だけで運用環境に移行できます。

主な利点

Azure Event Hubs と Azure Stream Analytics の統合の主な利点を次に示します。

  • データのプレビュー – Azure portal 内でイベント ハブからの受信データをプレビューできます。
  • クエリのテスト – 変換クエリを準備して、Azure portal 内で直接テストします。 クエリ言語の構文については、Stream Analytics クエリ言語に関するドキュメントをご覧ください。
  • 運用環境へのクエリのデプロイ – Azure Stream Analytics ジョブを作成して起動することで、クエリを運用環境にデプロイできます。

エンド ツー エンドのフロー

重要

  • Azure サブスクリプションレベルで 所有者 ロールまたは 共同作成 者ロールのメンバーでない場合は、このセクションの手順を正常に完了するには、azure サブスクリプションレベルで Stream Analytics クエリテスター ロールのメンバーである必要があります。 このロールを使用すると、最初に stream analytics ジョブを作成せずに、クエリのテストを実行できます。 ユーザーにロールを割り当てる方法については、「 ユーザーへの AD ロールの割り当て」を参照してください。
  • イベント ハブでプライベート エンドポイント経由のプライベート アクセスのみを許可する場合は、Stream Analytics ジョブを同じネットワークに参加させて、ジョブがイベント ハブ内のイベントにアクセスできるようにする必要があります。
  1. Azure portal にサインインします。

  2. Event Hubs の名前空間に移動して、そのイベント ハブに移動します。受信データが保持されています。

  3. 左側のナビゲーション メニューで、[機能] を展開し、[データの処理] を選択して、[イベントからのリアルタイムの分析情報を有効にする] タイルで [開始] を選択します。

    [イベントからのリアルタイムの分析情報を有効にする] タイルが選択されている [データの処理] ページを示すスクリーンショット。

  4. 次のフィールドに値が既に設定された状態で、クエリ ページが表示されます。 コンシューマー グループと作成するポリシーに関するポップアップ ウィンドウが表示された場合は、[OK] を選択します。 このタブに、最新の受信データのスナップショットがすぐに表示されます。

    1. クエリへの入力としてのイベント ハブ

    2. SELECT ステートメントによるサンプルの SQL クエリ

    3. クエリのテスト結果を参照するための出力のエイリアス。

      Stream Analytics クエリのためのクエリ エディターを示すスクリーンショット。

    • お使いのデータでのシリアル化の種類が、自動検出されます (JSON/CSV)。 JSON/CSV/AVRO に手動で変更することも可能です。

    • 表形式または未加工の形式で受信データをプレビューできます。

    • 表示されたデータが最新でない場合、 [更新] を選択して最新のイベントを表示します。

    • 前の画像では、結果が表形式で表示されています。 生データを表示するには、[生] を選択します

      未加工の形式での、[データの処理] ページの結果ペインにおける [入力のプレビュー] ウィンドウのスクリーンショット。

  5. [クエリのテスト] を選択して、 [テスト結果] タブにクエリのテスト結果のスナップショットを表示します。結果をダウンロードすることもできます。

    テスト結果が示された結果ペインの [入力のプレビュー] ウィンドウのスクリーンショット。

    独自のクエリを作成してデータを変換します。 「Stream Analytics Query Language reference (Stream Analytics クエリ言語リファレンス)」をご覧ください。

  6. クエリをテストした後、それを運用環境に移行するには、[Stream Analytics ジョブの作成] を選択します。

    [Stream Analytics ジョブの作成] リンクが選択されている [クエリ] ページのスクリーンショット。

  7. [新しい Stream Analytics ジョブ] ページで、次の手順のようにします。

    1. ジョブの名前を指定します。

    2. ジョブを作成する Azure サブスクリプションを選択します。

    3. Stream Analytics ジョブ リソースのリソース グループを選択します。

    4. ジョブの場所を選択します。

    5. [Event Hubs ポリシー名] で、新しいポリシーを作成するか、既存のものを選択します。

    6. [イベント ハブ コンシューマー グループ] で、新しいコンシューマー グループを作成するか、既存のコンシューマー グループを選択します。

    7. [作成] を選択して、Stream Analytics ジョブを作成します。

      [新しい Stream Analytics ジョブ] ウィンドウを示すスクリーンショット。

      Note

      [Event Hubs] ページから作成する新しい各 Azure Stream Analytics ジョブに対してコンシューマー グループとポリシーを作成することをお勧めします。 コンシューマー グループでは、同時実行の閲覧者は 5 人しか許可されないので、ジョブごとに専用のコンシューマー グループを指定することで、その上限を超過した場合に発生するエラーを回避します。 専用ポリシーを利用すると、他のリソースに影響を及ぼさずに、キーを交代で利用したりアクセス許可を取り消したりできます。

  8. これで、クエリがテストしたものと同一で、入力がお使いのイベント ハブになっているStream Analytics ジョブが作成されました。

    出力を追加するためのリンクがある、[Stream Analytics ジョブ] ページを示すスクリーンショット。

  9. 任意の出力を追加します。

  10. 階層リンクでジョブの名前をクリックして、[Stream Analytics ジョブ] ページに戻ります。

  11. [クエリ] ウィンドウの上にある [クエリの編集] を選択します。

  12. 出力名で [OutputAlias] を更新し、クエリの上にある [クエリの保存] リンクを選択します。 右上隅にある [X] を選択して、[クエリ] ページを閉じます。

  13. [Stream Analytics ジョブ] ページで、ツール バーにある [開始] を選択してジョブを開始します。

    Stream Analytics ジョブの [ジョブの開始] ウィンドウのスクリーンショット。

アクセス

問題: ユーザーはサブスクリプションに対する適切なアクセス許可を持っていないため、プレビュー データにアクセスできません。

オプション 1: 受信データをプレビューするユーザーは、サブスクリプションの共同作成者として追加する必要があります。

オプション 2: ユーザーは、サブスクリプションの Stream Analytics クエリ テスター ロールとして追加する必要があります。 サブスクリプションのアクセス制御に移動します。 ユーザーの新しいロールの割り当てを "Stream Analytics クエリ テスター" ロールとして追加します。

オプション 3: ユーザーは Azure Stream Analytics ジョブを作成できます。 入力をこのイベント ハブとして設定し、[クエリ] に移動して、このイベント ハブからの受信データをプレビューします。

オプション 4: 管理者は、サブスクリプションにカスタム役割を作成できます。 カスタム役割に次のアクセス許可を追加し、新しいカスタム役割にユーザーを追加します。

[Microsoft.StreamAnalytics アクセス許可] ページを示すスクリーンショット。

[ストリーミング ユニット]

Azure Stream Analytics ジョブは既定で、3 つのストリーミング ユニット (SU) になっています。 この設定を調整するには、Azure portal の [Stream Analytics ジョブ] 上で、左側のメニューにある [スケール] を選択します。 ストリーミング ユニットの詳細を確認するには、「ストリーミング ユニットの理解と調整」をご覧ください。

Stream Analytics ジョブの [スケール] ページを示すスクリーンショット。

Event Hubs の geo レプリケーション機能を使用する場合の考慮事項

最近、Azure Event Hubs では geo レプリケーション機能のプレビューが開始されました。 この機能は、Azure Event Hubs の geo ディザスター リカバリー機能とは異なります。

フェールオーバーの種類が [強制] で、レプリケーションの整合性が [非同期] の場合、Stream Analytics ジョブでは、Azure Event Hubs 出力への出力が厳密に 1 回であることは保証されません。

イベント ハブを出力とするプロデューサーとしての Azure Stream Analytics では、フェールオーバー期間中および Event Hubs によるスロットリング中に、プライマリとセカンダリ間のレプリケーションのラグが構成されている最大ラグに達すると、ジョブでウォーターマークの遅延を検出する可能性があります。

Event Hubs を入力とするコンシューマーとしての Azure Stream Analytics では、フェールオーバー期間中にウォーターマークの遅延を検出する可能性があり、フェールオーバーの完了後に、データをスキップするか、重複データを検出する場合があります。

これらの注意事項により、Event Hubs のフェールオーバーが完了した直後の適切な開始時刻で、Stream Analytics ジョブを再起動することをお勧めします。 また、Event Hubs の geo レプリケーション機能はパブリック プレビュー段階であるため、現時点で運用環境の Stream Analytics ジョブにこのパターンを使用することはお勧めしません。 現在の Stream Analytics の動作は、Event Hubs の geo レプリケーション機能が一般提供される前に改善され、Stream Analytics の運用ジョブで使用できるようになります。

Stream Analytics クエリの詳細を確認するには、Stream Analytics クエリ言語に関するページをご覧ください