分享方式:


在 Azure 串流分析中剖析 Protobuf

Azure 串流分析可支援處理資料格式為 Protocol Buffer (Protobuf) 的事件。 設定輸入時,您可以使用內建的 Protobuf 還原序列化程式。 若要使用內建還原序列化程式,請指定 Protobuf 定義檔、訊息類型和前置詞樣式。

注意

Azure 串流分析不支援通訊協定緩衝區 (Protobuf) 資料格式的結構描述登錄。

設定串流分析作業的步驟

將您的串流分析作業設定為 Protobuf 中的還原序列化事件:

  1. 在您建立了串流分析作業之後,選取 [輸入]

  2. 選取 [新增輸入],然後選取您要設定的輸入以開啟輸入設定的窗格。

  3. 選取 [事件串行化格式 ] 以顯示下拉式清單,然後選取 [Protobuf]。

     此螢幕快照顯示為 Azure 串流分析作業設定 Protobuf 的選項。

  4. 使用下列指導完成設定:

    屬性名稱 描述
    Protobuf 定義檔 指定 Protobuf 事件結構和資料類型的檔案
    訊息類型 您想要還原序列化的訊息類型
    前置詞樣式 決定訊息多長才能正確還原序列化 Protobuf 事件的設定

     顯示 Azure 串流分析作業組態窗格上輸入方塊的螢幕快照,在您選取 Protobuf 作為事件串行化格式之後。

若要深入了解 Protobuf 資料類型,請參閱 官方通訊協定緩衝區文件

限制

  • Protobuf 還原序列化程式一次只接受一個 Protobuf 定義檔。 不支援匯入以自訂 Protobuf 定義檔。 例如:

     顯示自訂 Protobuf 定義檔案範例的螢幕快照。

    這個 Protobuf 定義檔會參考其匯入中的另一個 Protobuf 定義檔。 由於 Protobuf 還原序列化程式只會有目前的 Protobuf 定義檔,而且不知道 carseat.proto 是什麼 ,所以無法正確還原序列化。

  • 當 Protobuf 定義檔包含命名空間或套件時,訊息類型必須包含它。 例如:

     顯示具有命名空間之 Protobuf 定義檔案範例的螢幕快照。

    在入口網站的 Protobuf 還原序列化程式中,訊息類型必須為 Namespacetest.Volunteer,而不是一般的 Volunteer

  • 如果原始套件或命名空間全部是大寫或小寫,訊息類型就必須包含它,且套件或命名空間的第一個字元為大寫。 例如,如果命名空間為 nameSpaceTest,請使用 nameSpaceTest.Volunteer。 此規則適用於沒有命名空間或套件的訊息類型。

  • 您必須在 Protobuf 定義檔中指定訊息,而不使用 Optional 關鍵詞。 在 Proto 3 中,所有欄位都是選擇性的。 例如:

    此螢幕快照顯示訊息中具有選擇性關鍵詞的 Protobuf 定義檔案範例。

    此 Protobuf 定義檔會顯示具有 Optional 關鍵詞的訊息。 若要正確還原序列化,您必須移除關鍵詞:

    此螢幕快照顯示訊息中沒有選擇性關鍵詞的 Protobuf 定義檔案範例。

  • 傳送透過 google.protobuf 序列化的訊息時,前置詞類型應該設定為 base128,因為這是最相容的類型。

  • Protobuf 還原序列化程式不支援服務訊息。 如果您嘗試使用服務訊息,您的作業會擲回例外狀況。 例如:

     顯示服務訊息範例的螢幕快照。

  • 不支援這些資料類型:

    • Any
    • One of (與列舉相關)
    • Durations
    • Struct
    • Field Mask (protobuf-net 不支援)
    • List Value
    • Value
    • Null Value
    • Empty

注意

如需使用 Protobuf 還原序列化程式的直接協助,請將電子郵件傳送至 askasa@microsoft.com

另請參閱

Azure 串流分析中的資料類型