【问题标题】:Avro schema update with two schema in one avro fileAvro 模式更新,一个 avro 文件中有两个模式
【发布时间】:2018-04-17 21:45:46
【问题描述】:

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

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

【问题讨论】:

    标签: hdfs avro spark-avro confluent-schema-registry


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 2023-03-14
      • 2016-08-09
      • 2020-08-31
      • 1970-01-01
      • 2015-03-20
      相关资源
      最近更新 更多