在当今的数据平台构建领域,Lakehouse已成为一个热门话题。企业逐渐开始采用Lakehouse来构建其数据生态系统,因为它们提供了数据湖的成本效益和数据仓库的性能。
Lakehouse背后的核心技术是开放的表格式或存储框架,这使得它们能够具备类似数据仓库的能力。目前,企业和产品供应商主要使用三种表格式来提供Lakehouse能力,它们是:
Delta Lake格式是一个开放的存储框架,它帮助构建一个可靠的Lakehouse数据平台。它使得云对象存储(如Amazon S3或Azure ADLS)具备ACID、时间旅行和模式演变等关键特性,这些特性对于实现Lakehouse至关重要。
将使用Databricks Notebooks进行实验,并使用Python和SQL语言。用户应具备以下技术和平台的基本了解:
即使不了解Databricks,也没关系。可以按照分步过程来实现这个实验,并且应该能够顺利完成!
CREATE TABLE IF NOT EXISTS avengers (id int, role string, name string)
创建一个简单的Delta表,这是任何Delta Lake实现的起点。describe detail avengers
描述表以获取更多信息。%python display(dbutils.fs.ls("dbfs:/user/hive/warehouse/avengers"))
检查表位置,看看是否创建了任何文件或日志。%python display(dbutils.fs.ls("dbfs:/user/hive/warehouse/avengers/_delta_log/"))
检查Delta文件夹的内容,看看是否有任何文件。display(spark.sql(f"SELECT * FROM json.`/user/hive/warehouse/avengers/_delta_log/00000000000000000000.json`"))
探索Delta日志中的JSON文件。insert into avengers values (001, 'Captain America', 'Steve Rogers')
向Delta表中添加一条新记录并检查表位置。delete from avengers where id=001
删除记录并检查表。SELECT * FROM avengers VERSION AS OF 1;
使用版本号进行时间旅行。DESCRIBE HISTORY avengers;
获取插入记录的时间戳,并使用时间戳进行时间旅行。drop table avengers;
删除表以清理数据。