AvroData 用模式默认值替换空值

AvroData replaces nulls with schema default values

我正在使用 io.confluent.connect.avro.AvroData.fromConnectData 在序列化之前转换消息。 AvroData 使用 struct.get(field) 获取值,然后用模式默认值替换空值。

据我所知,当 reader 期望编写器架构中缺少的字段(不是特定消息)时,应使用 avro doc 默认值来实现架构兼容性。

所以我的问题是:用架构默认值替换空值是否正确?或者我应该使用另一种方式来转换消息?

想念的是默认值不用于替换空值,它用于填充您的字段值,以防您的数据不包含该字段。这主要用于模式演化目的。您尝试执行的操作(将作为数据的一部分出现的空值替换为另一个值)无法通过 avro 模式实现,您需要在程序中处理它。