Delta Lake 版本 | Delta Lake 1.0.0 發(fā)布,多項新特性重磅發(fā)布
趕在 Data + AI Summit 2021 之前,Delta Lake 1.0.0 重磅發(fā)布,這個版本是基于 Spark 3.1 的,帶來了許多新特性。本文將結合 Michael Armbrust 大牛在 Data + AI Summit 2021 的演講《Announcing Delta Lake 1.0》來介紹 Delta Lake 1.0.0 版本的一些重要的新特性。
下面是 Announcing Delta Lake 1.0 對應的視頻:

Delta Lake 0.1 自 2019年4月開源以來,到現(xiàn)在已經2年了。每個版本都給我們帶來了一些比較重要的特性。

目前,數磚的產品每天有超過1EB的數據是從 Delta Lake 上掃描的,占據所有數據掃描的75%,有超過3k的客戶在生成環(huán)境上使用 Delta Lake。

上面是 Delta Lake 1.0.0 版本比較重要的功能:
?列生成(Generated Columns)?支持多集群寫(Multi cluster writes)?云存儲獨立(Cloud independence)?支持 Spark 3.1?支持 PyPi 安裝
Generated Columns

在我們的業(yè)務中,我們業(yè)務可能只是生成時間戳的數據,比如上面的 eventTime,但是我們又想以分區(qū)的數據來組織數據,如果直接使用 eventTime 的話會導致分區(qū)過多的問題,一種辦法是添加一個 eventDate 字段。這種辦法可以解決問題,但是有以下幾個問題:
?需要人工的添加字段;?需要在查詢中指定這個過濾條件;?可能忘記加這個字段而出現(xiàn)錯誤或導致性能問題。

為了解決上面那個問題,Delta Lake 引入了 Generated Columns 的功能。這是一種特殊類型的列,它的值是根據用戶指定的函數在 Delta 表中的其他列上自動生成的。我們可以使用 Apache Spark 中的大多數內置 SQL 函數來生成這些生成列的值。例如,可以從時間戳列自動生成日期列;對表的任何寫入只需要為時間戳列指定數據。
值得注意的是,字節(jié)跳動的郭俊在2019年09月給 Spark 社區(qū)提了一個類似的功能,參見 SPARK-29031[1]。
簡化存儲配置

Delta Lake 現(xiàn)在可以自動加載正在被讀寫的 Delta 表的公共存儲系統(tǒng)所需的正確 LogStore。如果用戶在 AWS S3, Azure blob stores, 和 HDFS 上運行 Delta Lake,則不再需要顯式配置 LogStore 實現(xiàn)。這還允許同一個應用程序同時讀寫不同云存儲系統(tǒng)上的 Delta 表。Delta 表路徑的 scheme 用于動態(tài)加載必要的LogStore 實現(xiàn)。注意,使用上面列出的存儲系統(tǒng)之外的其他存儲系統(tǒng)仍然需要顯式配置。
支持多種引擎多種語言讀寫 Delta 表

Delta Lake 現(xiàn)在允許我們以編程方式直接創(chuàng)建新的 Delta 表(Scala、Java 和 Python),而無需使用 DataFrame API。社區(qū)引入了新的 DeltaTableBuilder 和 DeltaColumnBuilder API 來實現(xiàn)所有可以通過 SQL 完成的操作。
支持 PyPI 方式來安裝 Delta
我們現(xiàn)在可以通過 PyPI 來安裝 Delta Lake,如下:
pip install delta-spark然后可以通過下面代碼訪問 Delta Lake 表信息:
from deltalake import DeltaTabledt = DeltaTable("$/iteblog/delta/data/")dt.version()dt.files()
更多關于 Delta Lake 1.0.0 的發(fā)布信息可以參見 Delta Lake 1.0.0 Released[2]
引用鏈接
[1] SPARK-29031: https://issues.apache.org/jira/browse/SPARK-29031[2] Delta Lake 1.0.0 Released: https://delta.io/news/delta-lake-1-0-0-released/
