凌晨四点的社区食堂后厨,三位大厨同时上岗,面对的是同一个能装下几百个冰柜的大仓库。阿德师傅(Delta Lake)是账房先生出身,每动一样食材都先在流水账上记一笔;小胡师傅(Hudi)是快餐店跳槽来的快手,给食材贴上位置标签,要什么一抓一个准;冰姐(Iceberg)则是图书馆管理员转行,不碰食材,只管维护那套写着“哪个架子上有什么”的目录卡片。三种管理哲学,谁能把这个“数据大仓库”管得最好?这篇内容把三位大厨拉到同一个灶台前,从架构设计、事务能力、读写性能、生态兼容、数据治理到最终选型,逐项横向比个通透。看完你就能明白,数据湖选型没有标准答案,只有最匹配的答案。

岗位关联

数据湖选型是数据平台架构师的核心决策之一。掌握三框架的差异,能帮你在真实业务中快速判断该用哪套底座,避免“框架选错、三年返工”的平台债务。

目录
  1. 可视化演示
  2. 架构设计特点:三位大厨的后厨哲学
  3. 事务支持能力:高峰时段的记账本
  4. 读写性能差异:出菜速度的较量
  5. 生态兼容性:会不会用食堂的灶具
  6. 数据管理特性:食材保质期的管理
  7. 选型决策建议:经理该请哪位大厨
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

数据湖三框架五维度对比 雷达图从写入性能、读取性能、ACID事务、生态兼容和时间旅行五个维度对比三大框架的综合能力 Hudi在写入性能上领先得益于MoR模式的追加日志设计,Iceberg在读取和生态兼容性上表现最优 Delta Lake与Spark生态深度集成,在ML pipeline场景中具有天然优势 三大框架各有所长,选型应匹配具体场景需求

架构设计特点:三位大厨的后厨哲学

社区食堂的后厨归三位大厨轮流掌管,但他们的管法完全不同。阿德(Delta Lake)是账房先生出身的掌勺,食物进出都先写流水账,账本上记录每笔操作,做菜前查账、做完菜记账。小胡(Hudi)是快餐店跳槽来的快手,他给每样食材贴了一张“位置标签”,挂在自己的小黑板上,顺着标签就能秒找食材。冰姐(Iceberg)是图书馆管理员转行,她不在食材上花心思,而是做了一套“目录卡片”:哪个架子上有什么、每份食材多大、什么日期入柜,全记在卡片上。三种哲学,注定三条不同的路径。

这套“管理哲学”在数据湖里对应的是元数据管理方案。数据湖的底子是廉价的对象存储——好比那个装满冰柜的大仓库,谁来写、怎么写、怎么让查询引擎知道数据在哪,全靠框架的元数据层。三位大厨的底牌,就是三种不同的元数据组织方式。而它们的共同点是“存储计算分离”:食材统一放大仓库,做菜在食堂各个灶台上完成,仓库和灶台各管各的,互不绑架。

技术细节上,Delta Lake 的底牌是事务日志(Transaction Log)。每次写入,先追加一条日志说明“我要改哪些文件”,再实际改动数据文件,所有人都只能看到日志里的最新状态。Hudi 的底牌是文件索引加时间线(Timeline):索引记录每条记录落在哪个文件,时间线记录 commit、rollback、clean 等每次动作,这是它做“改记录”(upsert)的底气。Iceberg 的底牌是三层元数据:Metadata File(某次快照的总纲)→ Manifest List(快照涉及哪些分组)→ Manifest File(每个文件的位置和列统计),查询引擎可以逐层“撕纸”,剪掉无关文件。

Rmeta=SmetaSdataR_{meta} = \dfrac{S_{meta}}{S_{data}}

1. S_meta(分子):元数据占用的存储量,包括日志、索引、Manifest 文件等,好比目录卡片的厚度

SmetaS_{meta}

2. S_data(分母):实际数据文件占用的存储量,好比食材本身的分量

SdataS_{data}

3. 整体比值:比值越低说明元数据越“轻盈”,读数据时越少做无用功

Rmeta=SmetaSdataR_{meta} = \dfrac{S_{meta}}{S_{data}}

三种管理哲学没有绝对优劣:账房先生求稳,贴标小哥求快,图书管理员求全。后面的事务、性能、生态之争,本质上都是这场“后厨管理哲学”的延伸。

事务支持能力:高峰时段的记账本

