Azure 串流分析的事件中樞輸出

Azure 事件中樞 服務是具高延展性的發佈-訂閱事件擷取器。 它每秒可以收集數百萬個事件。 當串流分析作業成為另一個串流作業的輸入時,就會使用事件中樞作為輸出。 如需訊息大小上限和批次大小最佳化的詳細資訊,請參閱輸出批次大小一節。

輸出設定

下表具有從事件中樞設定資料流程作為輸出所需的參數。

屬性名稱 描述
輸出別名 此為易記名稱,用於在查詢中將查詢輸出指向這個事件中樞。
事件中樞命名空間 一組訊息實體的容器。 建立新的事件中樞時,也會建立事件中樞命名空間。
事件中樞名稱 事件中樞輸出的名稱。
事件中樞原則名稱 共用存取原則,您可以在事件中樞的 [設定] 索引標籤上建立。每一個共用存取原則都會有名稱、權限 (由您設定) 和存取金鑰。
事件中樞原則金鑰 用來驗證事件中樞命名空間存取權的共用存取金鑰。
分割區索引鍵資料行 選擇性。 資料行包含事件中樞輸出的分割區索引鍵。
事件序列化格式 輸出資料的序列化格式。 支援 JSON、CSV 和 Avro。
編碼 對於 CSV 和 JSON 而言,UTF-8 是目前唯一支援的編碼格式。
分隔符號 僅適用於 CSV 序列化。 串流分析可支援多種以 CSV 格式序列化資料常用的分隔符號。 支援的值是逗號、分號、空格、索引標籤和分隔號。
[格式] 僅適用於 JSON 序列化。 分隔的行會指定輸出的格式化方式為利用新行分隔每個 JSON 物件。 如果您選取分隔的行,JSON 會一次讀取一個物件。 整個內容本身不是有效的 JSON。 陣列會指定輸出將會格式化為 JSON 物件的陣列。
屬性資料行 選擇性。 以逗號分隔的資料行,必須附加為外寄郵件的使用者屬性,而不是承載。 如需這項功能的詳細資訊,請參閱輸出的自訂中繼資料屬性一節。

資料分割

資料分割會根據分割區對齊方式而有所不同。 當事件中樞輸出中的分割區索引鍵與上游 (先前的) 查詢步驟同等對齊時,寫入器的數目將會和事件中樞輸出中的分割區數目相同。 每個寫入器都會使用 EventHubSender 類別來將事件傳送至特定的分割區。 當事件中樞輸出中的分割區索引鍵沒有與上游 (先前的) 查詢步驟同等對齊時,寫入器的數目將會和先前步驟中的分割區數目相同。 每個寫入器會使用 EventHubClient 中的 SendBatchAsync 類別,將事件傳送至所有輸出分割區。

輸出批次大小

訊息大小上限為每則訊息 256 KB 或 1 MB。 如需詳細資訊,請參閱事件中樞限制。 當輸入/輸出資料分割沒有對齊時,每個事件會個別封裝於 EventData 中,並在以訊息大小上限為限的情況下,以批次的方式傳送。 如果使用自訂中繼資料屬性,也會發生這種情況。 當輸入/輸出資料分割有對齊時,多個事件會封裝為單一 EventData 執行個體,以訊息大小上限為限並傳送。

輸出的自訂中繼資料屬性

您可以將查詢資料行當做使用者屬性附加至外寄郵件。 這些資料行不會進入承載。 屬性會以輸出訊息上的字典形式呈現。 「索引鍵」是資料行名稱,「值」是屬性字典中的資料行值。 除了「記錄」和「陣列」以外,支援所有串流分析資料類型。

在下列範例中,將 DeviceIdDeviceStatus 欄位新增至中繼資料。

  1. 使用下列查詢:

    select *, DeviceId, DeviceStatus from iotHubInput
    
  2. DeviceId,DeviceStatus 設定為輸出中的屬性資料行。

    屬性資料行

下圖是使用 服務匯流排總管在事件中樞中檢查的預期輸出訊息屬性。

事件自訂屬性

剛好傳遞一次

根據預設,事件中樞輸出只支援傳遞一次。 無論您的輸入為何,串流分析都保證不會遺失資料或事件中樞輸出中沒有重複專案,而且在使用者起始的上次輸出時間重新開機,防止產生重複專案。 這可藉由不需要監視、實作和疑難排解重復資料刪除邏輯,大幅簡化串流管線。

下一步