HDFS 在一个avro文件中使用两个模式更新Avro模式

lawou6xi  于 8个月前  发布在  HDFS
关注(0)|答案(1)|浏览(113)

我有一个avro文件与第一个模式,然后我更新了模式,追加到同一个文件。所以现在我在一个文件中有两个模式。avro如何处理这种情况。我会有任何新的领域添加在文件中或我会失去任何数据,而阅读此数据。这是一个真实的流应用程序,我正在将数据写入hdfs。我的上游系统可能会更新模式,但hdfs编写器可能在旧模式上。所以hdfs avro文件将有两个模式,直到我更新writer来处理新的模式。
注意-我没有模式注册表,我每天创建一个avro文件。因此,如果在一天的中间更新了一个模式,我将有一个包含两个模式的avro文件。

kfgdxczn

kfgdxczn1#

与Thrift不同,Avro不会在数据中保存有关Avro架构的任何Meta信息。

  1. Avro要求avro架构在写入和读取时都存在。
    1.假设模式演变是兼容的,因此用新版本阅读旧模式不会导致异常,但新字段可能具有空值。
    1.您的演进模式需要向后兼容。Avro提供实用程序来检查架构compatibility
    1.由于您的文件可能有两个不同的版本,但在读取时,您将提供一个版本,因此数据将被反序列化为您在读取时提供的版本。

相关问题