饭点一到,后厨乱成一锅粥:有人要改菜谱,有人要加新菜,还有人想回头翻昨天晚上那道菜的做法。三位大厨如何保证“同时出菜不打架、改错了能翻旧账”?靠的就是各自的事务机制。

三位大厨都号称支持 ACID——原子性、一致性、隔离性、持久性这四大保证。但实现路径不同。阿德的账房模式:事务日志就是他的账本,每个写入者先在账本上“占位”,提交时检查版本号,发现别人先改了就让后到者重试,这叫乐观并发控制。小胡的时间线模式:Timeline 上记录每个 action,像超市收银小票一样按顺序排列,提交、回滚、清理一目了然,配合索引做 upsert 时事务边界清晰。冰姐的图书管理:每次提交生成一个不可变快照(Snapshot),读者看旧快照不打扰写者写新快照;多个写者同时提交时,用“比较并交换”(CAS)检查元数据引用,谁的引用版本新谁赢。

Stx=NcommitNattemptS_{tx} = \dfrac{N_{commit}}{N_{attempt}}

1. N_commit(成功提交数):最终写入元数据并生效的事务数量,好比账本上真正落笔的账目

NcommitN_{commit}

2. N_attempt(尝试总数):所有写者发起的提交次数,包括失败重试的,好比所有想记账的人次

NattemptN_{attempt}

3. 成功率:接近 1 说明并发控制优秀,写者冲突少、很少白跑一趟

Stx=NcommitNattemptS_{tx} = \dfrac{N_{commit}}{N_{attempt}}

时间旅行是事务能力的衍生甜点:阿德翻账本(日志重放)、小胡翻小票(Timeline 回放)、冰姐翻存档(切换到旧快照)。只要框架还保留历史版本,任何过去时刻的“菜单”都能重新上桌。这就是湖上数据可回溯的底气。

读写性能差异:出菜速度的较量

饭点考验的是“出菜速度”和“翻台率”。三位大厨的读写性能差异,本质是他们在“写”和“读”上的取舍。

写入速度上,阿德要先记账再上菜(日志 + 数据文件),稳但略慢;小胡走“贴标签”路线,用 Merge-on-Read(MOR)模式把新改动先追加到 log 文件,发菜时再合并,写起来最轻快;冰姐是“先出档案再归档”:写数据文件后更新 Manifest,如果用 Copy-on-Write(COW)重写整个分区,写放大最明显。所谓写放大,就是逻辑上只改 1 份菜,实际却重做了 3 份的量。

读取速度上剧本反过来。冰姐的目录卡片能层层剪枝:按分区、按列统计跳过无关文件,查询计划器拿着 Manifest 挑着读,省下大量 IO。阿德的账本也能帮查询引擎精确圈定“哪些文件涉及本次查询”。小胡的索引擅长“点菜”——按主键找一条记录,但 MOR 表读时要合并 log 和基础文件,全表扫描反而变慢。增量读取是 Hudi 的招牌:只读“从上次吃完到现在新增的菜”,配合 Flink 做实时链路非常顺手;Delta 的 Change Data Feed 也能做到,Iceberg 则更多依赖外部 CDC 组件。

Wamp=SwrittenSlogicalW_{amp} = \dfrac{S_{written}}{S_{logical}}

1. S_written(实际写入):真正写到存储上的字节数,好比后厨实际动用的食材量

SwrittenS_{written}

2. S_logical(逻辑变更):业务层面想要的变更大小,好比客人点的那盘菜的量

SlogicalS_{logical}

3. 比值:写放大越高,存储成本越大、写入越慢;MOR 模式通常写放大更小

Wamp=SwrittenSlogicalW_{amp} = \dfrac{S_{written}}{S_{logical}}

小问题:小文件太多会让所有人都变慢。小胡有 clustering 自动合并文件,冰姐有 rewrite_data_files,阿德有 OPTIMIZE——治理功力见后文,但性能账要提前算。

生态兼容性:会不会用食堂的灶具

食堂里已经有一堆灶具:Spark 大炒锅、Flink 高压锅、Hive 蒸笼、Trino 破壁机。三位大厨能不能上手,决定了团队要不要“换厨房”。

