数据湖知识体系概览
什么是数据湖
数据湖(Data Lake)是一种以原始格式存储海量结构化、半结构化和非结构化数据的存储架构。与数据仓库不同,数据湖采用 Schema-on-Read(读时解析),先存后用。
数据湖 vs 数据仓库
| 维度 | 数据仓库 | 数据湖 |
|---|---|---|
| Schema | Schema-on-Write | Schema-on-Read |
| 数据类型 | 结构化 | 结构化 + 半结构化 + 非结构化 |
| 存储成本 | 高(专有存储) | 低(对象存储) |
| 查询性能 | 快(预建模) | 取决于引擎和格式 |
| 使用者 | BI 分析师 | 数据工程师、数据科学家 |
| 典型工具 | Hive、Doris | HDFS、S3、Iceberg |
数据湖的演进
湖仓一体(Lakehouse) 是当前主流趋势,结合数据湖的低成本存储和数据仓库的高性能查询:
| 特性 | 传统数据湖 | 湖仓一体 |
|---|---|---|
| 事务支持 | ❌ | ✅ ACID |
| Schema 演进 | ❌ | ✅ |
| 时间旅行 | ❌ | ✅ |
| 数据质量 | 差(数据沼泽) | 好(约束+治理) |
核心组件
知识导航
| 主题 | 内容 |
|---|---|
| 存储格式 | Parquet/ORC/Avro 对比 |
| Apache Iceberg | 主流表格式、时间旅行、Schema 演进 |
| Delta Lake | Databricks 开源表格式、ACID |
| Apache Hudi | 增量处理、CDC 友好 |
| 湖仓一体 | Lakehouse 架构、选型 |
常见面试问题
Q1: 什么是"数据沼泽"?如何避免?
答案: 数据沼泽(Data Swamp)是数据湖失控后的状态——数据缺乏治理、无元数据、质量差、无人维护。
避免方法:
- 建立元数据管理(数据目录)
- 引入表格式(Iceberg/Delta)确保 Schema 和事务
- 制定数据治理规范
- 使用数据质量检查工具
Q2: 为什么需要表格式(Table Format)?
答案:
- 裸 Parquet 文件缺乏事务、Schema 演进、时间旅行能力
- 表格式在文件之上增加元数据层,提供 ACID、快照、分区演进等能力
- 主流三大表格式:Iceberg、Delta Lake、Hudi