我是Hadoop和编程的新手,我对Avro架构的演变有点困惑。我会解释我对Avro到目前为止的了解。Avro模式演进如何工作?
Avro是一个序列化工具,它将二进制数据及其json模式存储在顶部。模式看起来像这样。
{
"namespace":"com.trese.db.model",
"type":"record",
"doc":"This Schema describes about Product",
"name":"Product",
"fields":[
{"name":"product_id","type": "long"},
{"name":"product_name","type": "string","doc":"This is the name of the product"},
{"name":"cost","type": "float", "aliases":["price"]},
{"name":"discount","type": "float", "default":5}
]
}
现在我的问题是,为什么我们需要进化?我已经读过,我们可以在模式中使用default
来创建新字段;但如果我们在文件中添加一个新的模式,那么以前的模式将被覆盖。对于单个文件我们不能有两个模式。
另一个问题是,什么是读者和作家的模式,他们如何帮助?
谢谢@ jaco0646的详细解释。 –