Avro 架构更新,一个 avro 文件中包含两个架构

问题描述 投票:0回答:1

我有一个带有第一个架构的 avro 文件,然后我更新了附加到同一文件的架构。所以现在我在一个文件中有两个模式。 avro 如何处理这种情况。我是否会在文件中添加任何新字段,或者在读取此数据时是否会丢失任何数据。这是一个实时流应用程序,我将数据写入 hdfs。我的上游系统可能会更新架构,但 hdfs 编写器可能使用旧架构。因此,hdfs avro 文件将有两个架构,直到我更新编写器以处理较新的架构。

注意 - 我没有模式注册表,并且每天创建一个 avro 文件。因此,如果某个架构在中午更新,我将拥有一个包含两个架构的 avro 文件。

hdfs avro spark-avro confluent-schema-registry
1个回答
0
投票

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

  1. Avro 要求 avro 架构在写入和读取时都存在。
  2. 假设模式演化是兼容的,因此用新版本读取旧模式不会导致异常,但新字段可以有空值。
  3. 您不断发展的模式需要向后兼容。 Avro 提供了检查架构兼容性的实用程序。
  4. 由于您的文件可能有两个不同的版本,但在读取时您将提供一个版本,因此数据将被反序列化为您在读取时提供的版本。
© www.soinside.com 2019 - 2024. All rights reserved.