Apache kafka 删除列时Kafka连接模式的演变
假设我们有如下设置 架构演化兼容性设置为向后 JDBC源连接器轮询数据库中写入Kafka主题的数据。HDFS接收器连接器从Kafka主题读取消息,并以Avro格式写入HDFS 按照我所理解的流程Apache kafka 删除列时Kafka连接模式的演变,apache-kafka,apache-kafka-connect,confluent-platform,confluent-schema-registry,Apache Kafka,Apache Kafka Connect,Confluent Platform,Confluent Schema Registry,假设我们有如下设置 架构演化兼容性设置为向后 JDBC源连接器轮询数据库中写入Kafka主题的数据。HDFS接收器连接器从Kafka主题读取消息,并以Avro格式写入HDFS 按照我所理解的流程 JDBC源连接器查询数据库并从ResultSet的JDBC元数据生成模式V1。V1有col1、col2、col3。模式V1在模式注册表中注册 源连接器轮询DB中的数据,并将消息写入V1架构中的Kafka主题 (问题1)当HDFS接收器连接器从主题读取消息时,它是否根据架构注册表中的V1架构验证消息 下
注册表仅在注册新架构时进行验证 因此,如果/当源连接器检测到更改时,则在注册表端进行验证 对于HDFS connector,有一个单独的schema.compatibility属性,该属性对内存中保存的记录和任何新记录应用投影。当您获得具有新模式的记录并进行向后兼容更新时,所有尚未刷新的消息将在写入Avro容器文件时更新为保存新模式
旁白:仅仅因为注册表认为它是向后的,并不保证接收器连接器会这样做……源代码中的验证是不同的,并且我们遇到了多个问题://这是否意味着如果兼容性设置为“向前”,并在记录中添加了一个新列。hdfs接收器连接器将继续写入记录对于hdfs avro文件中没有新列值的hdfs???已经为相同的创建了关于kafka connect hdfs的报告:,在这种情况下获得更多的输入将是非常好的。@kaushikHS建议在存储连接器中保持向后兼容性,因为您将始终在过去查询数据。此外,添加新的(可选)字段是向后兼容的更改