【详谈 Delta Lake】系列专题 之 特性 - 02 Python API 在数据表上操作/ Time Travel 功能...

本文详细介绍了如何使用Python API在Delta Lake数据表上进行操作,包括加载、保存、更新、删除数据,以及如何利用Time Travel功能查询历史版本。通过实例展示了Delta Lake在大数据湖中的优势,如ACID事务、多版本并发控制和数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

译者

张鹏(卓昇),阿里云计算平台事业部技术专家。

前言

本文翻译自大数据技术公司 Databricks 针对数据湖 Delta Lake 系列技术文章。众所周知,Databricks 主导着开源大数据社区 Apache Spark、Delta Lake 以及 ML Flow 等众多热门技术,而 Delta Lake 作为数据湖核心存储引擎方案给企业带来诸多的优势。


此外,阿里云和 Apache Spark 及 Delta Lake 的原厂 Databricks 引擎团队合作,推出了基于阿里云的企业版全托管 Spark 产品 —— Databricks 数据洞察,该产品原生集成企业版 Delta Engine 引擎,无需额外配置,提供高性能计算能力。有兴趣的同学可以搜索` Databricks 数据洞察`或`阿里云 Databricks`进入官网,或者直接访问以下链接进行了解:

https://www.aliyun.com/product/bigdata/spark 

本系列还包括其他内容,欢迎持续关注:


Delta Lake技术系列 - 特性(Features)

——使用 Delta Lake 稳定的特性来可靠的管理您的数据


Chapter-02 使用Python API在Delta Lake数据表上进行简单,可靠的更新和删除操作

在本章中,我们将演示在飞机时刻表的场景中,如何在 Delta Lake 中使用 Python 和新的 Python API。我们将展示如何新增,更新和删除数据,如何使用 time travle 功能来查询旧版本数据,以及如何清理较旧的版本。

Delta Lake使用入门

Delta Lake 软件包可以通过 PySpark 的-- packages 选项来进行安装。在我们的示例中,我们还将演示在 VACUUM 文件和 Apache Spark 中执行 Delta Lake SQL 命令的功能。由于这是一个简短的演示,因此我们还将启用以下配置:

spark.databricks.delta.retentionDurationCheck.enabled=false

允许我们清理文件的时间短于默认的保留时间7天。注意,这仅是对于 SQL 命令 VACUUM 是必需的。

spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension

在 Apache Spark 中启用 Delta Lake SQL 命令;这对于 Python 或 Scala API 调用不是必需的。

# Using Spark Packages
./bin/pyspark --packages io.delta:delta-core_2.11:0.4.0 --conf “spark. databricks.delta.retentionDurationCheck.enabled=false” --conf “spark. sql.extensions=io.delta.sql.DeltaSparkSessionExtension”


Delta Lake数据的加载和保存

这次将使用准时飞行数据或离港延误数据,这些数据是从RITA BTS航班离岗统计中心生成的;这些数据的一些示例包括 2014 Flight Departure Performance via d3.js Crossfilter 和 针对Apache Spark的具有图形化结构的准时飞行数据。在 PySpark 中,首先读取数据集。

# Location variables
tripdelaysFilePath = “/root/data/departuredelays.csv” 
pathToEventsTable = “/root/deltalake/departureDelays.delta”


# Read flight delay data 
departureDelays = spark.read \ 
.option(“header”, “true”) \ 
.option(“inferSchema”, “true”) \ 
.csv(tripdelaysFilePath)

接下来,我们将离港延迟数据保存到 Delta Lake 表中。在保存的过程中,我们能够利用它的优势功能,包括 ACID 事务,统一批处理,streaming 和 time travel 。

# Save flight delay data into Delta Lake format 
departureDelays \
.write \
.format(“delta”) \
.mode(“overwrite”) \ 
.save(“departureDelays.delta”)

注意,这种方法类似于保存 Parquet 数据的常用方式。现在您将指定格式(“ delta ”)而不是指定格式(“ parquet ”)。如果要查看基础文件系统,您会注意到为 Delta Lake 的离港延迟表创建了四个文件。

/departureDelays.delta$ ls -l
.
..
_delta_log 
part-00000-df6f69ea-e6aa-424b-bc0e-f3674c4f1906-c000.snappy.parquet 
part-00001-711bcce3-fe9e-466e-a22c-8256f8b54930-c000.snappy.parquet 
part-00002-778ba97d-89b8-4942-a495-5f6238830b68-c000.snappy.parquet 
Part-00003-1a791c4a-6f11-49a8-8837-8093a3220581-c000.snappy.parquet

现在,让我们重新加载数据,但是这次我们的数据格式将由 Delta

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值