你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 流分析中分析 Protobuf

Azure 流分析支持处理采用协议缓冲区 (Protobuf) 数据格式的事件。 配置输入时,可使用内置的 Protobuf 反序列化程序。 要使用内置的反序列化程序,请指定 Protobuf 定义文件、消息类型和前缀样式。

备注

Azure 流分析不支持协议缓冲区 (Protobuf) 数据格式的架构注册表。

流分析作业配置步骤

若要配置流分析作业以对 Protobuf 中的事件进行反序列化:

  1. 创建流分析作业后,选择“输入”。

  2. 选择“添加输入”,然后选择要配置的输入以打开输入配置的窗格。

  3. 选择“事件序列化格式”以显示下拉列表,然后选择“Protobuf”。

     显示用于为 Azure 流分析作业配置 Protobuf 的选项的屏幕截图。

  4. 请按照以下指南完成配置:

    属性名称 说明
    Protobuf 定义文件 此文件指定 Protobuf 事件的结构和数据类型
    消息类型 要反序列化的消息类型
    前缀样式 用于确定消息正确反序列化 Protobuf 事件所需时长的设置

     显示在选择 Protobuf 作为事件序列化格式后,Azure 流分析作业配置窗格中的输入框的屏幕截图。

若要详细了解 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 流分析中的数据类型