Apache Iceberg 与 Delta Lake

共 31 题
#

1. Iceberg 通过 manifest list、manifest file 与 data file 三层结构实现 schema 与 partition 演进

A 数据直接存于 manifest 中
B 不支持快照
C 每次写入都重写全部数据文件
D schema/partition 演进只需更新元数据,无需重写 data file ✓ 正确答案
#

2. Iceberg 在 v2+ 支持 row-level delete(positional delete / equality delete)

A v2 不支持删除
B 两种删除都直接改写原文件
C positional delete 记录行号,equality delete 记录等值/主键值 ✓ 正确答案
D positional delete 按主键匹配
#

3. Delta Lake 基于 _delta_log JSON/Checkpoint 记录事务日志

A _delta_log 用 JSON 记录事务,checkpoint 合并状态以加速读取 ✓ 正确答案
B 事务日志只存增量,无需 checkpoint
C 无事务日志,直接改文件
D 不支持版本回放
#

4. Delta Lake 通过 OPTIMIZE + Z-ORDER 优化查询性能

A OPTIMIZE 增加文件数量
B Z-ORDER 只针对单列
C OPTIMIZE 合并小文件,Z-ORDER 按多列排序使数据聚集以提升剪枝效果 ✓ 正确答案
D 两者都不影响查询性能
#

5. Delta Lake Change Data Feed 通过 enableChangeDataFeed 输出 row-level 变更

A CDF 只能输出全量快照
B 需通过 enableChangeDataFeed 开启,输出 row-level 变更供下游消费 ✓ 正确答案
C 开启后无法捕获 UPDATE
D CDF 不依赖版本区间
#

6. Hudi 通过 MOR(Merge On Read)与 COW(Copy On Write)两种表类型适配读写负载

A COW 写快读慢
B COW 写入立即重写文件,读快;MOR 先写 log 读时合并,写快 ✓ 正确答案
C MOR 读快写慢
D 两者读写性能完全相同
#

7. Hudi 主键索引支持 bloom_filter、simple、global_bloom

A bloom_filter 在文件级用 bloom filter 剪枝,global_bloom 扩展到全局 ✓ 正确答案
B simple 索引开销最小且效率最高
C 所有索引都无维护成本
D 索引与 upsert 无关
#

8. Iceberg 强 schema/partition 演进,Delta Lake 强 Unity 生态,Hudi 强增量计算

A 三者完全相同
B Iceberg 强 schema/partition 演进,Delta 强 Unity 生态,Hudi 强增量计算 ✓ 正确答案
C Hudi 强 schema 演进
D Delta 强增量计算
#

9. Trino(原 PrestoDB)通过 connector 接入 Hive、Iceberg、Delta、Kafka、MySQL 等 30+ 数据源

A connector 不支持谓词下推
B Trino 只能查 Hive
C 每种数据源对应一个 connector,通过 SPI 接入并支持跨源联邦查询 ✓ 正确答案
D 多个数据源必须分库查询
#

10. Trino CBO 通过统计信息(Table Statistics)优化 join 顺序

A CBO 不做 join 优化
B CBO 只按语法顺序执行 join
C 统计信息不影响 CBO
D CBO 利用统计信息估算代价,优化 join 顺序 ✓ 正确答案
#

11. Doris Unique Key 模型按主键覆盖写,实现 upsert 语义

A 同一主键保留最新数据,覆盖写入实现 upsert ✓ 正确答案
B 同一主键保留多条历史
C 不支持按主键更新
D 与聚合模型完全相同
#

12. Doris 在 2.x 支持向量化执行引擎与 CBO 强化

A 无 CBO
B 仍用行式逐行执行
C 引入向量化执行引擎并强化 CBO 优化查询 ✓ 正确答案
D 性能无提升
#

13. StarRocks 由 Apache Doris 分支演进,采用 CBO 与向量化执行

A 由 Apache Doris 分支演进,采用 CBO 与向量化执行 ✓ 正确答案
B 与 Doris 完全无关
C 只支持行存
D 无 CBO
#

14. StarRocks 通过 CBO 优化 join 顺序与执行计划

A 不估算代价
B 只按语法顺序执行
C 基于统计信息估算代价并选择最优 join 顺序与执行计划 ✓ 正确答案
D 无执行计划优化
#

15. StarRocks 提供物化视图自动改写

A 物化视图需用户手动改写 SQL
B 优化器可自动把匹配查询改写为从物化视图读取以加速 ✓ 正确答案
C 物化视图不预计算
D 自动改写不可用
#

16. Iceberg Time Travel 通过 snapshot-id 或 timestamp 回溯历史版本