阿德是 Databricks 的“亲儿子”,跟 Spark 大炒锅配合最深,写操作几乎只在 Spark 里最顺;对 Flink 的支持近年有进步,但写路径成熟度仍不如 Spark。好在他有 Delta Sharing,可以像“外卖打包”一样把数据安全地分享给外部团队。小胡在 Uber 食堂练就一身 Flink 功夫,Flink SQL 写 Hudi 是很多实时湖仓团队的首选组合,Spark 同样支持。冰姐是 Apache 顶级项目出身、厂商中立,Spark、Flink、Trino、Presto、Hive、StarRocks 几乎通吃,AWS、Cloudera 等云厂商也都原生支持,兼容列表最长。

Ecov=NenginesNtotalE_{cov} = \dfrac{N_{engines}}{N_{total}}

1. N_engines(已适配引擎数):框架提供连接器或原生支持的引擎数量,好比大厨会用的灶具种类

NenginesN_{engines}

2. N_total(主流引擎总数):当前业界主流引擎的存量,好比食堂里全部灶具种类

NtotalN_{total}

3. 覆盖度:越高越“随插随用”,团队不用为选框架而被迫更换计算引擎

Ecov=NenginesNtotalE_{cov} = \dfrac{N_{engines}}{N_{total}}

生态选型的潜台词是:框架可以小众,但引擎不能被绑架。如果团队里 Spark、Flink、Trino 三分天下,冰姐的字典里没有“拒绝”;如果公司已经全面拥抱 Databricks,阿德才是顺水推舟;如果实时计算是命脉,小胡和 Flink 的搭配最香。

数据管理特性:食材保质期的管理

食堂的食材会过季(分区变化),菜谱会改版(Schema 变化),剩菜要处理(小文件堆积),还有人不能碰某些食材(权限控制)。数据湖框架的治理能力,决定这份家业能管多久。

分区演进上,冰姐的“隐藏分区”最强:数据按分区字段写入,但分区布局由元数据自动维护,改分区规则不用重建表、不用改 SQL;阿德要改分区得手动迁移;小胡靠 clustering 服务来优化布局。Schema 演进三者都支持加列、改列、重命名,但冰姐演进后无需重写数据,阿德支持 NOT NULL 等更丰富的约束,小胡在建表后改 schema 时的限制稍多。小文件治理是三家的必修课:阿德的 OPTIMIZE、小胡的 clustering、冰姐的 rewrite_data_files,都能把几千个小文件合并成大文件,让查询从“翻一千个抽屉”变成“翻十个抽屉”。

安全权限方面,三个框架本身不直接管用户认证,而是把权限交给外部引擎或云服务。冰姐在 AWS Lake Formation 上集成得很好,支持列级、行级安全;阿德与 Databricks 的 Unity Catalog 深度绑定,权限模型最完整;小胡也有元数据鉴权集成,但通常要配合自有权限体系。

Pprune=1−NscanNtotalP_{prune} = 1 - \dfrac{N_{scan}}{N_{total}}

1. N_scan(扫描分区数):一次查询实际需要读的分区个数,好比翻找食材时真正打开的几个抽屉

NscanN_{scan}

2. N_total(总分区数):表里全部分区数量,好比后厨所有抽屉的数量

NtotalN_{total}

3. 剪枝率:越接近 1 说明框架越擅长“只翻该翻的抽屉”,查询性能越好

Pprune=1−NscanNtotalP_{prune} = 1 - \dfrac{N_{scan}}{N_{total}}

治理能力决定了数据湖的“长期保质期”。账房先生靠账目清楚,贴标小哥靠定期理货,图书管理员靠档案规范——没有哪一种天然最好,但要看你最怕哪种乱。

选型决策建议:经理该请哪位大厨

社区食堂经理最终会请谁?这取决于食堂规模、菜系定位和预算。数据湖选型也是同一套逻辑:没有最好的框架,只有最匹配的框架。

适用规模上,如果数据是 PB 级、引擎众多、还要开源可控,冰姐的 Iceberg 最稳——它的元数据规范严谨,云厂商支持广,适合做企业级数据底座。如果团队技术栈以 Spark 为核心,还有 Databricks 平台的支撑,阿德的 Delta 最顺手——ACID、时间旅行、Unity Catalog 一条龙,机器学习特征管理也方便。如果业务的命脉是“高频更新记录”和实时入湖——比如订单状态、车辆轨迹、用户画像——小胡的 Hudi 才是杀手锏。

场景匹配上可以当口诀记:实时湖仓选 Hudi,Databricks/ML 选 Delta,多引擎云原生选 Iceberg。社区活跃度方面,Iceberg 作为 Apache 顶级项目贡献者最多,Hudi 社区稳定且 Uber 系生态典型,Delta 由 Databricks 主导但开源社区也在快速增长。文档完善度三者都在第一梯队:Delta 的官方文档体验最好,Iceberg 的规范文档(spec)最严谨,Hudi 的示例代码更新最快。

