首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优雅消费多主题时如何在flink中管理多个avsc文件

优雅消费多主题时如何在flink中管理多个avsc文件
EN

Stack Overflow用户
提问于 2019-12-24 17:33:02
回答 1查看 89关注 0票数 1

这是我的案例:我使用flink通过SimpleStringSchema使用Kafka中的许多主题。之所以使用OutputTag,是因为我们稍后需要将Parquet + Snappy中的数据按主题存储到目录中。然后,我们遍历所有主题,同时使用AVSC模式文件处理每个主题。

现在,当添加一些新列时,我必须修改avsc模式文件。当需要修改十个或几百个文件时,这会给我带来麻烦。

那么,有没有更好的方法来避免更改avsc文件,或者如何更好地管理它们呢?

EN

回答 1

Stack Overflow用户

发布于 2019-12-25 05:23:04

通常,我会避免在同一个源中摄取具有不同模式的数据。对于同一主题中的多个模式尤其如此。

避免这种情况的一种常见且可扩展的方法是使用某种信封格式。

代码语言:javascript
复制
{
  "namespace": "example",
  "name": "Envelope",
  "type": "record",
  "fields": [
    {
      "name": "type1",
      "type": ["null", {
        "type": "record",
        "fields": [ ... ]
      }],
      "default": null
    },
    {
      "name": "type2",
      "type": ["null", {
        "type": "record",
        "fields": [ ... ]
      }],
      "default": null
    }
  ]
}

该信封是可进化的(任意添加/删除包装类型,其本身可以进化),并且仅增加少量开销(每个子类型1个字节)。缺点是您不能强制只设置其中一个子类型。

此模式与模式注册表完全兼容,因此不需要手动解析任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59466651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档