當(dāng)schema變化時(shí)
同樣的數(shù)據(jù),可以用老schema可以讀取,也可以用新schema讀取
schema進(jìn)化分為4類(lèi)
- Backward 向下兼容 用新schema可以讀取老數(shù)據(jù)叨橱,有些字段的數(shù)據(jù)沒(méi)有最筒,就用default值
- Forward向上兼容 用老schema可以讀取新數(shù)據(jù)晦鞋,avro將忽略新加的字段
- 全兼容 支持向上兼容谋币,向下兼容
- 不兼容
編寫(xiě)Avro schema的建議
- 設(shè)置你的主鍵是必須字段
- 一定要為每個(gè)字段設(shè)置default值,防止將來(lái)可以刪掉他們
- 小心使用Enums
- 不要重命名字段斋射。你可以增加別名
- 如果要修改schema育勺,一定要記得加default值
- 如果要修改schema,不要?jiǎng)h掉必須字段