![immagine sfondo](http://www.eheci.com/wp-content/uploads/2021/12/graphic-background-hexigon.png)
與Databricks上的Delta Lake,你可以建立一個lakehouse架構它將數據湖和數據倉庫的最佳部分結合在一個簡單開放的平台上,存儲和管理您的所有數據,並支持您的所有分析和AI用例。Beplay体育安卓版本
在本演示中,我們將介紹Delta Lake的主要特性,包括統一批處理和流數據處理、模式實施和演化、時間旅行以及對update / merge / delete的支持,還將介紹Databricks上Delta Lake的一些性能增強。
視頻記錄
三角洲湖演示:介紹
lakehouse是一個簡單而開放的數據平台,用於存儲和管理所有數據,支持所有分Beplay体育安卓版本析和AI用例。三角洲湖為湖濱別墅提供了開放、可靠、高性能和安全的基礎。
它是一種基於Parquet的開源數據格式和事務數據管理係統,通過在雲對象存儲上實現ACID事務,使您的數據湖變得可靠。Delta Lake表統一了開箱即用的批處理和流數據處理。最後,Delta Lake被設計成100%兼容Apache SparkTM.因此,隻需對代碼進行最小的更改,就可以輕鬆地將現有的數據管道轉換為開始使用Delta Lake。
單擊此處展開抄本→
單擊此處可折疊文本→
轉換成三角洲湖
要開始使用Delta Lake,在使用Spark編寫表格時,隻需簡單地說“Delta”而不是“Parquet”。您還可以使用Spark SQL使用create table USING Delta命令從頭創建一個Delta Lake表。或者可以使用CONVERT TO DELTA命令將現有的Parquet文件就地轉換為DELTA Lake格式。
現在我們已經將數據轉換為Delta Lake,讓我們看看表中的數據。這個表中有14,705個批記錄。你可以看到這裏的數據是什麼樣的。接下來,我將向您展示Delta Lake如何輕鬆處理批處理和流數據,方法是在同時發生的兩個流讀取的同時設置對Delta Lake表的兩個流寫入。
使用Delta Lake進行多個並發流讀取和寫入
在這裏,我們已經啟動了那些讀寫操作。因此,正如您在這個圖表中看到的,我們表中最初的14705批記錄仍然存在。但是現在新數據從流A和流B以大約每秒500條記錄的速度流入。同時,Delta Lake還可以為我們的流讀取查詢提供該表的一致視圖,這為下麵的可視化提供了動力。
在這個可視化中,您可以看到隨著時間的推移,新的數據流進入我們的表。每個新條表示一個10秒的窗口,在此期間流a和流B都在並發地寫入我們的表。同樣,這個可視化也是由我們表格中的流讀取提供的。最後,為了更好地度量,我們可以拋出一個批處理查詢。
因此,這表明Delta Lake表可以輕鬆地同時處理批處理和流數據的多個讀取器和寫入器。
ACID事務
那麼這一切是怎麼可能的呢?這是可能的,因為ACID事務。Delta Lake使用事務日誌作為對每個表所做的所有更改的主記錄。這也決定了哪些文件始終是表的一部分。您可以通過運行如下所示的description HISTORY命令隨時查看事務日誌。
當我們運行此命令時,可以看到對表的每次寫入都被原子地記錄為流更新。一旦在事務日誌中記錄了新的寫操作,我們所有的下遊讀取器現在都將立即在它們的表視圖中包含該寫操作。所以每個人總是對Delta Lake桌的組成達成一致。它們隻是引用事務日誌。
使用Delta Lake簡化數據架構
這一切都使德爾塔湖表非常強大。在Databricks,我們發現我們的許多客戶能夠使用Delta Lake簡化和簡化他們的整體數beplay体育app下载地址據架構。通過使用Delta Lake表構建一個簡單的多跳數據管道,您可以可靠地將原始批處理和流數據轉換為高質量的結構化數據,多個下遊應用程序和用戶可以同時查詢。從業務ROI的角度來看,這意味著更低的雲計算成本,更低的管理複雜性,更少的時間浪費在修複係統問題上,如損壞的數據。
模式實施和發展
但是Delta Lake不僅僅使用ACID事務來組合批處理和流數據。它還提供了模式強製等工具來保護數據表中的數據質量。在沒有模式強製的情況下,模式不匹配的數據可能會更改表模式並破壞整個數據管道,導致下行級聯故障。因此,我們使用模式實施來確保這種情況不會發生。
但是單靠模式實施是不夠的。如果我們確實希望更改表模式,我們還需要模式演化。有了Delta Lake,我們隻需在Spark寫命令中添加mergeSchema選項,就可以快速輕鬆地改進我們的模式。當我們運行這個命令時,我們可以看到以前失敗的寫命令現在成功地發生了。新的信用評分列現在出現在我們的新表中。
時間旅行
Delta Lake的另一個主要特性是能夠使用時間旅行回到過去,也稱為數據版本控製。因為對表的每次更改都被記錄為事務日誌中的原子事務,所以我們可以使用這些信息在任何時間點重新創建表的確切狀態。
時間旅行可以幫助您避免對表格進行不可逆轉的更改。它使您的數據集和實驗具有可重複性,並為審計和治理目的提供可驗證的數據沿襲。
因此,讓我們首先使用前麵看到的DESCRIBE HISTORY命令查看事務日誌。如您所見,表的每個版本都按版本號和時間戳保存。因此,我們可以使用這些信息來執行查詢表的曆史版本等操作。
我們來做一下。通過將VERSION AS OF命令添加到SQL查詢中,我們的查詢將在數據集的第一個版本(版本0)上運行,並返回14705的計數,這與表中最初出現的記錄數量相同。
將時間旅行更進一步,我們可以在任何時候使用這裏所示的RESTORE命令回滾表。如果我們決定已經對表進行了更改,並且希望完全撤銷該更改,並簡單地將數據回滾到較早的版本,那麼這將非常有用。
因此,正如您所看到的,現在當我們查詢我們的表時,那些原始的14705批記錄是表中出現的唯一記錄。0版本已成為當前版本。
Delta Lake DML:更新,合並,刪除
我想為您演示的下一個Delta Lake特性是完全支持事務性DML命令,如UPDATE、MERGE和DELETE。這些SQL命令使操作大數據表變得快速和容易。在Delta Lake之前,從數據湖中刪除用戶數據以遵守GDPR請求很難在不冒數據丟失或損壞風險的情況下執行。但是有了Delta Lake,我們可以以事務性的方式刪除用戶的數據,隻需要一行代碼。
首先,讓我們查看用戶的數據。我們將選擇貸款ID為4420的用戶。現在,當我們運行這個delete命令時,您可以看到我們的用戶數據被成功地以事務方式刪除了。
同樣的想法也適用於其他DML命令,如INSERT、UPDATE和MERGE。Delta Lake使這些操作非常簡單,隻需最少的代碼就可以執行,這一切都得到了ACID事務的可靠性的支持。
讓我們繼續使用時間旅行將該用戶的數據插入到我們的表中。當我們運行該命令時,我們現在可以看到,實際上,在我們的表中有一個貸款ID為4420的記錄。
接下來,讓我們繼續使用單個命令更新用戶數據。在這裏,我們將為相同的用戶(編號4420)設置資金金額為22,000。運行該命令後,我們看到用戶的資金金額已經成功更新,因為它現在等於22,000。
最後,Delta Lake還支持upsert,它使用MERGE命令混合了插入和更新。通常,合並是一個困難的、昂貴的操作,涉及到幾個中間步驟。使用Delta Lake,我們可以跳過所有這些複雜性,隻需使用MERGE命令。
因此,首先,我們將創建一些要合並的虛擬數據—一行更新用戶4420的數據,一行插入表中的新數據。因此,當我們將MERGE命令組合在一起時,我們可以指定當記錄已經存在時更新表,當記錄不存在時插入表。因此,當我們運行merge命令時,如您所見,我們成功地更新了用戶4420的數據,並插入了新用戶的數據。
磚性能優化
最後,在結束之前,我想向您展示兩個額外的命令,它們可以在處理Delta Lake大表時提高性能。首先是真空指令。VACUUM命令允許我們將表的當前版本不再使用的任何數據文件標記為刪除。
接下來的幾個命令隻能在Databricks上使用Delta Lake。首先是CACHE命令,它允許您將任何經常使用的查詢的結果緩存到內存中,以加快將來的查詢速度。
最後,這裏顯示的是Z ORDER OPTIMIZE命令,它使用高級多維數據聚類技術來共同定位相關數據,以實現盡可能快的查詢。Z-Order大大加快了許多查詢的速度,通過更有效地讀取我們的數據,降低了雲計算成本。
Delta Lake的親身演示到此結束。現在就在Databricks上嚐試Delta Lake,並在線加入社區,了解更多關於Delta Lake如何為您的湖屋建築提供完美的基礎。
![immagine sfondo](http://www.eheci.com/wp-content/uploads/2022/01/demo-form-bg-img.png)
Pronto每cominciare ?
![](http://www.eheci.com/wp-content/uploads/2021/12/hh-delta-sharing-graphics.png)
![](http://www.eheci.com/wp-content/uploads/2021/12/hh-delta-sharing-footer.png)