avro - Kafka 存储的 avro 记录向后模式兼容性
问题描述
有关 Avro 向后兼容性和 RocksDB 本地存储的问题:
假设我将一个主题作为一个具体化到rocksdb存储中的全局表来使用。然后我可以执行 store.get(K) 来检索 V。现在,假设我必须重新部署我的流应用程序,保持相同的本地存储,但使用新版本的 K 的 Avro 模式,只需包含一个新的可选字段。如果我现在使用新版本的 Avro 使用序列化的 K 进行查找(假设新的可选字段设置为 null),我是否应该期望仍然能够从本地存储中检索在 K 的第一个版本下已经持久化的 V?
我的印象是这应该有效,但查找总是返回 null。我可以通过遍历存储来打印前 K,V 的列表,并且我可以看到持久化的 K 看起来与我在执行 store.get(K) 时使用的完全一样。虽然 Avro 是为了向后兼容,但我们在更改架构时必须删除并重新创建存储是否正常?
解决方案
推荐阅读
- sql-server - 如何避免在存储过程中并行执行
- c# - Amazon S3 上 ListObjects 的过滤结果
- c# - PDFsharp DrawRoundedRectangle 参数
- sql - 加入时重复记录
- xml - 在 XSLT 的 For 循环中拉取嵌套标签
- android - 从后台返回 Activity 时做某事
- javascript - 对期望为 'number | 的属性使用泛型类型值 字符串 | 不明确的'
- java - 如何正确地为内部类创建对象?
- kubernetes - 如何让 jupyter-hub 访问我的私有 Docker 映像存储库?
- ruby-on-rails - “人”是轨道上的保留词吗?