数据架构管理与注册表实现全解析
1. 架构管理方法
在数据处理过程中,架构管理至关重要。存在两种主要的架构管理场景:
- 不支持架构推断的框架 :若所选的数据处理框架不支持架构推断,就需要手动维护架构。例如,Google的Cloud Dataflow服务所使用的Apache Beam,就不支持从数据中进行架构推断,这意味着你得在管道之外手动维护架构。
- 实时数据管道 :实时数据管道中的架构推断存在挑战。架构推断通常需要查看具有统计意义的大量数据,才能确定数据的架构。以Spark为例,它默认使用1000行样本数据来推断一批数据的架构。但在实时数据管道中,每次处理只能查看一条消息。虽然可以推断单条消息的架构,但无法保证下一条消息具有相同的架构,因此需要对每条消息的架构进行协调,这不仅计算成本高,还会产生大量的架构版本。
此外,为了提高性能,开发者常使用Protobuf或Avro等二进制格式来最小化每条消息的大小,甚至会从消息中移除Avro架构定义。这样一来,在Kafka等实时存储中,消息只是字节数组,无法从中推断架构,此时架构必须保存到注册表中,并由应用开发团队维护。
好消息是,架构推断方法和手动架构管理方法可以轻松结合。批量数据源可采用架构推断方法,而实时数据源则依赖手动架构管理,由开发团队负责将架构发布到注册表中,并在架构发生变化时更新版本。
2. 监控架构变化
构建一个能自动处理大多数架构变化的弹性数据管道很重要,但同时也需要一个警报机制,以便在架构发生变化时及时知晓。架构变化可能会导致下游报告或数据产品出现逻辑错误。例如,当数据源中的列
超级会员免费看
订阅专栏 解锁全文
1660

被折叠的 条评论
为什么被折叠?



