跳轉到主要內容
工程的博客

輕鬆克隆你的三角洲湖測試,分享和毫升再現性

2020年9月15日 工程的博客

分享這篇文章

介紹克隆

大型數據集的一種有效的方式複製測試,分享和複製毫升實驗

我們興奮地引入新功能在磚三角洲-湖表克隆。創建表的數據的副本湖或數據倉庫有幾個實際應用。然而,考慮到湖和數據表的數據量的增長速度,使物理表的副本是一項昂貴的操作。磚三角洲湖現在使過程更簡單和具有成本效益的幫助下表克隆。

磚三角洲湖表克隆抽象克隆用於測試的複雜性和成本,共享和ML再現性。

得到的早期預覽O ' reilly的新電子書一步一步的指導你需要開始使用三角洲湖。

克隆是什麼呢?

克隆是源表的副本在一個給定的時間點。它們有相同的元數據作為源表:相同的模式,限製,列描述,統計,和分區。然而,它們像一個單獨的表與一個獨立的支係或曆史。任何更改隻影響克隆而不是克隆源。源期間發生的任何更改或克隆過程後也沒有得到反映在克隆由於快照隔離。在磚三角洲湖我們有兩個類型的克隆:

淺克隆

一個(也稱為零拷貝)克隆隻複製表的元數據被克隆;表的數據文件本身並不是複製。這種類型的克隆不創建另一個數據的物理副本導致最小的存儲成本。淺克隆是便宜的,可以非常快速的創建。這些克隆不是獨立的取決於他們克隆的源數據的來源。如果克隆的文件在源取決於被刪除,例如真空,一個淺克隆可能會變得不可用。因此,淺克隆通常用於測試和實驗等短暫的用例。

深克隆

淺克隆非常適合短暫的用例,但是一些場景需要一個單獨的和獨立的表的數據的副本。一個克隆是一個完整的元數據的副本表的數據文件被克隆。在這個意義上它是相似的功能與cta複製命令(創建表. .作為…選擇……)。但它是簡單的指定,因為它使一個忠實的複製原始表的指定的版本和你不需要測量分區,約束和其他信息與商品交易顧問基金。此外,得多,健壯的,可以工作增量方式對失敗!

深克隆,我們複製額外的元數據,如流媒體應用程序的事務和複製到交易,所以你可以繼續你的ETL程序哪裏它離開深克隆!

克隆在哪裏幫助嗎?

有時候我希望我有一個克隆幫我做家務或魔術。然而,我們不是在談論人類克隆。有很多情況你需要一份你的數據集——探索、分享,或測試毫升模型或分析查詢。下麵是一些示例客戶用例。

測試和試驗與生產表

當用戶需要測試一個新版本的數據管道他們經常不得不依賴樣本測試數據集不代表所有的數據在他們的生產環境。數據團隊可能還想嚐試各種索引技術來提高對大型表的查詢性能。這些實驗和測試不可能再在生產環境中進行生產數據的過程和影響用戶。

可能需要幾個小時甚至幾天,自旋向上的副本生產表測試或開發環境。增加額外的存儲成本,為您的開發環境來保存所有重複的數據,有一個大的開銷在設置測試環境反射的生產數據。淺克隆,這是微不足道的:

——SQL創建表三角洲。淺/一些/測試/位置克隆prod.events# PythonDeltaTable.forName(火花,“prod.events”)。克隆(“/一些/測試/位置”isShallow =真正的)/ / ScalaDeltaTable.forName(火花,“prod.events”)。克隆(“/一些/測試/位置”isShallow =真正的)

在創建一個淺克隆你的表在幾秒鍾內,你可以運行一個管道來測試你的新代碼的副本,或者嚐試優化你的表在不同的維度,看看你可以提高查詢性能,和許多更多。這些變化隻會影響你的淺克隆,而不是你的原始表。

舉辦重大改變生產表

有時,您可能需要執行一些重大改變生產表。這些變化可能包含許多步驟,你不想讓其他用戶看到你的變化,直到你完成所有的工作。一個淺克隆能幫助你:

——SQL創建temp.staged_changes淺克隆prod.events;刪除temp.staged_changes在哪裏event_id;更新temp.staged_changeschange_date=當前日期()在哪裏change_date;——執行你的驗證

一旦你滿意的結果,你有兩個選擇。如果沒有其他變化了你的源表,你可以用克隆人代替你的源表。如果更改了你的源表,您可以將更改合並到你的源表。

