探索Delta Lake:构建Lakehouse数据平台

在当今的数据平台构建领域,Lakehouse已成为一个热门话题。企业逐渐开始采用Lakehouse来构建其数据生态系统,因为它们提供了数据湖的成本效益和数据仓库的性能。

Lakehouse背后的核心技术

Lakehouse背后的核心技术是开放的表格式或存储框架,这使得它们能够具备类似数据仓库的能力。目前,企业和产品供应商主要使用三种表格式来提供Lakehouse能力,它们是:

  • Delta Lake by Databricks(也在Linux Foundation下开源)
  • Apache Hudi
  • Apache Iceberg

Delta Lake简介

Delta Lake格式是一个开放的存储框架,它帮助构建一个可靠的Lakehouse数据平台。它使得云对象存储(如Amazon S3或Azure ADLS)具备ACID、时间旅行和模式演变等关键特性,这些特性对于实现Lakehouse至关重要。

Delta Lake实验前的准备

将使用Databricks Notebooks进行实验,并使用Python和SQL语言。用户应具备以下技术和平台的基本了解:

  • Python
  • PySpark
  • SQL
  • Notebooks

即使不了解Databricks,也没关系。可以按照分步过程来实现这个实验,并且应该能够顺利完成!

实验设置

  1. 在Databrick Community Edition注册账户:
  2. 创建Spark集群以执行笔记本:登录到Databricks工作空间后,首先创建一个集群。这可以通过点击左侧面板中的“Compute”标签来完成。
  3. 创建一个新的笔记本:一旦集群创建完成(可能需要几分钟),可以使用左侧面板中的“Create >> Notebook”选项来创建一个新的笔记本。
  1. CREATE TABLE IF NOT EXISTS avengers (id int, role string, name string)创建一个简单的Delta表,这是任何Delta Lake实现的起点。
  2. describe detail avengers描述表以获取更多信息。
  3. %python display(dbutils.fs.ls("dbfs:/user/hive/warehouse/avengers"))检查表位置,看看是否创建了任何文件或日志。
  4. %python display(dbutils.fs.ls("dbfs:/user/hive/warehouse/avengers/_delta_log/"))检查Delta文件夹的内容,看看是否有任何文件。
  5. display(spark.sql(f"SELECT * FROM json.`/user/hive/warehouse/avengers/_delta_log/00000000000000000000.json`"))探索Delta日志中的JSON文件。
  6. insert into avengers values (001, 'Captain America', 'Steve Rogers')向Delta表中添加一条新记录并检查表位置。
  7. delete from avengers where id=001删除记录并检查表。
  8. SELECT * FROM avengers VERSION AS OF 1;使用版本号进行时间旅行。
  9. DESCRIBE HISTORY avengers;获取插入记录的时间戳,并使用时间戳进行时间旅行。
  10. drop table avengers;删除表以清理数据。
  • Delta Lake是一个用于实现Lakehouse解决方案的开放存储格式。
  • Databricks可以用来使用Delta格式创建表。
  • 每个Delta表都会创建一个事务日志,称为Delta日志。
  • Delta日志可以用来为数据湖添加ACID能力。
  • Delta还支持通过版本号或时间戳进行时间旅行功能。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485