我的例子是:我使用flink使用simplestringschema来消费Kafka中的许多主题。使用outputtag是因为我们需要稍后按主题将parquet+snappy中的数据存储到目录中。然后我们遍历所有主题,而每个主题都是用avsc模式文件处理的。
现在,当添加一些新列时,我必须修改avsc模式文件。当需要修改十到一百个文件时,我会有麻烦的。
那么,有没有更优雅的方法来避免更改avsc文件,或者如何更好地管理它们呢?
我的例子是:我使用flink使用simplestringschema来消费Kafka中的许多主题。使用outputtag是因为我们需要稍后按主题将parquet+snappy中的数据存储到目录中。然后我们遍历所有主题,而每个主题都是用avsc模式文件处理的。
现在,当添加一些新列时,我必须修改avsc模式文件。当需要修改十到一百个文件时,我会有麻烦的。
那么,有没有更优雅的方法来避免更改avsc文件,或者如何更好地管理它们呢?
1条答案
按热度按时间rqdpfwrv1#
一般来说,我会避免在同一个源中摄取具有不同模式的数据。对于同一主题中的多个模式尤其如此。
避免这种情况的一种常见且可扩展的方法是使用某种信封格式。
这个封套是可进化的(任意添加/删除 Package 类型, Package 类型本身可以进化),并且只增加一点开销(每个子类型1字节)。缺点是您不能强制只设置一个子类型。
此模式与模式注册表完全兼容,因此无需手动解析任何内容。