DataWorks数据集成单表实时同步支持使用Protobuf数据解析组件,将来源侧消息队列(如Kafka)中以Protobuf格式编码的二进制数据解析还原为结构化字段。
创建并配置Protobuf数据解析组件
步骤一:配置数据集成任务
-
新建数据源,详情请参见:配置数据源。
-
新建数据集成任务,详情请参见:单表实时同步任务配置。
说明当数据集成侧同步任务的同步类型为单表实时,可在数据来源组件与数据去向组件之间新增数据处理组件。详情可参见支持的数据源及同步方案。
步骤二:添加Protobuf数据解析组件
-
在单表实时同步任务中,开启数据处理开关,单击+添加节点,新增选择Protobuf数据解析组件。
-
为节点配置名称和描述信息,并配置Protobuf数据解析组件。
重要Protobuf数据解析组件适用于来源数据以Protobuf格式编码的场景,例如Kafka的消息体为Protobuf二进制数据。组件从指定列读取原始二进制数据,依据.proto文件中定义的消息结构(Message)将其解析还原为结构化字段,追加输出至下游。
配置基础参数,参数说明如下:
参数
说明
源字段
必填。选择存放Protobuf二进制数据的上游列,下拉列表仅展示上游BYTES类型的列。消息队列数据源通常选择消息体列,例如Kafka的value列。
.proto文件内容
必填。粘贴待解析数据对应的.proto文件全文,支持proto2、proto3语法,可引用Timestamp、Duration等标准定义(well-known types),不支持引用(import)其他自定义proto文件。填写完成后,单击解析内容,系统将解析出文件中定义的全部Message。
解析失败处理
必填。选择解析失败(例如源字段取值为空、二进制数据损坏或与Message定义不匹配)时的处理方式,取值如下:
-
跳过(skip):丢弃该条记录,任务继续运行。默认取值。
-
抛出异常(error):任务报错并终止运行。
配置解析字段。单击解析内容成功解析后,在Message名称下拉列表中选择要解析的Message,取值为Message全限定名(含package,例如test.User)。选择Message后,下方解析字段表格将展示该Message定义的全部顶层字段,包括字段名与映射类型,默认全部勾选,可按需取消勾选无需输出的字段。
解析字段仅支持Message的顶层字段,不支持通过路径(如a.b)提取嵌套字段,嵌套字段将整体解析为JSON字符串输出。Protobuf字段类型与输出字段类型的映射关系如下:
-
组件解析行为
-
解析出的字段将追加至输出字段列表末尾,存放原始二进制数据的源列保留,不会被删除。请避免解析出的字段与上游已有字段重名,重名可能导致数据写入冲突。
-
Message中未设置的字段按Protobuf默认值输出,例如数值类型为0、string为空字符串、bool为false。
-
.proto文件中不允许在Message内部嵌套定义Message(包括map类型字段),所有Message与enum需定义在文件顶层;字段类型引用其他顶层Message是允许的,其取值将整体输出为JSON字符串。
后续操作
完成数据来源与Protobuf数据解析的配置后,可单击数据输出预览,查看当前节点的输出数据结果是否符合预期。