你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 流分析中分析 Protobuf
Azure 流分析支持处理采用协议缓冲区 (Protobuf) 数据格式的事件。 配置输入时,可使用内置的 Protobuf 反序列化程序。 要使用内置的反序列化程序,请指定 Protobuf 定义文件、消息类型和前缀样式。
备注
Azure 流分析不支持协议缓冲区 (Protobuf) 数据格式的架构注册表。
若要配置流分析作业以对 Protobuf 中的事件进行反序列化:
创建流分析作业后,选择“输入”。
选择“添加输入”,然后选择要配置的输入以打开输入配置的窗格。
选择“事件序列化格式”以显示下拉列表,然后选择“Protobuf”。
请按照以下指南完成配置:
属性名称 |
说明 |
Protobuf 定义文件 |
此文件指定 Protobuf 事件的结构和数据类型 |
消息类型 |
要反序列化的消息类型 |
前缀样式 |
用于确定消息正确反序列化 Protobuf 事件所需时长的设置 |
若要详细了解 Protobuf 数据类型,请参阅关于协议缓冲区的官方文档。
Protobuf 反序列化程序一次只获取一个 Protobuf 定义文件。 不支持导入到自定义的 Protobuf 定义文件。 例如:
此 Protobuf 定义文件引用其导入中的另一个 Protobuf 定义文件。 由于 Protobuf 反序列化程序只具有当前的 Protobuf 定义文件,并且不知道什么是 carseat.proto,因此无法正确反序列化。
当 Protobuf 定义文件包含命名空间或包时,消息类型必须包含它。 例如:
在门户中的 Protobuf 反序列化程序中,消息类型必须为 Namespacetest.Volunteer
而不是通常使用的 Volunteer
。
如果原始包或命名空间全部为大写或小写,则消息类型必须包括它,并且必须为包或命名空间的第一个字符采用大写形式。 例如,如果命名空间为 nameSpaceTest
,请使用 nameSpaceTest.Volunteer
。 此规则适用于没有命名空间或包的消息类型。
你必须在 protobuf 定义文件中在不使用 Optional
关键字的情况下指定消息。 在 Proto 3 中,所有字段都是可选的。 例如:
此 Protobuf 定义文件显示了具有 Optional
关键字的消息。 若要正确反序列化,必须移除该关键字:
发送已通过 google.protobuf
序列化的消息时,前缀类型应设置为 base128
,因为这是兼容性最高的类型。
Protobuf 反序列化程序不支持服务消息。 如果尝试使用服务消息,作业将引发异常。 例如:
以下数据类型不受支持:
Any
-
One of
(与枚举相关)
Durations
Struct
-
Field Mask
(protobuf-net 不支持)
List Value
Value
Null Value
Empty
Azure 流分析中的数据类型