次の方法で共有


イベント ハブから Azure Synapse Data Explorer にデータを取り込む

Azure Synapse Data Explorer は、ログと利用統計情報のための高速で拡張性に優れたデータ探索サービスです。 Azure Synapse Data Explorer では、BLOB コンテナーに書き込まれた Event Hubs、IoT Hub、BLOB からのインジェスト (データの読み込み) を提供します。

Azure Synapse Data Explorer は、ビッグ データ ストリーミング プラットフォームおよびイベント取り込みサービスである Event Hubs からのインジェスト (データの読み込み) を提供します。 Event Hubs は、1 秒あたり数百万件のイベントをほぼリアルタイムで処理できます。 この記事では、イベント ハブを作成し、Azure Synapse Data Explorer からこれに接続し、システム経由でデータ フローを確認します。

前提条件

  • Azure サブスクリプション。 無料の Azure アカウントを作成します。

  • Synapse Studio または Azure portal を使用して Data Explorer プールを作成します

  • Data Explorer データベースを作成します。

    1. Synapse Studio の左側のペインで、 [データ] を選択します。

    2. + (新しいリソースの追加) >[Data Explorer プール] を選択し、次の情報を使用します。

      設定 提案された値 説明
      プール名 contosodataexplorer 使用する Data Explorer プールの名前
      Name TestDatabase データベース名はクラスター内で一意である必要があります。
      既定のリテンション期間 365 クエリにデータを使用できることが保証される期間 (日数) です。 期間は、データが取り込まれた時点から測定されます。
      既定のキャッシュ期間 31 頻繁にクエリされるデータが、長期ストレージではなく SSD ストレージまたは RAM で利用できるように保持される期間 (日数) です。
    3. [作成] を選択してデータベースを作成します。 通常、作成にかかる時間は 1 分未満です。

  • Event Hubs からデータが送信されるターゲット テーブルを作成します

    1. Synapse Studio の左側のウィンドウで、 [開発] を選択します。

    2. [KQL スクリプト] で、[+] (新しいリソースの追加) >[KQL スクリプト] を選びます。 右側のウィンドウで、スクリプト名を指定できます。

    3. [接続先] メニューで、[contosodataexplorer] を選択します。

    4. [データベースの使用] メニューで、 [TestDatabase] を選択します。

    5. 次のコマンドを貼り付け、 [実行] を選択してテーブルを作成します。

      .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
      

      ヒント

      テーブルが正常に作成されたことを確認します。 左側のペインで、 [データ] を選択し、contosodataexplorer の [その他] メニューを選択し、 [最新の情報に更新] を選択します。 [contosodataexplorer][テーブル] を展開し、TestTable テーブルが一覧に表示されていることを確認します。

    6. 次のコマンドをウィンドウにコピーし、 [実行] を選択して、テーブル (TestTable) の列名とデータ型に受信 JSON データをマップします。

      .create table TestTable ingestion json mapping 'TestMapping' '[{"column":"TimeStamp", "Properties": {"Path": "$.timeStamp"}},{"column":"Name", "Properties": {"Path":"$.name"}} ,{"column":"Metric", "Properties": {"Path":"$.metric"}}, {"column":"Source", "Properties": {"Path":"$.source"}}]'
      
  • データ接続 (省略可能) には、ユーザー割り当てマネージド ID またはシステム割り当てマネージド ID を使用することをお勧めします。

  • データを生成してイベント ハブに送信するサンプル アプリ。 ご使用のシステムにサンプル アプリをダウンロードしてください。

  • サンプル アプリを実行するための Visual Studio 2019

Azure portal にサインインする

Azure portal にサインインします。

イベント ハブを作成する

