
1) 【一句话结论】数据湖是存储原始多源数据的平台(未加工),数据仓库是结构化、已处理的数据集合(用于分析);智慧城市因数据多样性(视频、传感器等非结构化数据)和灵活性需求,选择数据湖架构更适配,可支持多场景、复杂分析。
2) 【原理/概念讲解】数据湖(Data Lake):定义是存储所有结构化、半结构化、非结构化原始数据的平台,像“水库”,直接接收原始数据(如视频文件、日志、传感器数据),不进行清洗或转换,数据以原始格式(如JSON、CSV、视频流)存储。数据仓库(Data Warehouse):定义是经过数据清洗、转换、建模后的结构化数据集合,用于支持业务分析、报表生成,数据以预定义的模式(如关系型数据库表、星型模型)存储。类比:数据湖是“原始河流汇入的湖泊”,所有河流(数据源)直接流入,未过滤;数据仓库是“经过过滤、分类的河流”,只有符合分析需求的河流(数据)进入,用于特定用途(如灌溉、发电)。
3) 【对比与适用场景】
| 特性/场景 | 数据湖 | 数据仓库 |
|---|---|---|
| 定义 | 存储原始、未加工的多源数据(结构化/半/非结构化) | 经过清洗、转换、建模的结构化数据 |
| 数据形态 | 原始(如视频、日志、传感器数据) | 结构化(如关系型表、星型模型) |
| 存储方式 | 对象存储(如HDFS、S3)、文件系统 | 关系型数据库、列式数据库 |
| 处理方式 | ELT(提取-加载-转换,数据加载后处理) | ETL(提取-转换-加载,数据加载前处理) |
| 使用场景 | 数据探索、机器学习、数据科学、实时分析 | 业务报表、决策支持、OLAP分析 |
| 注意点 | 需要数据治理(元数据、数据质量) | 数据更新周期长,不适合实时分析 |
4) 【示例】智慧城市视频监控数据存储:
假设城市视频数据存储在数据湖中,通过对象存储上传:
putObject("city-data/videos/2023-10-01/01:00:00/video1.mp4", video_file)
然后,用Spark处理分析,提取异常事件(如交通事故、人员聚集)。伪代码:
spark.read.format("binaryFile").load("city-data/videos/2023-10-01").filter("fileSize > 100MB").show()
5) 【面试口播版答案】
数据湖和数据仓库的核心区别在于数据是否经过加工以及存储形态。数据湖是存储原始、多源数据的平台,像“水库”直接接收所有原始数据(如视频、传感器日志),不进行清洗或转换;数据仓库则是经过清洗、转换后的结构化数据,用于支持业务分析。在智慧城市项目中,选择数据湖架构的原因是数据多样性(包含视频、文本、传感器等非结构化数据)和灵活性需求。数据湖可以灵活存储所有原始数据,再通过技术(如Spark、Flink)进行实时或批量处理,支持机器学习、异常检测等复杂分析,降低前期数据结构化成本,适配智慧城市中多场景、多变的需求。
6) 【追问清单】
7) 【常见坑/雷区】