数据湖选型

名称 Hudi Paimon Iceberg Delta Lake
安装依赖 基础:Java
Hudi依赖于Apache Hadoop和Apache Spark
基础:Java
集群:Hadoop、Zookeeper
基础:Java 基础:Java
Docker 部署 可Docker 部署
ACID 事务支持 ✔️ ✔️ ✔️ ✔️
写时复制(Copy-On-Write, CoW) 支持CoW 不支持CoW,而是采用LSM Tree结构 支持CoW 支持CoW
读时合并(Merge-On-Read, MoR) ✔️ ✔️但并行数受限 ✔️ ✔️
批量加载(Bulk Load) ✔️Bulk Insert ✖️ ✖️ ✖️
记录级索引(提高合并写入效率) ✔️ ✔️ ✖️ ✔️
数据就地升级 支持数据就地升级,无需重写数据 ✖️ 支持表迁移 支持数据就地升级
增量查询(可以指定时间窗口) ✔️ ✔️ ✔️ ✔️
时间旅行(Time Travel) ✔️ ✔️ ✔️ ✔️
数据摄入 支持DeltaStreamer 支持Flink CDC导入 不支持特定的数据摄入工具 支持Spark Streaming和Flink CDC
并发控制 支持非阻塞表服务的乐观并发控制(OCC) 支持多个并发写作业的乐观并发控制 支持乐观并发控制(OCC) 支持乐观并发控制(OCC)
主键(Primary Key) ✔️ ✔️ ✔️ ✔️
列统计和数据跳过(Data Skip) 支持元数据中的列统计,显著提升查询性能 支持基于索引的数据跳过 支持列统计信息,提高查询性能 支持列统计信息
分区管理 不支持动态改变分区结构 支持动态改变分区结构 支持动态改变分区结构 支持动态改变分区结构
重复数据删除 支持重复数据删除 支持重复数据删除 支持合并时删除重复数据 支持重复数据删除
文件大小调整 支持自动调整文件大小 不支持文件大小调整 需要手动维护文件大小 支持自动调整文件大小
Compaction 支持自动Compaction 支持自动Compaction 需要手动维护Compaction 支持自动Compaction
自动删除旧版本文件 支持自动删除旧版本文件 不完全支持,需要手动指定快照时间 不完全支持,需要手动清理旧版本 支持自动删除旧版本文件
分区清理 ✔️ ✔️ ✔️ ✔️
新增索引 ✔️ ✔️ ✖️ ✔️
线性聚类和聚类函数 支持线性聚类和多种聚类函数 不支持线性聚类 不支持线性聚类 支持线性聚类
元数据扩展性 支持元数据根据数据大小进行扩展 不完全支持,需要管理表布局 不完全支持,需要管理文件布局 支持元数据扩展性
数据质量检查和执行 支持预提交验证器和数据质量检查 ✖️ ✖️ 支持数据质量检查
提交回调通知 支持提交回调通知 ✖️ ✖️ 支持提交回调通知
保护免受提交失败数据写入的影响 支持自动标记机制 不支持,但有一致性保障机制 不支持 支持自动标记机制
监控 支持自动监控的MetricsReporter 支持 不支持 支持自动监控
数据恢复 支持数据快照恢复 不支持 支持Flink的savepoint 支持数据快照恢复
计算引擎支持 支持Spark、Flink、Presto、Trino、Hive等 支持Spark、Flink、Presto、Trino、Hive等 支持Spark、Flink、Presto、Trino、Hive等 支持Spark、Flink、Presto、Trino、Hive等

推荐

  • Hudi:适合需要高效更新、删除和合并操作的场景,特别是当数据需要频繁修改时。
  • Paimon:适合需要高性能读取和复杂数据处理的场景,特别是在Flink生态系统中。
  • Iceberg:适合需要高性能查询和大规模数据处理的场景,特别是当数据主要以追加方式写入时。
  • Delta Lake:适合需要高性能查询和ACID事务支持的场景,特别是在Spark生态系统中。

官网

Release 0.15.0 | Apache Hudi

Quickstart — Delta Lake Documentation

Apache Paimon | Apache Paimon

Introduction - Apache Iceberg™

posted @ 2024-11-25 15:11  李好秀  阅读(1)  评论(0编辑  收藏  举报