Score=∑i=1nwi×siScore = \sum_{i=1}^{n} w_i \times s_i

1. w_i(第 i 个权重):每个维度的重要程度,比如“实时性权重”高就利好 Hudi,好比经理更看重上菜速度还是翻旧账能力

wiw_i

2. s_i(第 i 个得分):该框架在这一维度的打分,1-5 分不等,好比大厨某道菜的试吃评分

sis_i

3. 求和符号:把所有“权重 × 得分”累加起来,综合得分最高的框架就是这道题的答案

∑i=1nwi×si\sum_{i=1}^{n} w_i \times s_i

最后提醒一句:选型不是“选完就结束”,而是“选完才开始”。无论请哪一位大厨,后续的分区治理、小文件合并、权限体系建设都得上心。框架只是菜刀,菜好不好吃,还是看掌勺的人和后面的团队。

AI 应用场景

实时订单轨迹分析平台(Hudi)

阶段:数据接入与实时特征构建

解决的问题:传统离线数仓 T+1 交付,无法支撑网约车实时调度。订单轨迹需要高频更新(司机位置每分钟变),用 Hive 全表覆盖既慢又贵,AI 模型的 ETA 预测特征拿到手时已经过期。

具体案例:某网约车平台用 Flink 消费订单 Kafka 流,写入 Hudi MOR 表,轨迹更新以“贴标签”方式快速落到 log 文件;下游 Spark Streaming 读取合并后的数据,实时产出“预计到达时间”特征供调度模型推理。Hudi 的增量读取让特征只更新变化的部分,避免全量重算。

多团队共享的数据湖分析平台(Iceberg)

阶段:特征存储与数据共享

解决的问题:大型电商的订单、商品、用户行为数据要被多个团队消费:算法团队用 Spark 跑特征,BI 团队用 Trino 做即席分析,实时团队用 Flink 写实时表。传统 Hive 表无法同时满足多引擎的一致读,而自建多个副本又造成数据口径混乱。

具体案例:平台将核心业务表统一迁入 Iceberg,Spark 负责批量 ETL,Trino 直接查同一份快照跑 BI,Flink 通过 Iceberg 连接器实时写增量。Iceberg 的 manifest 剪枝让 BI 查询跳过 80% 无关文件,查询耗时从分钟级降到秒级。云上再用 AWS Lake Formation 做列级权限,算法和 BI 团队各取所需。

Databricks 机器学习特征平台(Delta Lake)

阶段:特征实验与模型回溯

解决的问题:推荐系统的特征数据需要“一致性”和“可回溯”。用临时表存特征,模型训练时无法回放历史特征,代码上线后想复盘旧模型也没数据可用。

具体案例:推荐团队用 Delta Lake 存储每日特征快照,训练时用时间旅行读取指定日期的表版本,轻松复现实验;特征更新走 Spark 批任务,ACID 保证训练读到的特征和线上一致,Delta Sharing 再把特征安全地共享给下游实验平台。

Python 演示

python26 行
def delta_write(files, base_cost=10, log_cost=4):    total = files * (log_cost + base_cost)    bytes_written = files * (100 + 20)    return total, bytes_written def hudi_write(files, base_cost=10, idx_cost=1):    total = files * (idx_cost + base_cost)    bytes_written = files * (100 + 5)    return total, bytes_written def iceberg_write(files, base_cost=10, meta_cost=3):    total = files * (base_cost + meta_cost)    bytes_written = files * (100 + 30)    return total, bytes_written def report(files):    rows = [('Delta', delta_write), ('Hudi', hudi_write), ('Iceberg', iceberg_write)]    print("模拟写入 %d 个小文件:\n" % files)    print("%-10s %-12s %-12s" % ("框架", "耗时(us)", "写放大"))    for name, fn in rows:        t, b = fn(files)        amp = b / (files * 100)        print("%-10s %-12d %-12.2fx" % (name, t, amp)) if __name__ == "__main__":    report(1000)
目的:用三个函数模拟 Delta(日志+文件)、Hudi(索引+文件)、Iceberg(文件+元数据)三种写入路径的耗时与写放大差异,帮你在选型前建立直觉。
  1. def delta_write(files, base_cost=10, log_cost=4):定义账房先生式写入:每个文件都要附带一条“日志”成本
  2. bytes_written = files * (100 + 20)每个文件 100 字节外,Delta 还要额外写 20 字节日志,这就是它的写放大来源
  3. def hudi_write(files, base_cost=10, idx_cost=1):贴标小哥式写入:索引成本只有 1 字节,写入最轻快
  4. bytes_written = files * (100 + 5)Hudi 的额外索引开销 5 字节,写放大最小(1.05x)
  5. def iceberg_write(files, base_cost=10, meta_cost=3):图书管理员式写入:文件之外还要更新元数据目录
  6. bytes_written = files * (100 + 30)Iceberg 的三层元数据带来 30 字节额外开销,写放大最大(1.30x)
  7. amp = b / (files * 100)写放大系数 = 实际写字节 / 纯数据字节,比值越大越费存储
  8. if __name__ == "__main__":脚本入口,保证被 import 时不自动执行,直接运行时才跑报告

