侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

解释数据湖的基本概念及其与传统数据仓库的主要区别

2025-12-12 / 0 评论 / 6 阅读

题目

解释数据湖的基本概念及其与传统数据仓库的主要区别

信息

  • 类型:问答
  • 难度:⭐

考点

数据湖定义,数据湖与数据仓库区别,数据湖核心特征

快速回答

数据湖的核心要点:

  • 定义:集中存储原始数据的系统,支持结构化/半结构化/非结构化数据
  • 存储方式:按原始格式存储(如Parquet/JSON/CSV),模式在读取时定义(Schema-on-Read)
  • 关键区别
    • 数据仓库存储清洗后的结构化数据,数据湖保留原始数据
    • 数据仓库需要预定义模式(Schema-on-Write),数据湖更灵活
    • 数据湖成本更低且支持更丰富的数据类型
## 解析

1. 数据湖核心原理

数据湖是一个集中式存储库,允许以原始格式存储任意规模的数据(结构化、半结构化、非结构化)。核心设计原则:

  • Schema-on-Read:写入时不强制定义数据结构,分析时按需解析
  • 低成本存储:通常基于对象存储(如AWS S3、Azure Blob Storage)
  • 多计算引擎支持:Spark/Presto/Hive等均可直接访问原始数据

2. 与数据仓库的关键区别

对比维度数据湖数据仓库
数据类型支持所有类型(日志/图片/JSON等)仅结构化数据
Schema策略Schema-on-Read(读时定义)Schema-on-Write(写时定义)
存储成本低(原始格式存储)较高(需ETL处理)
处理延迟支持实时+批处理通常批处理为主

3. 最佳实践示例

数据写入代码(Python + PySpark):

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("DataLakeIngest").getOrCreate()

# 原始JSON数据直接写入数据湖(无模式转换)
raw_data = spark.read.json("s3://raw-bucket/logs/*.json")
raw_data.write.parquet("s3://data-lake/raw/logs/")  # 转换为列式存储格式

最佳实践:

  • 使用Parquet/ORC等列式格式提升查询性能
  • 按业务分区存储(如 s3://data-lake/sales/year=2023/month=08/
  • 元数据管理工具(如AWS Glue Data Catalog)

4. 常见错误

  • 数据沼泽:缺乏元数据管理导致数据无法查找
  • 过度存储:保留无价值的原始数据造成成本浪费
  • 安全疏忽:未设置细粒度访问控制(如S3桶策略错误)

5. 扩展知识

  • 现代架构:Lakehouse架构(Delta Lake/Iceberg)结合湖与仓优势
  • 典型组件
    • 存储层:S3/ADLS/HDFS
    • 元数据层:Hive Metastore/AWS Glue
    • 计算层:Spark/Trino/Flink