让我们说一下我们的设置如下。
JDBC Source Connector轮询从DB写入Kafka主题的数据。HDFSSink Connector从Kafka主题读取消息并以Avro格式写入HDFS。
按照我所了解的流程。
下一个数据库模式已更改。列“ col3”已从表中删除。
这种情况在Confluent文档的“向后兼容性”下得到了解决? : [https://docs.confluent.io/current/schema-registry/avro.html#schema-evolution-and-compatibility]
向后兼容更改的一个示例是删除字段。一种 被开发来处理没有此字段的事件的消费者将 能够处理使用旧模式编写的事件并包含 字段–消费者只会忽略该字段。
答案 0 :(得分:1)
仅当注册新架构时,注册表才会生效。
因此,如果/当源连接器检测到更改时,则在注册表端进行验证
对于HDFS连接器,有一个单独的schema.compatibility属性,该属性将投影应用于内存中保存的记录和所有新记录。当您获得具有新架构的记录并进行向后兼容更新时,在写入Avro容器文件时,所有尚未刷新的消息都将更新为保存新架构。
此外:仅仅因为注册表认为它是向后的,并不保证接收器连接器确实可以...源代码中的验证是不同的,并且我们遇到了很多问题:/