Azure Stream Analytics からの Event Hubs 出力
Azure Event Hubs サービスは、スケーラブルな発行-サブスクライブ型イベント インジェスターです。 1 秒あたり数百万のイベントを収集できます。 イベント ハブを出力として使用するのは、たとえば、Stream Analytics ジョブの出力が別のストリーミング ジョブの入力になるときです。 最大メッセージ サイズとバッチ サイズの最適化の詳細については、「出力バッチ サイズ」セクションを参照してください。
出力の構成
次の表に、イベント ハブのデータ ストリームを出力として構成するために必要なパラメーターを示します。
プロパティ名 | 説明 |
---|---|
出力エイリアス | クエリの出力をこのイベント ハブに出力するためにクエリ内で使用されるフレンドリ名です。 |
イベント ハブの名前空間 | 一連のメッセージング エンティティのコンテナーです。 新しいイベント ハブを作成すると、イベント ハブの名前空間も作成されます。 |
イベント ハブ名 | ご自分のイベント ハブ出力の名前です。 |
イベント ハブ ポリシー名 | 共有アクセス ポリシーです。イベント ハブの [構成] タブで作成できます。各共有アクセス ポリシーには、名前、設定したアクセス許可、アクセス キーが含まれています。 |
イベント ハブ ポリシー キー | イベント ハブの名前空間へのアクセスを認証するために使用される共有アクセス キーです。 |
パーティション キー列 | 省略可能。 イベント ハブ出力のパーティション キーが含まれる列です。 |
イベントのシリアル化の形式 | 出力データのシリアル化形式です。 JSON、CSV、Avro がサポートされています。 |
エンコード | CSV と JSON では、現在のところ、UTF-8 が唯一サポートされているエンコード形式です。 |
区切り記号 | CSV のシリアル化のみに適用されます。 Stream Analytics は、CSV 形式のデータをシリアル化するために、一般的な区切り記号をサポートしています。 サポートしている値は、コンマ、セミコロン、スペース、タブ、および縦棒です。 |
Format | JSON のシリアル化のみに適用されます。 [改行区切り] を指定すると、各 JSON オブジェクトを改行で区切って、出力が書式設定されます。 [改行区切り] を選択した場合、JSON は一度に 1 オブジェクトずつ読み取られます。 コンテンツ全体は、それ自体では有効な JSON になりません。 [配列] を指定すると、JSON オブジェクトの配列として出力が書式設定されます。 |
プロパティ列 | 省略可能。 ペイロードではなく、送信メッセージのユーザー プロパティとして関連付ける必要があるコンマ区切りの列です。 この機能の詳細は、「出力用のカスタム メタデータ プロパティ」セクションにあります。 |
パーティション分割
パーティション分割はパーティションの配置によって異なります。 イベント ハブ出力のパーティション キーが上流の (以前の) クエリ ステップと等間隔で配置されている場合、ライターの数はイベント ハブ出力のパーティションの数と同じになります。 各ライターは、EventHubSender クラスを使用して、特定のパーティションにイベントを送信します。 イベント ハブ出力のパーティション キーが上流の (以前の) クエリ ステップと一致していない場合、ライターの数はその前のステップのパーティションの数と同じになります。 各ライターは、EventHubClient の SendBatchAsync クラスを使用して、すべての出力パーティションにイベントを送信します。
出力バッチ サイズ
メッセージの最大サイズは、メッセージあたり 256 KB または 1 MB です。 詳細については、Event Hubs の制限に関するページを参照してください。 入出力のパーティション分割が揃っていない場合、各イベントは個別に EventData
に格納され、最大メッセージ サイズまでのバッチで送信されます。 これは、カスタム メタデータ プロパティが使用されている場合にも発生します。 入出力のパーティション分割が揃っている場合、複数のイベントが最大メッセージ サイズまで 1 つの EventData
インスタンスに格納され、送信されます。
出力用のカスタム メタデータ プロパティ
ご自分の送信メッセージにクエリ列をユーザー プロパティとして添付できます。 これらの列はペイロードに入りません。 これらのプロパティは、出力メッセージにディクショナリの形式で表示されます。 "キー" は列名で、"値" はプロパティ ディクショナリの列値です。 Record と Array を除き、すべての Stream Analytics データ型がサポートされています。
次の例では、DeviceId
フィールドと DeviceStatus
フィールドがメタデータに追加されています。
次のクエリを使用します。
select *, DeviceId, DeviceStatus from iotHubInput
出力のプロパティ列として
DeviceId,DeviceStatus
を構成します。
次に示すのは、Service Bus Explorer を利用してイベント ハブで検査される出力メッセージ プロパティの図です。
1 回だけの配信
1 回だけの配信は、Event Hubs の出力で既定でサポートされています。 入力に関係なく、Stream Analytics では、前回の出力時間からユーザーが開始した再起動後も、Event Hubs の出力でデータの損失や重複が起こらないことが保証されるため、重複が生成されません。 これにより、重複除去ロジックを監視し、実装し、トラブルシューティングする必要がないため、ストリーミング パイプラインが大幅に簡素化されます。