常见误区

误区网上都说 Hudi 用索引定位记录,所以它的写入一定最快,选 Hudi 就万事大吉。

正解Hudi 的索引只解决“记录在哪个文件”的定位问题,写入路径还受表类型影响。MOR 模式写 log 确实快,但读时要合并 log 可能变慢;COW 模式要重写整个文件,写放大可能比 Iceberg 还大。写入性能要看具体表类型、文件大小、是否 upsert,不能拿“有索引”以偏概全。好比贴标签的小哥找食材快,但炒菜快不快还得看锅。

为何常见:把“索引”等同于“加速器”,忽略了写入链路里还有日志、文件重写、合并等多个环节。

误区三框架都支持 ACID 和事务了,数仓是不是该退场了?直接全上数据湖。

正解湖仓一体是趋势,但数据湖框架解决的是“存储层表格式”问题,数据仓库还承担建模方法论、权限体系、成本治理、BI 性能优化等职责。实践中常见的是“湖上建仓”:用 Iceberg/Delta 做底座,上面再跑数仓语义层。好比账房先生再厉害,也得有人设计菜单(建模)和管前厅(BI)。

为何常见:“湖仓一体”四个字容易被误解成“湖替代仓”,其实它是“湖 + 仓”的整合。

误区选型就是定一个框架,从此所有表的 CREATE TABLE 都只能用这一种。

正解生产环境完全可以共存:实时链路用 Hudi、批处理加 BI 用 Iceberg、Databricks 机器学习用 Delta。三者的底层文件都是 Parquet,数据本身可以互读,只是元数据需要工具(如 XTable)做转换。按业务场景分区治理、让合适的表落在合适的框架上,才是大厂常态。

为何常见:选型汇报常被简化成“非 A 即 B”的单选题,让人误以为架构必须“唯一化”,忽略了真实世界是多表并存的。

误区选型时看热度,谁 Star 多、发版快就选谁,还恨不得天天升级到最新版。

正解数据湖是存储底座,稳定优先。新版本可能引入破坏性变更,且生态(引擎兼容、云厂商支持)往往滞后。选型应看:是否 Apache 项目或大厂背书、和当前引擎版本的兼容矩阵、长期维护节奏。热度高只代表关注度高,不代表适合你的场景。

为何常见:互联网“追新”的惯性思维,低估了底层存储对稳定性和兼容性的要求。

面试题

Q1. 三个主流数据湖框架中,由 Netflix 开源并成为 Apache 顶级项目的是?

单选题 · easy

  • A.Delta Lake
  • B.Apache Hudi
  • C.Apache Iceberg← 正确答案
  • D.Apache Spark

答案:C。Iceberg 由 Netflix 为满足大数据分析需求而开源,后捐献 Apache 成为顶级项目。Delta 由 Databricks 开源,Hudi 由 Uber 开源,Spark 是通用计算引擎而非数据湖表格式。

Q2. 依赖“事务日志(Transaction Log)”记录每次写入改动,并提供 ACID 保证的框架是?

单选题 · easy

  • A.Apache Iceberg
  • B.Apache Hudi
  • C.Delta Lake← 正确答案
  • D.Apache Flink

答案:C。Delta Lake 的核心机制是事务日志,每次写入先追加日志再改文件,所有读者以日志最新版本为准,以此实现 ACID。Hudi 靠时间线与索引,Iceberg 靠快照与元数据引用,Flink 是计算引擎。

Q3. 某订单系统需要高频更新已有记录的状态,且要支撑实时分析,最匹配的选型是?

