Apache Hudi:把数据湖变成数据湖仓

Apache Hudi:把数据湖变成数据湖仓

Apache Hudi 在 GitHub 上拿到 6177 Star。

这个项目来自 Apache 基金会,做的一件事就是把数据湖升级成数据湖仓。在云存储上用开放格式存数据,同时提供入库、索引、存储、查询、转换和管理的全套能力。

正文顶部截图

1、解决什么问题

传统数据湖的痛点很明显:数据写进去容易,改起来难,查起来慢。

你往 S3 或 HDFS 上扔了一批 Parquet 文件,想做 upsert 怎么办?想查某条记录的变更历史怎么办?想在不阻塞写入的情况下做并发查询怎么办?这些问题靠原生文件系统解决不了,Hudi 就是在存储层和计算层之间加了这么一层。

它不替代 Spark 或 Flink,而是在它们下面垫了一层表格式(Table Format),让数据湖具备数据库才有的能力:原子提交、upsert、增量查询、时间旅行。

2、核心能力

README区域截图

写入侧,Hudi 支持 Spark 和 Flink 两个引擎。数据进来之后,自动做索引、管理文件大小和布局。upsert 和 delete 操作走记录级索引,速度很快。写入是原子的,支持回滚和恢复。

查询侧提供五种模式:快照查询看最新状态,增量查询看某段时间的变更,CDC 查询拿到完整的变更流(含修改前后的值),时间旅行查历史某一刻的数据,读优化查询用纯列存拿最佳性能。

存储侧做了不少优化。行存和列存都支持,文件大小和布局自动管理,有压缩和聚簇机制把小文件合并。Schema 支持演进,元数据用 timeline 记录每次变更。

3、怎么用

环境要求:Java 11 或 17,Maven 3.6 以上,Spark 3.3 到 4.2 或 Flink 1.18 到 2.1 都支持。

编译打包:

git clone https://github.com/apache/hudi.git && cd hudi
mvn clean package -DskipTests -Dspark3.5 -Dflink1.20

启动 Spark Shell:

spark-3.5.0-bin-hadoop3/bin/spark-shell \
  --jars `ls packaging/hudi-spark-bundle/target/hudi-spark3.5-bundle_2.12-*.*.*-SNAPSHOT.jar` \
  --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
  --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension' \
  --conf 'spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog' \
  --conf 'spark.kryo.registrator=org.apache.spark.HoodieSparkKryoRegistrar'

Scala 版本默认 2.12,Spark 3.5 及以上可以用 2.13。Spark 4.0 及以上需要 Java 17。

4、表管理

Hudi 的表服务是自动运行的,不需要手动维护。清理旧版本、压缩小文件、聚簇优化数据布局,这些都可以配置调度策略。

支持和 Hive Metastore、AWS Glue、Google BigQuery、Apache XTable 做 Catalog 同步,和现有的数据基础设施对接。

5、适合什么场景

数据量大、需要频繁更新的场景:实时数仓的 ODS 层,用 Hudi 做 upsert 比传统 overwrite 效率高很多。需要数据版本管理或合规审计的场景:时间旅行和 CDC 查询可以直接用。多引擎共存的场景:同一张表 Spark 和 Flink 都能读写,不用复制数据。

在做数据湖选型的团队,可以把 Hudi 和 Delta Lake、Iceberg 放在一起对比测试,三个项目各有侧重。

在做数据湖选型的团队,可以把 Hudi 和 Delta Lake、Iceberg 放在一起对比测试,三个项目各有侧重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值