——如果沒有變化取代prod.events克隆temp.staged_changes;——如果源表已經改變了合並prod.events使用temp.staged_changes事件。event_id staged_changes.event_id匹配然後更新*;——下降了表下降temp.staged_changes;

機器學習結果重現性

想出一個有效的ML模式是一個迭代的過程。在整個過程中調整模型的不同部分的數據科學家需要評估模型的準確性對一個固定的數據集。這是很難做的係統,數據是在一個不斷加載或更新。的快照數據用於訓練和測試模型是必需的。這個快照允許毫升模型的結果為測試或可再生的模型管理的目的。我們建議利用時間旅行運行多個實驗在一個快照;一個這樣的例子在行動中可以看到機器學習數據沿襲MLflow和三角洲湖。一旦你滿意的結果,願存檔供以後檢索的數據,例如下一個黑色星期五,你可以使用深克隆來簡化存檔過程。與三角洲湖MLflow整合很好,自動登錄功能(mlflow.spark.autolog ())會告訴你,哪個版本的表是用於運行一組實驗。

#運行您的ML工作負載使用PythonDeltaTable.forName(火花,“feature_store”).cloneAtVersion (128年,“feature_store_bf2020”)

數據遷移

大規模的表可能需要搬到一個新的專用桶或存儲係統性能或治理的原因。原始表將不會收到新的更新前進,將釋放,並在未來的時間點刪除。深克隆使大規模的複製表更健壯和可伸縮的。

——SQL創建delta. zz://我的- - - - - -- - - - - -/事件“克隆prod.events;改變prod.events位置“zz: / / my-new-bucket /事件”;

與深克隆,因為我們模仿你流媒體應用程序的事務複製到交易,你可以繼續你的ETL的申請究竟在什麼地方在這個遷移!

數據共享

在一個組織,通常情況下,用戶從不同的部門正在尋找數據集,他們可以用它來豐富他們的分析或模型。你可能想要整個組織與其他用戶分享您的數據。但與其建立複雜的管道數據移動到另一個商店通常更容易、經濟相關數據集的創建一個副本為用戶探索和測試數據是否適合他們的需求,而不影響自己的生產係統。在這裏再次深克隆來拯救。

——下麵的代碼可以將運行在你方便的時候創建取代data_science。事件克隆prod.events;

數據歸檔

用於監管或存檔表中的所有數據需要保存一定數量的年,而活躍的幾個月表保留數據。如果你希望你的盡快更新數據,但是不管你需要保持數據數年,將這些數據存儲在一個表和執行時間旅行可能會變得非常昂貴。在這種情況下,數據歸檔在每天,每周或每月的方式是一個更好的解決方案。深的增量克隆功能克隆真的會幫助你。

——下麵的代碼可以將運行在你方便的時候創建取代檔案。事件克隆prod.events;

注意,此表將有一個獨立的曆史與源表相比,因此時間旅行對源表的查詢和克隆可能返回不同的結果根據你歸檔的頻率。

看起來帥呆了!任何問題嗎?

重申一下上麵提到的一些問題作為一個單獨的列表,這是你應該警惕:

  • 克隆上執行數據的快照。任何更改,克隆過程開始後的源表將不會被反映克隆。
  • 淺克隆並不是獨立的表像深克隆。如果刪除源表中的數據(例如通過真空),你的淺克隆可能不是可用的。
  • 克隆有一個獨立自主的曆史從源表。時間旅行查詢你的源表和克隆可能不會返回相同的結果。
  • 淺克隆不要複製流事務或複製到元數據。使用深克隆遷移您的表,繼續你的ETL過程從那裏離開。

我怎麼使用它呢?

淺和深克隆支持新的數據團隊如何測試和管理他們的進步現代湖泊和雲數據倉庫。現在表克隆可以幫助你的團隊實現生產級測試的管道,微調他們的索引優化查詢性能,創建表副本共享——所有最小的開銷和費用。如果這是一個需要在您的組織,我們希望您將表克隆兜風,給我們你的反饋,我們期待聽到新的用例和擴展你希望看到在未來。

7.2中可用的特性是磚作為一個公共預覽所有客戶。beplay体育app下载地址了解更多的特性。看它的實際應用,注冊一個免費試用磚。

免費試著磚

相關的帖子

看到所有工程的博客的帖子
Baidu
map