单选题 · mid

  • A.Delta 加 Spark 批量回刷
  • B.Hudi 加 Flink 流式更新← 正确答案
  • C.Hive 外部表定期重建
  • D.原生 Parquet 直接覆盖

答案:B。Hudi 的索引加 MOR 模式专为 upsert 而生,配合 Flink 是实时湖仓的经典组合。Delta 适合批处理为主、Spark 生态强的场景;Hive 和裸 Parquet 都不支持高效更新。

Q4. Iceberg 的“隐藏分区(Hidden Partitioning)”最主要的价值是什么?

单选题 · mid

  • A.让存储成本更低
  • B.让 SQL 与分区布局解耦← 正确答案
  • C.直接提升 CPU 计算速度
  • D.彻底取代数据仓库

答案:B。隐藏分区由元数据自动维护分区布局,用户写 SQL 时不用关心底层目录怎么分,改分区规则也不用重建表。它不是省存储或加速 CPU 的机制,更与数仓替代无关。

Q5. 关于 Hudi MOR(Merge-on-Read)的读写特点,下列说法正确的是?

单选题 · mid

  • A.MOR 写 log 快,读时需合并可能变慢← 正确答案
  • B.Delta 任何场景都比 Iceberg 快
  • C.Iceberg 完全无法做增量读取
  • D.索引越多查询就必然更快

答案:A。MOR 把增量先写入 log 文件,写路径轻快;但读时要合并 base 文件和 log 文件,全表扫描场景反而变慢。性能都是取舍,没有“任何场景都快”的框架。

Q6. 写放大 $W_{amp} = \dfrac{S_{written}}{S_{logical}}$ 中,以下哪种写入路径通常写放大最小?

单选题 · hard

  • A.Delta 全量重写整个目标分区文件
  • B.Iceberg COW 重写涉及的全部文件
  • C.Hudi MOR 新数据追加写 log 文件← 正确答案
  • D.Hive 直接覆盖重建原表文件

答案:C。MOR 只追加不重写,逻辑变更和物理写入几乎等量,所以写放大最小。COW 和全量重写都要写“旧文件的新副本”,写放大明显更大。

Q7. 关于三个主流数据湖框架的事务能力,说法正确的有哪些?

多选题 · easy

  • A.Delta 通过事务日志实现 ACID← 正确答案
  • B.Hudi 用 Timeline 管理提交动作← 正确答案
  • C.Iceberg 靠快照隔离支撑并发← 正确答案
  • D.三者都不支持时间旅行查询

答案:ABC。三框架都支持 ACID 和时间旅行,只是机制不同:Delta 用事务日志,Hudi 用 Timeline,Iceberg 用快照隔离。D 说“都不支持”完全错误,时间旅行是三者的共同卖点。

Q8. Apache Iceberg 的三层元数据包括以下哪些组件?

多选题 · mid

  • A.Metadata File← 正确答案
  • B.Manifest List← 正确答案
  • C.Manifest File← 正确答案
  • D.Transaction Log

答案:ABC。Iceberg 的元数据是 Metadata File → Manifest List → Manifest File 三层结构,逐层索引数据文件。Transaction Log 是 Delta Lake 的核心机制,不是 Iceberg 的组件。

Q9. 关于三框架生态兼容性的说法,正确的有哪些?

多选题 · mid

  • A.Delta 与 Spark 集成最深← 正确答案
  • B.Iceberg 是厂商中立的 Apache 项目← 正确答案
  • C.Hudi 加 Flink 是常见实时湖仓组合← 正确答案
  • D.三框架只能被单一引擎访问

答案:ABC。Delta 由 Databricks 主导、Spark 原生支持;Iceberg 是 Apache 顶级项目、多引擎兼容最广;Hudi 的 Flink 集成成熟。三框架都支持多引擎访问,D 错误。

Q10. 大型电商需要“PB 级存储 + Spark 批处理 + Trino 即席 + 开源可控”,最合理的架构选择是?

单选题 · hard

  • A.全量迁到 Delta 并只用 Spark
  • B.全平台只部署 Hudi 单引擎
  • C.Iceberg 底座再加多引擎接入← 正确答案
  • D.回退 Hive 分区表做批处理

答案:C。多引擎、大容量、开源中立三个条件同时满足时,Iceberg 是最优解:引擎覆盖广、元数据剪枝强、Apache 中立。绑死单一引擎或回退 Hive 都会牺牲架构弹性。