Azure portal で Azure Resource Manager テンプレートを使用して、イベント ハブを作成します。

  1. イベント ハブを作成するには、次のボタンを使用してデプロイを開始します。 この記事の残りの手順を実行できるよう、右クリックして [新しいウィンドウで開く] を選択してください。

    Button to deploy the Resource Manager template to Azure.

    [Azure へのデプロイ] ボタンをクリックすると、Azure portal に移動します。

  2. イベント ハブを作成するサブスクリプションを選択し、test-hub-rg というリソース グループを作成します。

    Create a resource group

  3. フォームに次の情報を入力します。

    次の表に記載されていない設定については、既定値のままにしてください。

    設定 推奨値 フィールドの説明
    サブスクリプション 該当するサブスクリプション イベント ハブに使用する Azure サブスクリプションを選択します。
    Resource group test-hub-rg 新しいリソース グループを作成します。
    場所 米国西部 この記事では [米国西部] を選択します。 運用システムでは、ニーズに最も適したリージョンを選択します。 最適なパフォーマンスを得るには、Azure Synapse Data Explorer クラスターと同じ場所にイベント ハブの名前空間を作成します (高スループットのイベント ハブの名前空間に最も重要です)。
    名前空間名 一意の名前空間名 名前空間を識別する一意の名前を選択します。 たとえば、mytestnamespace と指定します。 指定した名前にドメイン名 servicebus.windows.net が付加されます。 この名前には、文字、数字、ハイフンのみを含めることができます。 名前の先頭は英字、末尾は英字または数字にする必要があります。 値の長さは 6 から 50 文字にする必要があります。
    イベント ハブ名 test-hub イベント ハブは、固有のスコープ コンテナーを提供する名前空間の下にあります。 イベント ハブ名は、名前空間内で一意にする必要があります。
    コンシューマー グループ名 test-group コンシューマー グループを使用すると、複数の使用アプリケーションがそれぞれイベント ストリーム ビューを持つことができるようになります。
  4. [Review + create](レビュー + 作成) を選択します。

  5. 作成されたリソースの概要を確認します。 [作成] を選択して、サブスクリプション内にリソースを作成することを確認します。

    Screen shot of Azure portal for reviewing and creating Event Hub namespace, Event Hub, and consumer group.

  6. プロビジョニング プロセスを監視するには、ツール バーの [通知] を選択します。 デプロイが完了するまでには数分かかることがありますが、すぐに次の手順に進むこともできます。

    Notifications icon

認証に関する考慮事項

イベント ハブでの認証に使用する ID の種類によっては、追加の構成が必要な場合があります。

  • ユーザー割り当てマネージド ID を使用してイベント ハブで認証を行う場合は、お使いのイベント ハブ >[ネットワーク] に移動し、[許可するアクセス元][すべてのネットワーク] を選んで、変更を保存します。

    Screenshot of the Event Hub networking page, showing the selection of allowing access to all networks.

  • システム割り当てマネージド ID を使用してイベント ハブで認証を行う場合は、お使いのイベント ハブ >[ネットワーク] に移動し、すべてのネットワークからのアクセスを許可するか、[許可するアクセス元][選択されたネットワーク] を選び、[信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可しますか?] を選んで、変更を保存します。

    Screenshot of the Event Hub networking page, showing the selection of allowing access to trusted services.

イベント ハブへの接続

ここで、Data Explorer プールからイベント ハブに接続します。 この接続が確立されると、イベント ハブに送られてくるデータが、この記事の前の方で作成したテスト テーブルにストリームとして送られます。

  1. ツールバーの [通知] を選択して、イベント ハブのデプロイが成功したことを確認します。

  2. 作成した Data Explorer プールで、 [データベース]>[TestDatabase] を選択します。

    Select test database.

  3. [データ接続][データ接続の追加] の順に選択します。

    Select data ingestion and Add data connection.

データ接続を作成する (プレビュー)

フォームに次の情報を入力し、 [作成] を選択します。

Data connection pane Event Hub - Azure Synapse Data Explorer.

設定 推奨値 フィールドの説明
データ接続名 test-hub-connection Azure Synapse Data Explorer で作成する接続の名前。
サブスクリプション イベントハブ リソースが配置されているサブスクリプション ID。 このフィールドは自動入力されます。
Event Hub 名前空間 一意の名前空間名 以前に選択した、名前空間を識別する名前。
イベント ハブ test-hub 作成したイベント ハブ。
コンシューマー グループ test-group 作成したイベント ハブに定義されているコンシューマー グループ。
イベント システム プロパティ 関連するプロパティを選択する イベント ハブのシステム プロパティ。 1 つのイベント メッセージに複数のレコードがある場合、システム プロパティは最初のレコードに追加されます。 システム プロパティを追加する場合は、テーブル スキーマとマッピング作成または更新して、選択したプロパティを含めます。
圧縮 なし イベント ハブ メッセージ ペイロードの圧縮の種類。 サポートされている圧縮の種類は、"なし、Gzip" です。
マネージド ID システム割り当て イベント ハブに対する読み取りアクセスのために Data Explorer クラスターによって使用されるマネージド ID。

:
データ接続が作成されると、次のようになります。
- "システム割り当て" ID が存在しない場合は自動的に作成されます
- マネージド ID は、"Azure Event Hubs データ受信者" ロールが自動的に割り当てられ、Data Explorer クラスターに追加されます。 ロールが割り当てられ、ID がクラスターに追加されたことを確認することをお勧めします。

ターゲット テーブル

