1. 数据湖概述:什么是数据湖、数据湖与数据仓库的区别、数据湖的核心价值
各位同学,咱们直接进入正题。
数据湖这个概念,这几年被炒得很热。但说实话,我见过不少团队,上了数据湖之后反而比之前更乱。为什么?因为没搞清楚它到底是什么,能干什么,不能干什么。
这一节,咱们就把数据湖的底裤扒干净。不讲虚的,只讲我在一线踩过的坑和沉淀下来的经验。
1.1 什么是数据湖?
数据湖,说白了就是一个集中存储的地方。它允许你以原始格式保存海量数据,不管数据是结构化的、半结构化的,还是完全非结构化的。
你想想看,传统数据库就像一个个精致的收纳盒。你得先把数据整理好、分类好,才能放进去。但数据湖不一样,它更像一个巨大的仓库。你可以先把所有东西扔进去,等要用的时候再分类、再加工。
核心定义:数据湖是一种以原始格式存储数据的系统或存储库,通常采用对象存储(如 AWS S3、阿里云 OSS、HDFS)作为底座,支持对数据进行批处理、流处理、交互式分析等多种计算模式。
我在项目中遇到过一家电商公司,他们每天产生几十种日志、交易数据、用户行为数据。如果用传统数仓,光建模就要花两周。后来上了数据湖,所有原始数据先一股脑存进去,后面再慢慢清洗、建模。效率提升很明显。
数据湖的几个关键特征:
- 存储与计算分离:存储是存储,计算是计算。你可以用 Spark 算,也可以用 Presto 查,互不影响。
- Schema-on-Read:写入时不强制定义 schema,读取时才解析。灵活性极高。
- 支持多种数据类型:JSON、CSV、Parquet、Avro、图片、视频、日志……来者不拒。
- 可扩展性:从 TB 到 PB,甚至 EB 级别,理论上没有上限。
我的习惯:在搭建数据湖之前,先想清楚数据入湖的格式。我个人强烈推荐使用列式存储格式(Parquet/ORC),压缩率高,查询性能好。纯 JSON 入湖?嗯,那是给自己挖坑。
1.2 数据湖与数据仓库的区别
这个问题,面试必问,实战中也经常被混淆。我直接给你一张对比表,一目了然。
| 维度 | 数据仓库 | 数据湖 |
|---|---|---|
| 数据形态 | 结构化、经过清洗和转换 | 原始格式,结构化/半结构化/非结构化 |
| Schema | Schema-on-Write(写入时定义) | Schema-on-Read(读取时定义) |
| 处理方式 | ETL(抽取-转换-加载) | ELT(抽取-加载-转换) |
| 主要用户 | 业务分析师、报表用户 | 数据科学家、数据工程师、分析师 |
| 典型场景 | 固定报表、BI 分析、KPI 监控 | 机器学习、探索性分析、日志处理 |
| 存储成本 | 较高(需要预处理和索引) | 较低(对象存储,按量付费) |
| 数据质量 | 高(经过严格治理) | 参差不齐(原始数据,需要治理) |
看到这张表,你可能会问:那是不是数据湖要取代数据仓库了?
别急。我个人的观点是:两者不是替代关系,而是互补关系。
数据湖负责「存得下、存得全」,数据仓库负责「查得快、查得准」。一个现代化的数据架构,往往是数据湖+数据仓库的融合体——也就是所谓的 Lakehouse 架构。这个后面我们会详细讲。
我曾经踩过的坑:有个项目,团队一上来就把所有数据湖当成数据仓库用,直接在上面跑复杂的 BI 报表。结果查询慢得要命,还被业务部门投诉。后来我们加了分层和索引,才把性能拉回来。记住,数据湖不是银弹,它有自己的适用场景。
1.3 数据湖的核心价值
聊完概念和区别,咱们来点实在的。数据湖到底能给你带来什么?我总结了四点。
- 打破数据孤岛:企业里各个系统都有自己的数据库,数据湖能把它们统一到一个地方。你想想看,CRM 的数据、ERP 的数据、日志数据、IoT 数据,以前要联合分析得费多大劲?现在全扔进湖里,一个查询搞定。
- 支持高级分析:机器学习、深度学习、实时推荐……这些场景需要大量原始数据。数据湖提供了这个基础。我在做用户画像项目时,就是直接从数据湖里取原始行为数据,训练模型效果比用聚合数据好很多。
- 降低存储成本:对象存储的成本远低于传统数仓或 SAN 存储。对于海量历史数据,数据湖几乎是唯一经济可行的方案。
- 提升数据可用性:数据入湖后,可以被多种引擎消费。同一份数据,Spark 用来做批处理,Flink 用来做流处理,Presto 用来做即席查询。互不干扰,各取所需。
一句话总结:数据湖的核心价值不在于「存」,而在于「用」。存只是手段,让数据能被灵活、高效、低成本地使用,才是目的。
1.4 数据湖生命周期与冷热分层概览
这一节最后,我画了一张图,帮你建立对整门课程的全局认知。
这张图展示了整门课程的核心脉络。从数据源开始,经过入湖,然后根据访问频率进行冷热分层,最后通过生命周期管理实现数据的自动迁移和清理。每一层都有不同的存储策略、计算策略和治理策略。
后面的章节,我们会逐一深入每个环节。包括如何设计分层策略、如何选择存储介质、如何实现自动化迁移、以及如何保证数据质量。
一个小建议:在学习后续内容之前,先把这一节的概念吃透。尤其是数据湖和数据仓库的区别,很多人面试时能背出来,但实际做项目时还是混着用。记住一句话:数据湖是「先存后想」,数据仓库是「先想后存」。