当schema变化时
同样的数据,可以用老schema可以读取,也可以用新schema读取
schema进化分为4类
- Backward 向下兼容 用新schema可以读取老数据,有些字段的数据没有,就用default值
- Forward向上兼容 用老schema可以读取新数据,avro将忽略新加的字段
- 全兼容 支持向上兼容,向下兼容
- 不兼容
编写Avro schema的建议
- 设置你的主键是必须字段
- 一定要为每个字段设置default值,防止将来可以删掉他们
- 小心使用Enums
- 不要重命名字段。你可以增加别名
- 如果要修改schema,一定要记得加default值
- 如果要修改schema,不要删掉必须字段
网友评论