1.1 Flink集成
自从Hudi 0.7.0版本支持Flink写入后,Hudi社区又进一步完善了Flink和Hudi的集成。包括重新设计性能更好、扩展性更好、基于Flink状态索引的写入Pipeline;支持Flink写入MOR表;Flink批量读取COW和MOR表;流式读取MOR表;同时支持了Hudi作为Source和Sink的Flink SQL Connector,在Hudi 0.8.0版本发布后,用户可以使用Flink1.11 体验上述所有新特性。
想了解更多Flink写入Hudi的细节,请参考 RFC-24[1]
具体教程可参考:重磅!解锁Apache Flink读写Apache Hudi新姿势
1.2 并发写
单表支持并发写特性在Hudi社区呼声比较高,0.8.0版本Hudi使用乐观锁并发控制支持多客户端并发写同一张表,Hudi支持文件级别乐观锁并发控制,如两个commit(或写入客户端)同时写入一张表,如果两个commit修改的文件不相同,两个客户端的写入都可以成功,现在这个功能标记为experimental
,用户可以基于Zookeeper
和HiveMetastore
来提供锁服务,后续还会考虑提供基于文件的锁服务。
想了解更多并发写入细节,请参考RFC-22[2],想使用并发写功能,可参考并发控制[3]配置。
1.3 写入端改进
•Flink客户端支持InsertOverwrite
•Java客户端支持COW表
1.4 查询端改进
•支持Spark Structured Streaming流式读取Hudi表•改进Metadata Table的性能•改进Clustering的性能
2. 迁移指南
•如果从小于0.5.3版本迁移,请参考每个版本迁移指南•0.6.0版本之后未引入新的表版本•HoodieRecordPayload
接口被标记为deprecated
,重新引入了包含properties
参数的接口,欢迎迁移至新接口,老接口将在0.9.0版本移除,请尽快迁移。
3. 总结
0.8.0版本与Flink做了更深度的集成,借助Flink和Hudi构建更实时的数据湖,同时0.8.0版本还支持了Flink和Spark的流批读写,Hudi可作为流批一体的统一数据存储层。
4. 感谢
感谢参与0.8.0版本的所有贡献者,欢迎广大数据湖爱好者加入Apache Hudi社区,欢迎star & fork https://github.com/apache/hudi
源码下载
•源码下载 : Apache Hudi 0.8.0 Source Release[4] (asc[5], sha512[6])•maven仓库包地址: 地址[7]
引用链接
[1]
RFC-24: https://cwiki.apache.org/confluence/display/HUDI/RFC - 24: Hoodie Flink Writer Proposal
[2]
RFC-22: https://cwiki.apache.org/confluence/display/HUDI/RFC - 22 : Snapshot Isolation using Optimistic Concurrency Control for multi-writers
[3]
并发控制: http://hudi.apache.org/docs/concurrency_control.html
[4]
Apache Hudi 0.8.0 Source Release: https://downloads.apache.org/hudi/0.8.0/hudi-0.8.0.src.tgz
[5]
asc: https://downloads.apache.org/hudi/0.8.0/hudi-0.8.0.src.tgz.asc
[6]
sha512: https://downloads.apache.org/hudi/0.8.0/hudi-0.8.0.src.tgz.sha512
[7]
地址: https://repository.apache.org/#nexus-search;quick~hudi