挿入したデータをルーティングするには、"静的" と "動的" という 2 つのオプションがあります。 この記事では、静的ルーティングを使用し、テーブル名、データ形式、およびマッピングを既定値として指定します。 イベントハブ メッセージにデータ ルーティング情報が含まれている場合、このルーティング情報によって既定の設定が上書きされます。

  1. 次のルーティング設定を入力します。

    Default routing settings for ingesting data to Event Hub - Azure Synapse Data Explorer.

    設定 推奨値 フィールドの説明
    テーブル名 TestTable TestDatabase に作成したテーブル。
    データ形式 JSON サポートされている形式は、Avro、CSV、JSON、MULTILINE JSON、ORC、PARQUET、PSV、SCSV、SOHSV、TSV、TXT、TSVE、APACHEAVRO、および W3CLOG です。
    マッピング TestMapping TestDatabase に作成したマッピング。これにより、受信データを TestTable の列名とデータ型にマッピングします。 JSON、MULTILINE JSON、AVRO では必須。その他の形式では省略可能。

    注意

    • 既定のルーティング設定をすべて指定する必要はありません。 部分的な設定も受け入れられます。
    • データ接続の作成後にエンキューされたイベントのみが取り込まれたます。
  2. [作成] を選択します

イベント システム プロパティのマッピング

注意

  • システム プロパティは、json および表形式 (csvtsv など) でサポートされており、圧縮データではサポートされていません。 サポートされていない形式を使用してもデータは取り込まれますが、プロパティは無視されます。
  • 表形式データの場合、システム プロパティは単一レコードのイベント メッセージでのみサポートされます。
  • JSON データの場合、システム プロパティは複数レコードのイベント メッセージでもサポートされます。 このような場合、システム プロパティは、イベント メッセージの最初のレコードにのみ追加されます。
  • csv マッピングの場合、csvの表に示された順序でプロパティがレコードの先頭に追加されます。
  • json マッピングの場合、システム プロパティの表のプロパティ名に従ってプロパティが追加されます。

テーブルの [データ ソース] セクションで [イベント システムのプロパティ] を選択した場合は、テーブル スキーマとマッピングにシステム プロパティを含める必要があります。

接続文字列のコピー

前提条件の一覧にあるサンプル アプリを実行する場合は、イベント ハブの名前空間用の接続文字列が必要です。

  1. 作成したイベント ハブ名前空間で、 [共有アクセス ポリシー][RootManageSharedAccessKey] の順に選択します。

    Shared access policies.

  2. [接続文字列 - 主キー] をコピーします これを、次のセクションで貼り付けます。

    Connection string.

サンプル データを作成する

ダウンロードしたサンプル アプリを使用してデータを生成します。

  1. Visual Studio でサンプル アプリ ソリューションを開きます。

  2. program.cs ファイルで、eventHubName 定数をイベント ハブの名前に更新し、connectionString 定数をイベント ハブ名前空間からコピーした接続文字列に更新します。

    const string eventHubName = "test-hub";
    // Copy the connection string ("Connection string-primary key") from your Event Hub namespace.
    const string connectionString = @"<YourConnectionString>";
    
  3. アプリケーションをビルドし、実行します。 アプリからイベント ハブにメッセージが送信され、10 秒ごとに状態が出力されます。

  4. アプリからいくつかメッセージが送信されたら、次の手順に進み、イベント ハブとテスト テーブルへのデータの流れを確認します。

データ フローの確認

データを生成するアプリを使用して、そのデータがイベント ハブからクラスター内のテーブルに送信されるのを確認できるようになりました。

  1. アプリの実行中に Azure portal でイベント ハブを確認すると、アクティビティの急上昇が見られます。

    Event Hub graph.

  2. これまでにデータベースに届いたメッセージ数を確認するには、テスト データベースで次のクエリを実行します。

    TestTable
    | count
    
  3. メッセージの内容を表示するには、次のクエリを実行します。

    TestTable
    

    結果セットは次の図のようになります。

    Message result set.

    Note

    • Azure Synapse Data Explorer には、インジェスト プロセスを最適化することを目的とした、データ インジェストの集計 (バッチ処理) ポリシーがあります。 既定のバッチ処理ポリシーは、バッチについて次の条件のいずれかが真になると、バッチを封印するように構成されています。最大遅延時間 5 分、合計サイズ 1 G、または 1000 個の BLOB。 そのため、待機時間が発生する可能性があります。 詳細については、バッチ処理ポリシーに関するページを参照してください。
    • イベント ハブ インジェストには、10 秒または 1 MB のイベント ハブの応答時間が含まれます。
    • 応答時間の遅れを減らすには、ストリーミングをサポートするようにテーブルを構成します。 ストリーミング ポリシーに関するページを参照してください。

リソースをクリーンアップする

このイベント ハブを今後使用する予定がない場合は、コストが発生しないように test-hub-rg をクリーンアップします。

  1. Azure Portal の左端で [リソース グループ] を選択し、作成したリソース グループを選択します。

    左側のメニューが折りたたまれている場合は、Expand button.を選択して展開します。

    Select resource group to delete.

  2. test-resource-group[リソース グループの削除] を選択します。

  3. 新しいウィンドウで、削除するリソース グループの名前 (test-hub-rg) を入力し、 [削除] を選択します。

次のステップ