【发布时间】:2022-04-25 22:31:25
【问题描述】:
设置
多个独立的源系统将 AVRO 事件推送到 Kafka 主题中。 Kafka S3 接收器连接器从该主题读取 AVRO 事件并写入 S3 parquet 格式。
问题
我们的架构注册表中的 AVRO 架构不符合标准。例如,源系统中的十进制字段在模式注册表中具有基本类型字符串和逻辑类型十进制。这些类型的组合在 AVRO 中是不允许的(十进制逻辑类型必须始终具有基类型修复/字节。
这些不正确的 AVRO 架构会导致错误的 PARQUET 文件架构。例如,在 parquet 中,十进制字段的类型为字符串,并且丢失了有关其十进制格式的所有详细信息。
问题
在架构注册表中拥有正确的 AVRO 类型的最佳解决方案是什么?我们无法更新源系统以发送正确的类型。
我们是否应该使用带有自定义逻辑的 SMT 来处理逻辑类型?例如,通过搜索十进制逻辑类型并相应地更改基本类型和值?还是应该使用 KStream 或自定义序列化器/反序列化器而不是 SMT?还有哪些可用的选项?
【问题讨论】:
标签: apache-kafka avro apache-kafka-connect s3-kafka-connector