当前位置: 首页 > news >正文

大数据面试问答-数据湖

1. 概念

数据湖(Data Lake):
以原始格式(如Parquet、JSON等)存储海量原始数据的存储库,支持结构化、半结构化和非结构化数据(如文本、图像)。采用Schema-on-Read模式,数据在读取时才定义结构,适合机器学习、探索性分析等场景。

2. 与数仓对比

维度数据仓库数据湖
数据存储处理后的结构化数据原始数据(结构化/半结构化/非结构化)
Schema处理Schema-on-Write(写入时定义结构)Schema-on-Read(读取时定义结构)
处理流程ETL(提取-转换-加载)ELT(提取-加载-转换)
用户群体业务分析师、BI工程师数据科学家、数据工程师
查询性能高性能,优化用于复杂查询依赖计算引擎(如Spark),灵活性高
扩展性垂直扩展为主,成本较高水平扩展,成本较低(基于对象存储)
数据治理严格的数据质量与元数据管理需额外治理(易成“数据沼泽”)
典型技术栈Snowflake、Redshift、BigQuery(现代云数据仓库)AWS S3、Azure Data Lake + Spark/Hive

数据仓库的治理是“被动”的(写入时已结构化),而数据湖的治理是“主动”的(需额外定义元数据和质量规则)。两者的治理目标一致,但数据湖的治理复杂度更高。

2.1 优缺点分析

数据仓库
优点:数据一致性强、查询高效、易于业务用户使用。
缺点:扩展成本高、灵活性差,难以处理非结构化数据。

数据湖
优点:存储成本低、支持多样数据类型、适合探索性分析。
缺点:缺乏内置治理,需额外工具管理元数据和质量(如Apache Atlas、AWS Glue)。

2.2 应用场景

数据仓库:
定期生成标准化报表(如销售月报)。
需要高性能聚合查询的OLAP场景。

数据湖:
机器学习模型训练(需原始数据)。
日志分析、IoT设备数据存储等非结构化处理。

3. Delta Lake与Apache Hudi

两者均属于Lakehouse技术,旨在为数据湖添加数据仓库的管理能力,解决传统数据湖的痛点:
ACID事务:支持并发写入和读一致性。
数据版本控制:时间旅行(Time Travel)功能。
更新/删除:支持CDC(Change Data Capture)场景。
优化查询性能:通过索引、压缩等技术加速分析。

3.1 Delta Lake

背景:由Databricks开源,深度集成Spark生态。

核心功能:
事务日志:通过JSON事务日志(Delta Log)记录所有操作,实现ACID。
Schema演进:支持自动合并Schema变更(如新增列)。
优化工具:OPTIMIZE命令压缩小文件,Z-Order优化数据布局。

用例:
流批一体处理(同一张表同时支持流式写入和批量分析)。
机器学习特征存储(支持版本回滚)。

# 将数据保存为Delta格式  
df.write.format("delta").save("/data/events")  
# 时间旅行查询  
spark.read.format("delta").option("versionAsOf", 10).load("/data/events")  

3.2 Apache Hudi

背景:由Uber开源,强调高效的增量更新和删除。
核心功能:
索引机制:支持布隆过滤器、HBase索引等,快速定位数据文件。
表类型:
Copy-on-Write:更新时重写文件(适合读多写少)。
Merge-on-Read:更新时追加日志文件(适合写密集场景)。

用例:
数据库CDC同步(如MySQL Binlog入湖后更新Hudi表)。
实时数据湖(支持低延迟写入)。

// 写入Hudi表  
hoodieWriteConfig = HoodieWriteConfig.newBuilder().withPath("/data/events").build();  
JavaRDD<HoodieRecord> records = ...;  
client.upsert(records, commitTime);  

相关文章:

  • Codex CLI轻量级 AI 编程智能体 :openai又放大招了
  • 正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真
  • 在pycharm profession 2020.3上安装使用xlwings
  • Ubuntu 安装 MySQL8
  • 游戏通用活动框架
  • C++拷贝构造函数详解
  • Wireshark网络抓包工具基础使用教程
  • 4.5 使用busybox制作根文件系统
  • 开源ERP系统对比:Dolibarr、ERPNext与Odoo
  • AI大模型-解决开发环境配置不足问题
  • [FPGA Video] AXI4-Stream Remapper
  • stm32 hal库 SPI使用(二)硬件SPI的HAL库函数调用
  • spring-- 事务失效原因及多线程事务失效解决方案
  • Flutter——数据库Drift开发详细教程(二)
  • Flutter AppBar 详解
  • “会话技术”——Cookie_(2/2)原理与使用细节
  • 【二叉树】java源码实现
  • 中小企业MES系统概要设计
  • 数字智慧方案6213丨智慧园区规划方案(63页PPT)(文末有下载方式)
  • 【学习笔记】第十章:序列建模:递归神经网络(RNN)
  • 结束北京队与总决赛十年之痒的,为何会是一度被群嘲的许利民
  • 17家A股城商行一季报扫描:青岛银行营收增速领跑,杭州银行净利增速领跑
  • 商务部新闻发言人就中美经贸对话磋商情况答记者问
  • 两部门预拨4000万元支持山西、广西、陕西做好抗旱救灾工作
  • 荣盛发展股东所持1.17亿股将被司法拍卖,起拍价约1.788亿元
  • 上海“模速空间”:将形成人工智能“北斗七星”和群星态势