
1) 【一句话结论】数据湖与数据仓库的核心区别在于数据湖存储原始多源异构数据(含非结构化),数据仓库存储经主题化、集成、时变处理的结构化数据。在湖北大数据集团为政府机构提供解决方案的场景中,数据湖适用于处理海量非结构化数据(如政务视频、物联网流数据)和实时分析需求,数据仓库适用于结构化报表、历史追溯(如人口趋势分析),选择依据是业务数据类型、实时性要求及数据治理能力。
2) 【原理/概念讲解】数据仓库是面向主题、集成、时变、非易失的数据集合,用于支持管理决策。其“时变”特性体现在历史数据保留(如人口数据需保留5年以支持长期趋势分析)和新数据每日追加(通过ETL工具如Apache NiFi加载),例如每月的政务事项完成率数据每日更新,历史数据保留以支持趋势分析。数据湖存储原始、未加工的多源数据(包括结构化JSON传感器数据、非结构化视频流),采用Parquet格式存储以优化存储和查询,核心是“原始”和“灵活”,无需提前定义结构,后续可通过流处理(如Spark Streaming)或批处理(如Spark)进行探索性分析。类比:数据仓库像“整理好的档案室”,数据湖像“未整理的仓库,所有原始文件都存这里,后续再整理”。
3) 【对比与适用场景】
| 维度 | 数据仓库 | 数据湖 |
|---|---|---|
| 定义 | 结构化数据存储与分析 | 原始多源数据(结构化/非结构化)存储 |
| 特性 | 结构化、主题化、集成、时变(每日/每周ETL加载) | 原始、多源、灵活、非结构化为主(流处理秒级延迟) |
| 使用场景 | 结构化报表(月度统计)、历史追溯(如人口数据5年趋势) | 非结构化数据处理(政务视频监控)、实时流处理(物联网传感器)、探索性分析(新业务模式挖掘) |
| 注意点 | 数据治理要求高(清洗、转换、主题化)、更新延迟(每日/每周ETL,延迟高) | 数据治理要求相对低(先存后处理)、处理延迟可接受(流处理秒级延迟,如实时异常检测) |
| 性能 | 列式存储查询性能高(如ClickHouse) | 批处理效率高,流处理延迟秒级(适合非实时分析) |
| 成本 | 维护成本高(ETL工具、存储优化) | 存储成本低(HDFS),处理成本高(计算资源) |
4) 【示例】以湖北某市政府的“智慧城市”解决方案为例:
# 写入原始视频流到HDFS
from hdfs import InsecureClient
hdfs_client = InsecureClient('hdfs://namenode:9000')
with hdfs_client.write('/data/government/video/20240501/monitor_001.mp4', overwrite=True) as writer:
with open('local_video/monitor_001.mp4', 'rb') as f:
writer.write(f.read())
# 后续处理:Spark Streaming检测异常并写入仓库
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("VideoProcessing").getOrCreate()
from pyspark.streaming import StreamingContext
ssc = StreamingContext(spark.sparkContext, 1)
video_stream = ssc.textFile("hdfs://namenode:9000/data/government/video/*")
processed_data = video_stream.filter(lambda x: "red_light" in x).map(lambda x: {"event_id": x, "time": "2024-05-01T10:30:00"})
processed_data.write.format("parquet").save("/data/warehouse/processed_events")
from nifi import NiFi
nifi = NiFi('nifi-server:8080')
nifi.add_process("load_structured_data", {
"source": "database",
"destination": "clickhouse",
"query": "INSERT INTO monthly_reports (report_id, completion_rate) VALUES ('202405', 95.2)"
})
5) 【面试口播版答案】
“面试官您好,数据湖与数据仓库的核心区别在于数据湖存储原始多源异构数据(包括非结构化视频、结构化传感器数据),数据仓库存储经过主题化、集成、时变处理的结构化数据。在为政府提供解决方案时,比如处理政务视频监控这类海量非结构化数据,数据湖更适用——它能灵活存储原始视频流,后续通过流处理分析异常事件;而处理结构化的月度政务事项完成率报表时,数据仓库更合适——它能通过每日ETL加载提供高效查询。选择依据是业务需求:非结构化/实时流用数据湖,结构化报表用数据仓库,同时考虑数据治理能力。”
6) 【追问清单】
7) 【常见坑/雷区】