與Databricks上的三角洲湖,你可以建立一個lakehouse架構它結合了數據湖和數據倉庫的最好部分,在一個簡單和開放的平台上存儲和管理你的所有數據,並支持你的所有分析和AI用例。Beplay体育安卓版本
在這個演示中,我們覆蓋了Delta Lake的主要功能,包括統一的批處理和流數據處理,模式實施和演變,時間旅行,以及對更新/合並/刪除的支持,以及觸摸Delta Lake在Databricks上可用的一些性能增強。
視頻記錄
三角洲湖演示:介紹
lakehouse是一個簡單開放的數據平台,用於存儲和管理您的所有數據,支持您的Beplay体育安卓版本所有分析和AI用例。三角洲湖為湖屋提供了開放、可靠、高效、安全的基礎。
它是一個基於Parquet的開源數據格式和事務性數據管理係統,通過在雲對象存儲上實現ACID事務,使您的數據湖變得可靠。三角洲湖表統一批量和流數據處理直接開箱。最後,Delta Lake被設計成與Apache Spark 100%兼容TM.因此,很容易轉換現有的數據管道,開始使用Delta Lake,隻需對代碼進行最小的更改。
單擊展開文字記錄→
單擊折疊文本→
轉換為三角洲湖
要開始使用Delta Lake,隻需在使用Spark編寫表格時使用“Delta”而不是“Parquet”。您也可以使用Spark SQL使用create table USING Delta命令從頭創建Delta Lake表。或者,您可以使用CONVERT TO DELTA命令將現有的Parquet文件轉換為適當的DELTA Lake格式。
現在我們已經將數據轉換為Delta Lake,讓我們看看表中的數據。在這個表格中我們有14705個批記錄。你可以在這裏看到數據的樣子。接下來,我將向您展示Delta Lake如何輕鬆地處理批處理和流數據,方法是在同時發生的兩個流讀取的同時設置兩個流寫入到我們的Delta Lake表。
使用Delta Lake進行多個並發流讀寫
這裏,我們已經開始讀取和寫入。所以正如你在這個圖表中看到的,我們表格中最初的14705批記錄仍然存在。但是現在新的數據從流A和流B以每秒大約500條記錄的速度流進來。同時,Delta Lake還可以為我們的流讀查詢提供該表的一致視圖,這為下麵的可視化提供了支持。
在這個可視化中,您可以看到隨著時間的推移,新的數據流到我們的表中。每個新條表示一個10秒的窗口,在此期間流a和流B都在並發地寫入我們的表。同樣,這個可視化是由從我們的表格中讀取的流數據驅動的。最後,為了更好地衡量,我們可以拋出一個批處理查詢。
因此,這表明Delta Lake表可以輕鬆地同時處理多個批處理和流數據的讀取和寫入。
酸트랜잭션
那麼這一切是如何實現的呢?這是可能的,因為ACID事務。Delta Lake使用一個事務日誌作為對每個表所做的所有更改的主記錄。這也決定了哪些文件在任何時候都是表的一部分。您可以在任何時候通過運行如下所示的DESCRIBE HISTORY命令查看事務日誌。
當運行這個命令時,可以看到對表的每次寫入都被原子地記錄為流更新。一旦在事務日誌中記錄了一個新的寫操作,我們所有的下遊讀取器現在都將立即將這個寫事務包含在它們的表視圖中。所以每個人總是對三角洲湖表格的構成達成一致。它們隻是引用事務日誌。
使用Delta Lake簡化數據架構
這些都讓三角洲湖表格非常強大。在Databricks,我們發現我們的許多客戶能夠使用Delta Lake簡化和簡化他們的整體數beplay体育app下载地址據架構。通過使用Delta Lake表構建一個簡單的多跳數據管道,您可以可靠地將原始批處理和流數據轉換為高質量、結構化的數據,多個下遊應用程序和用戶可以一次查詢。從業務ROI的角度來看,這意味著更低的雲計算成本、更低的管理複雜性,以及更少的時間浪費在修複係統問題(如損壞的數據)上。
模式實施和演化
但是Delta Lake所做的遠遠不止使用ACID事務來組合批處理和流數據。它還提供了模式強製等工具來保護數據表中的數據質量。如果沒有實施模式,模式不匹配的數據可能會改變表模式並破壞整個數據管道,導致下遊的級聯失敗。所以我們使用模式強製來確保這種情況不會發生。
但是僅僅實施模式是不夠的。如果我們確實想要更改表模式,我們也需要模式演化。使用Delta Lake,我們隻需在Spark寫命令中添加mergeSchema選項,就可以快速、輕鬆地發展我們的模式。當我們運行這個命令時,我們可以看到以前失敗的write命令現在已經成功地執行了。新的信用評分列現在出現在我們的新表中。
時間旅行
Delta Lake的另一個主要功能是使用時間旅行回到過去的能力,也被稱為數據版本控製。因為對表的每次更改都作為一個原子事務記錄在事務日誌中,所以我們可以使用此信息在任何時間點重新創建表的確切狀態。
時間旅行可以幫助您避免對表進行不可逆轉的更改。它使您的數據集和實驗可重現,並為審計和治理目的提供可驗證的數據沿襲。
因此,讓我們首先使用前麵看到的DESCRIBE HISTORY命令查看事務日誌。可以看到,表的每個版本都按版本號和時間戳保存。因此,我們可以使用這些信息來做一些事情,比如查詢表的曆史版本。
我們來做一下。通過將VERSION AS OF命令添加到SQL查詢中,查詢將在數據集的第一個版本(版本0)上運行,並返回14,705條記錄,這與表中最初出現的記錄數量相同。
進一步進行時間旅行,我們可以在任何時候使用這裏顯示的RESTORE命令回滾我們的表。如果我們決定要完全撤銷對表所做的更改,並將數據回滾到較早的版本,這將非常有用。
如您所見,現在當我們查詢我們的表時,原來的14705批記錄是我們的表中唯一的記錄。版本0已成為當前版本。
更新,合並,刪除
我想為您演示的下一個Delta Lake特性是對UPDATE、MERGE和DELETE等事務性DML命令的完全支持。這些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通過更高效地讀取數據,大大加快了查詢速度,降低了雲計算成本。
我們對三角洲湖的親身體驗就到這裏。今天就在Databricks上嚐試Delta Lake,並在線加入社區,了解更多關於Delta Lake如何為您的湖屋建築提供完美的基礎。
시작할준비가
되셨나요?