Apache Hudi 1.2.1 介绍与选型指南
Apache Hudi 1.2.1 湖仓平台认知篇:版本依据、Timeline/索引/并发控制核心概念、功能特性、官方 Spark 快速上手与 Iceberg/Delta/Paimon 选型对比(2026-10-18 联网溯源)
Apache Hudi 1.2.1 介绍与选型指南
目标:面向数据平台选型读者,梳理 Apache Hudi 1.2.1 的定位、核心概念、功能与湖格式同类对比。本篇为认知篇(A1),关键论断基于官方发行目录/发布博客/GitHub Release 联网溯源并随文标注来源与查询日期(2026-10-18),不做本地安装实测。
一、信息基准
- 查询日期:2026-10-18(Asia/Shanghai)。
- 版本依据:Apache 官方发行目录 downloads.apache.org/hudi 当前提供最高版本 1.2.1(https://downloads.apache.org/hudi/ ,2026-10-18 实查);GitHub Releases 显示「1.2.1 Release」发布于 2026-09-24,1.1 维护线最新为 1.1.2(2026-10-17);1.2.0 官方公告博客为 https://hudi.apache.org/blog/2026/06/07/apache-hudi-release-1-2-announcement/ (以上均 2026-10-18 实查)。
- 官方来源清单:
- 官网与文档:https://hudi.apache.org/ | https://hudi.apache.org/docs/quick-start-guide/
- 发行目录:https://downloads.apache.org/hudi/
- 代码仓库/Release Notes:https://github.com/apache/hudi (releases.atom)
- 版本公告博客:https://hudi.apache.org/blog/2026/06/07/apache-hudi-release-1-2-announcement/
- 说明:社区活跃度 stars 来自 badgen.net(2026-10-18 查询),为约数。
二、软件概述
Apache Hudi 1.2.1(2026-09-24 发布,GitHub Releases)是 Apache 软件基金会开源的「事务型数据湖平台/湖仓表格式」,在对象存储或分布式文件系统上以 Parquet/ORC 等开放列式文件为底座,为数据湖提供记录级插入、更新、删除(upsert/delete)与增量消费能力(hudi.apache.org,2026-10-18 查询)。
- 定位:面向 CDC 同步、近实时管道与增量 ETL 的湖仓底座,强调「写时管理」的表服务与索引体系。
- 许可:Apache License 2.0。
- 社区:GitHub stars 约 6.3k(badgen.net,2026-10-18);ASF 顶级项目,发布节奏稳定(1.2.0 公告 2026-06 → 1.2.1 2026-09 → 1.1.2 维护版 2026-10)。
三、核心架构与核心概念
核心概念(依据 hudi.apache.org 官方文档,2026-10-18 查询):
| 概念 | 说明 |
|---|---|
| Timeline | 表的时间线:每次写入/压缩/清理都是一条 instant(动作+状态+时间戳),是增量查询与快照的基础 |
| 表类型 | Copy on Write(COW,写时重写列式文件,读稳定)与 Merge on Read(MOR,写追加日志文件+读时合并,写快读稍重) |
| 文件布局 | Base File(Parquet/ORC)+ Log File(MOR 增量日志),File Group / File Slice 分层组织 |
| 索引 | 记录定位体系:Bloom 索引、Simple/Bucket 索引、外部 HBase 索引;1.x 引入 Record Level Index(记录级索引,官方 1.0 发布材料) |
| 并发控制 | 快照隔离 + OCC/MVCC,配合 Lock Provider( ZooKeeper/数据库/对象存储锁等);1.x 引入 Non-Blocking Concurrency Control(NBCC,官方 1.0 发布材料) |
| 表服务 | Compaction(日志合并)、Clustering(小文件重整/聚类)、Cleaning(版本清理)、异步执行 |
| 元数据表 | 表内元数据(文件清单、列统计、布隆过滤器),支撑数据跳过(data skipping) |
| 查询视图 | 快照读、读优化读(RO)、增量读(incremental pull)与时间旅行 |
| Catalog/存储 | 存储层与计算解耦:HDFS/对象存储;Hive Metastore、AWS Glue 等目录服务 |
四、功能特性
| 特性 | 说明(官方文档/发布材料,2026-10-18 查询) |
|---|---|
| 记录级变更 | upsert、delete、patch 等写入操作;主键模型下的行级更新 |
| 增量消费 | 基于时间线的增量拉取,喂给下游增量 ETL |
| 多引擎读写 | Spark(3.3–4.1,官方 quick-start 实查)、Flink、Java API;Trino 连接器随 1.2.1 移入主仓库(RFC-105,hudi-trino,按 Trino 483/JDK 25 构建,1.2.1 Release Notes) |
| SQL 能力 | Spark SQL/Flink SQL 的 CREATE TABLE USING HUDI、UPDATE/DELETE/MERGE INTO(官方 quick-start) |
| 表格式/演进 | Schema 演进、分区演进相关能力(官方 docs 表格式章节) |
| 表服务自动化 | 异步 compaction/clustering/cleaning,缓解小文件与读放大 |
| CDC/近实时 | Flink CDC → Hudi 的近实时入湖管道是典型用法(官方博客/文档) |
| 1.2.1 新变化 | Trino 打包调整(hudi-trino-bundle 停发,改发非 shaded 的 hudi-trino,1.2.1 Release Notes) |
五、快速上手(引自官方文档,不本地实测)
以下命令引自官方 Quick Start Guide(来源:https://hudi.apache.org/docs/quick-start-guide/ ,2026-10-18 查询,支持 Spark 3.3–4.1、Scala 2.12/2.13):
export SPARK_VERSION=3.5
export HUDI_VERSION=1.2.1
export SCALA_VERSION=2.13
spark-sql --master "local[2]" \
--packages org.apache.hudi:hudi-spark$SPARK_VERSION-bundle_$SCALA_VERSION:$HUDI_VERSION \
--conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
--conf 'spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog' \
--conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension' \
--conf 'spark.kryo.registrator=org.apache.spark.HoodieSparkKryoRegistrar'
建表与写入(官方 quick-start SQL 示例节选):
-- 创建分区 Hudi 表
CREATE TABLE hudi_table (
ts BIGINT, uuid STRING, rider STRING, driver STRING,
fare DOUBLE, city STRING
) USING HUDI
PARTITIONED BY (city);
-- 插入数据
INSERT INTO hudi_table VALUES (1695159649087,'334e26e9-8355-45cc-97c6-c31daf0df330','rider-A','driver-K',19.10,'san_francisco');
-- 行级更新
UPDATE hudi_table SET fare = 25.0 WHERE rider = 'rider-D';
-- MERGE INTO 合并写入
MERGE INTO hudi_table AS target USING fare_adjustment AS source
ON target.uuid = source.uuid
WHEN MATCHED THEN UPDATE SET target.fare = target.fare + source.fare
WHEN NOT MATCHED THEN INSERT *;
六、适用场景与限制
适用场景:
- 数据库 CDC 到湖:高频 upsert、删除标记同步,要求记录级准确性。
- 增量 ETL/近实时数仓:下游按增量消费,替代「每天全量重算」。
- 合规与数据修正场景:GDPR 式删除、回填、行级纠错。
- 与 Spark/Flink 深度集成的湖仓平台。
限制与注意:
- 表服务(compaction/cleaning/clustering)与索引选型带来运维复杂度,需要按写入模式调参。
- 多引擎访问需对齐 bundle/connector 版本(如 1.2.1 的 Trino 打包变更即影响升级路径,1.2.1 Release Notes)。
- 与 Iceberg/Delta 的「表格式」对比中,Hudi 更偏「写时管理」平台,跨引擎中立接入需评估各引擎适配成熟度。
七、同类选型对比
同类:数据湖表格式/湖仓平台。数据来源:各官网/仓库/releases.atom,stars 来自 shields.io/badgen.net(2026-10-18 查询)。
| 项目 | 许可 | 社区活跃度(stars/最近发版) | 版本节奏 | 引擎生态 |
|---|---|---|---|---|
| Apache Hudi 1.2.1 | Apache-2.0 | 约 6.3k;1.2.1(2026-09-24)/1.1.2(2026-10-17,releases.atom) | minor 约 3~6 个月,维护线并行 patch | Spark 3.3–4.1、Flink、Trino(官方 quick-start/1.2.1 notes) |
| Apache Iceberg 1.12.0 | Apache-2.0 | 约 9.3k(shields.io);1.12.0(2026-09-30,releases.atom) | 约每季度 minor | Spark 3.5/4.0/4.1、Flink、Trino、Hive、Doris/StarRocks 等多引擎(官方文档) |
| Delta Lake 4.4.1 | Apache-2.0 | 约 9k(shields.io);4.4.1(2026-10-05,releases.atom) | 稳定滚动 | 以 Spark(Databricks 系)为中心,Flink/Trino 等连接器外围 |
| Apache Paimon 2.1.0 | Apache-2.0 | 约 3.4k(shields.io);2.1.0(2026-10-12,releases.atom) | minor 快速迭代 | Flink 原生流式湖仓,Spark/Hive/Trino 支持持续增强(官方文档) |
兼容矩阵(要点):
| 维度 | Hudi 1.2.1 | Iceberg 1.12.0 | Delta Lake 4.4.1 | Paimon 2.1.0 |
|---|---|---|---|---|
| 更新模式 | 行级 upsert/delete 原生(索引体系) | v2 equality/positional delete | 行级 MERGE/DELETE | 行级更新(主键表,LSM 风格) |
| 流式写入 | Flink 流式入湖、增量消费成熟 | Kafka/流式入湖 + 增量读 | Structured Streaming | Flink 流式原生、changelog 语义 |
| 引擎中立性 | 中立(Spark/Flink 为一等) | 高(最广泛的多引擎接入) | 偏 Spark 生态 | 偏 Flink 生态 |
| 运维抓手 | 表服务丰富但需调参 | 需配套维护过程(compaction/快照过期) | Databricks 管控强,OSS 版需自理 | 内建 LSM 自动合并较省心 |
一句选型建议:重 upsert/CDC/增量管道且主引擎是 Spark/Flink 选 Hudi;要「一表多引擎、开放标准」的湖仓中立底座选 Iceberg;Spark 中心化且未来可能上 Databricks 选 Delta;Flink 重度流式湖仓选 Paimon。
八、参考链接
- 官网/Quick Start:https://hudi.apache.org/ | https://hudi.apache.org/docs/quick-start-guide/
- 发行目录:https://downloads.apache.org/hudi/
- 代码仓库/Release Notes:https://github.com/apache/hudi (releases.atom)
- 1.2.0 公告博客:https://hudi.apache.org/blog/2026/06/07/apache-hudi-release-1-2-announcement/
- 本专栏配套:《Apache Hudi 配置参数详解》《Apache Hudi 常用 CLI 命令与工具详解》《Apache Hudi 分布式集群部署指南》