0

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

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

4

1 回答 1

0

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

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