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

【Azure 架构师学习笔记】- Azure Databricks (15) --Delta Lake 和Data Lake

本文属于【Azure 架构师学习笔记】系列。
本文属于【Azure Databricks】系列。
接上文 【Azure 架构师学习笔记】- Azure Databricks (14) – 搭建Medallion Architecture part 2

前言

ADB 除了UC 这个概念之外,前面【Azure 架构师学习笔记】- Azure Databricks (12) – Medallion Architecture简介中也提到了lakehouse, 那么现在再深入一下了解ADB 的lakehouse。同时看看Data Lake和Delta Lake之间的区别与联系。
Data Lake是一个中央存储库,存储和处理原始数据
Delta Lake则是一个开源的,针对数据存储的“表结构”。对比起Data Lake, 它通过支持ACID,架构演变数据版本控制等多个特性来提升数据存储中的各种能力。
Data Lake 是一个通用术语,描述了数据存储方法。
Delta Lake 是一种特定的开源技术。数据使用delta lake技术存储在delta 表中。使数据更加安全和高性能。这种技术通常就跟lakehouse架构相关联。
在Delta lake中,如果你的data lake包含了非表格数据, 那么还要把它们存进表中。

Data lake

数据湖是把数据环境类比成一个湖(中央存储),有多条河流(数据流)流入到湖中。这些数据流最终都流到同一个地方,无需严格的预定义结构。它的出现主要是应对数据仓库这种需要预定义架构的存储模式。数据仓库对特定的查询进行了性能优化,意味着以牺牲灵活性为代价提高速度。另外由于不同的供应商有专用数据存储格式,意味着你可能会被供应商“绑架”。

相比数据仓库, 数据湖针对灵活性进行优化,对数据存储没有格式要求,同时也支持不需要复杂昂贵的预处理的数据分析。

在这里插入图片描述

数据沼泽

数据湖提供了灵活度和相对低廉的存储价格,各方异构数据都可以简单直接地存储到单一位置。但是当数据不停增长,这样的灵活就可能带来问题,比如文件的版本跟踪,数据架构,数据恢复等。
这种情况将会使得数据湖,退化成数据沼泽。导致下游应用的“数据源”变得不准确或者需要花费大量成本进行清洗才能使用。

Delta Lake

Delta lake 可以运行在已有的data lake 基础架构之上。它把数据以parquet文件格式存储在后台。
从磁盘上看Delta Lake的文件存储将会试一下结构,有文件夹,包含了事务日志,数据的变更记录,delta 表的分区。

your_delta_table/		<-- 	this is the top-level table directory
_delta_log			    <-- 	this is the transaction log which tracks
    00.json				        all the changes to your data
    01.json
    …
    n.json
file1.parquet			<-- 	these are your Delta table partitions,
file2.parquet				    ordered for maximum query performance
…
fileN.parquet

Delta Lake 相对于 Data Lake的优势

  • ACID: 跟数据库的ACID 类似, 想象一下当你使用集群向Data Lake写入数据,如果此时集群中途崩溃了,数据文件会以损坏或者只有部分存储到datalake上。你需要手动识别并清理这些残缺文件然后重跑。但是对于Delta lake, 则会把整个写操作回退,而不写入到存储上。
  • 性能:Parquet格式文件,在很多大数据应用上都远比其他类型的格式快得多,因为其具有一些如压缩,列存储等特点。同时Delta Lake对其进行了一些改进,使其更加适合lakehouse。
  • 文件搜索:在data lake中读取数据需要先列出所有的文件,非常耗时,特别是云环境这种使用Key-value 存储的文件系统。KV 存储在范围扫描过程中速度远不如其他系统,它更适合精确查找。Delta Lake 则通过预先把路径存储到Parquet的事务日志中,减少全量扫描的开销从而加快文件搜索。
  • 元数据:在Data Lake的parquet 文件存储每个文件关于列的元数据, 这些元数据包含每个行组内列的最大,最小值,每一次查询范围数据都不得不遍历所有文件。在Delta Lake中,对parquet进行了改进把这些元数据独立存储在单个事务日志文件中,减少扫描的范围和数量。
  • 架构演变:由于输入的数据总是在变,你不能总是知道最后数据集的架构,或某种原因你需要增减列。在Delta lake中通过write.option(“mergeSchema”,“true”)的方式来实现即可。
    除此之外,还有包括版本控制等优点,就不一一列举。

小结

下一文将介绍一下DataBricks在Delta方面的知识。

http://www.dtcms.com/a/49226.html

相关文章:

  • Python-07PDF转Word
  • SpringCloud系列教程(十二):网关配置动态路由
  • Netty笔记3:NIO编程
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序
  • 【深入OpenCV图像处理:从基础到实战应用】
  • 内网渗透信息收集linuxkali扫描ip段,收集脚本(web安全)
  • 电子知识笔记—电磁炉单管、持续加热单管和半桥驱动方案解析
  • langchain 中 RecursiveUrlLoader 使用
  • 【华为OD机考】华为OD笔试真题解析(16)--微服务的集成测试
  • Hi3516CV610车牌识别算法源码之——车牌识别算法初体验
  • 电商智能客服实战(一)---概要设计
  • 2025嵌入式软件开发工程师--音频方向
  • 灵鸢系统,引领车与无人机深度融合新潮流
  • 网络基础概述
  • 【现代前端框架中本地图片资源的处理方案】
  • c++ std::basic_string_view、std::span使用笔记
  • SpringAI 调用本地ollama大模型
  • C++:四大强制类型转换
  • Redis7——进阶篇(二)
  • VirtualBox虚拟机转VM虚拟机
  • AIGC(生成式AI)试用 25 -- 跟着清华教程学习 - DeepSeek+DeepResearch让科研像聊天一样简单
  • 2025-03-01 学习记录--C/C++-C语言 使用欧几里得算法(辗转相除法)计算两个整数的最大公约数
  • 【2025年15期免费获取股票数据API接口】实例演示五种主流语言获取股票行情api接口之沪深A股解禁限售数据获取实例演示及接口API说明文档
  • 基于eRDMA实测DeepSeek开源的3FS
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.2.3案例:电商订单日志每秒10万条写入优化
  • C# OnnxRuntime部署DAMO-YOLO人头检测
  • Spring Boot全局异常处理:“危机公关”团队
  • 【星云 Orbit • STM32F4】04.一触即发:GPIO 外部中断
  • 560.和为 K 的子数组
  • spring boot + vue 搭建环境