Hudi 和 Flink 的融合过程是什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Hudi 原本只支持 Spark 引擎,所以第一步是将 Hudi 与 Spark 解耦之后再去集成我们想要的引擎。
解耦的难点在于 Hudi 最初没有考虑多引擎的支持,所以从数据源读取数据到最终将数据写出到 Hudi 表,RDD 无处不在。连普通的工具类都会使用 RDD 作为基本的操作单元。与 Spark 解耦,我们评估到他的改动非常的大。其次是 Flink 与 Spark 核心抽象上的差异。Spark 认为数据是有限的数据集,而 Flink 认为数据是无界的,是一种数据流。这种抽象上的差异导致我们很难统一出一个通用的抽象。
这次改动对于 Hudi 来说是伤筋动骨的,因此我们决定要优先保证原版 Hudi 的功能和性能,当然也牺牲了部分 Flink Stream API。让 Flink 来操作 list,而用Spark 操作 RDD。这样就可以抽取一个泛型出来形成一个统一的抽象层。