Data Bricks Delta Lake 入门

Delta Lake 是一个开源存储层,它将关系数据库语义添加到基于 Spark 的数据湖处理中。 适用于 PySpark、Scala 和 .NET 代码的 Azure Synapse Analytics Spark , Azure DataBricks 都支持 Delta Lake。在大数据这个领域,对象存储的最影响效率的问题就是针对对象存储数据的更新,传统的对象存储如AWS 的S3 , Azure的 Blob等如果要更新要给对象数据的时候,必须要先将对象查找到并删除,然后再追加。这通常会导致性能效率低下。Delta Lake很高的的解决了对象数据更新的问题,并同时支持实时数据流的更新,主要功能如下:

  • 支持查询和数据修改的关系表。 使用 Delta Lake,可以将数据存储在支持 CRUD(创建、读取、更新和删除)操作的表中。 换句话说,可以采用与在关系数据库系统中相同的方式选择、插入、更新和删除数据行。
  • 支持 ACID 事务。 关系数据库旨在支持事务数据修改,这些修改提供原子性(事务作为单个工作单元完成)、一致性(事务使数据库保持一致状态)、隔离(进行中的事务不能相互干扰)和持久性(事务完成时,它所做的更改将保留)。 Delta Lake 通过实现事务日志并强制实施并发操作的可序列化隔离,为 Spark 提供相同的事务支持。
  • 数据版本控制和按时间顺序查看。 由于所有事务都记录在事务日志中,因此可以跟踪每个表行的多个版本,甚至使用按时间顺序查看功能在查询中检索某行的先前版本。
  • 支持批处理和流式处理数据。 虽然大多数关系数据库包括存储静态数据的表,但 Spark 包含通过 Spark 结构化流式处理 API 流式处理数据的本机支持。 Delta Lake 表可用作流式处理数据的接收器(目标)和源。
  • 标准格式和互操作性。 Delta Lake 表的基础数据以 Parquet 格式存储,该格式通常用于数据湖引入管道。

以下开始Delta的入门操作:

使用免费的Azure Data Bricks 的工作区,参加如下链接:

利用 Azure Data Bricks的免费资源学习云上大数据-优快云博客

一、创建 Delta Lake 表 

1、从数据帧创建 Delta Lake 表

创建Ddelta Lake表,以增量格式保存数据帧,指定应存储表的数据文件和相关元数据信息的路径

下载试验用数据:

 %sh
 rm -r /dbfs/delta_lab
 mkdir /dbfs/delta_lab
 wget -O /dbfs/delta_lab/products.csv https://raw.githubusercontent.com/MicrosoftLearning/mslearn-databricks/main/data/products.csv

例如:使用现有文件中的数据加载数据帧,然后将该数据帧以增量格式保存到新文件夹位置:

# Load a file into a dataframe
df = spark.read.load('/delta_lab/products.csv', format='csv', header=True)

# Save the dataframe as a delta table
delta_table_path = "/delta/mydata"
df.write.format("delta").save(delta_table_path)

2、验证保存的Delta Lake数据文件

保存 delta 表后,指定的路径位置包括数据的 parquet 文件

%sh 
ls /dbfs/delta/mydata

执行后结果如下:

 可以使用覆盖模式将现有 Delta Lake 表替换为数据帧的内容,如下所示:

new_df.write.format("delt
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI普惠行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值