A 不支持审计
B 只能读最新数据
C 快照会覆盖历史
D 通过 snapshot-id 或 timestamp 回溯历史快照版本 ✓ 正确答案
#

17. Iceberg 通过 partition spec evolution 修改分区策略而不重写数据

A 分区演进必须全表重写
B 修改分区策略无需重写历史数据,新旧 spec 并存 ✓ 正确答案
C 只能有一个固定分区 spec
D 不支持分区演进
#

18. Iceberg REST Catalog 提供跨引擎元数据共享(Spark/Flink/Trino)

A 只支持 Spark
B 每个引擎各自维护独立元数据
C 通过 REST API 统一管理元数据,供 Spark/Flink/Trino 共享 ✓ 正确答案
D 不支持多引擎协同
#

19. Delta Lake 在 3.x 引入 Delta UniForm 实现 Iceberg/Parquet 多格式兼容

A UniForm 会复制数据到新格式
B 让同一份 Delta 表同时兼容 Iceberg/Hudi 格式,无需复制数据 ✓ 正确答案
C 只支持 Parquet 单格式
D 与 Iceberg 无法互操作
#

20. Delta Lake Time Travel 通过 VERSION AS OF 或 TIMESTAMP AS OF

A 历史版本不依赖文件保留
B 只能读最新版本
C 通过 VERSION AS OF 或 TIMESTAMP AS OF 回溯历史版本 ✓ 正确答案
D 不支持审计
#

21. Hudi 通过 timeline (.hoodie 目录) 记录 commit、clean、replace 等事件

A timeline 只记录新文件
B .hoodie 目录按时间记录 commit/clean/replace 等事件,驱动增量计算 ✓ 正确答案
C 无 clean 事件
D timeline 与版本无关
#

22. Hudi 在 0.14+ 支持 record-level index(Flink 集成)

A 在文件内维护记录级主键映射,加速 upsert 定位,配合 Flink 集成 ✓ 正确答案
B 只支持文件级索引
C 与 Flink 无关
D 不加速 upsert
#

23. Hudi 与 Flink 集成支持 Streaming Query

A 只支持批量
B 支持流式写/流式读,基于 timeline 增量消费实现 Streaming Query ✓ 正确答案
C 无法增量读取
D 与流式无关
#

24. 三者在 catalog 互通方面均处于演进阶段,REST Catalog 成为标准接口

A 三者 catalog 完全隔离
B REST Catalog 成为跨引擎标准元数据接口,推动三者互通 ✓ 正确答案
C 无统一接口
D 引擎各自独立元数据无需互通
#

25. 三者在 time travel 与 schema enforcement 上语义略有差异

A 三者 time travel 完全相同
B Iceberg 用快照、Delta 用版本日志、Hudi 用时间线,schema 严格度不同 ✓ 正确答案
C 三者 schema 约束完全相同
D 三者都不支持 time travel
#

26. Trino Coordinator/Worker 架构支持弹性扩容,Worker 通过 SPI 注册 connector

A Coordinator 调度、Worker 无状态执行可弹性扩容,connector 通过 SPI 注册 ✓ 正确答案
B Worker 有状态不可扩展
C connector 无法动态注册
D 所有节点都做规划
#

27. PrestoSQL(已停止维护)与 Trino 分叉后,Trino 成为社区主流

A Trino 已停止维护
B PrestoSQL 仍是最主流
C 两者无分叉历史
D 两者分叉后 Trino 由核心团队持续主导,成为社区主流 ✓ 正确答案
#

28. Iceberg 的时间旅行与 ACID 语义如何在文件层面实现(Manifest/快照)?

A 快照不可读
B 直接改写文件实现更新
C 无并发控制
D 通过不可变文件 + 快照 manifest + 原子更新元数据指针实现 ACID 与时间旅行 ✓ 正确答案
#

29. 湖仓一体中"数据回写/更新"与数据湖的不可变文件如何协调?

A 更新通过写新文件 + 元数据标记旧文件删除实现,配合 compaction 回收 ✓ 正确答案
B 更新直接改写原文件
C 不可变文件无法更新
D 更新无需元数据
#

30. Trino 的 spill-to-disk 机制在内存不足时落盘到 S3/HDFS

A 无法缓解内存不足
B 落盘不耗 IO
C 只用于写结果
D 内存不足时把中间结果落盘到 S3/HDFS 等路径,防止查询失败 ✓ 正确答案
#

31. Hudi 的 MOR/COW 表与 Iceberg 的更新语义差异?

A Hudi 无 COW/MOR 区分
B 两者更新机制完全相同
C Iceberg 不更新
D Hudi 用 COW/MOR 选择读写权衡,Iceberg 用 delete 文件 + 快照实现更新 ✓ 正确答案