在 Azure 流分析中分析 Protobuf
Azure 流分析支持处理采用协议缓冲区 (Protobuf) 数据格式的事件。 配置输入时,可使用内置的 Protobuf 反序列化程序。 要使用内置的反序列化程序,请指定 Protobuf 定义文件、消息类型和前缀样式。
Nota
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
Nota
如需有关使用 Protobuf 反序列化器的直接帮助,请发送电子邮件至 askasa@microsoft.com。