O ' reilly的早期預覽版的新電子書一步一步指導你需要開始使用三角洲湖。
數據的版本控製繁殖實驗,回滾和審計數據
我們很高興介紹時間旅行的能力磚三角洲湖,下一代統一分析引擎之上的Apache火花,我們所有的用戶。這個新特性,三角洲自動版本的大數據存儲在你的數據湖,你可以訪問任何數據的曆史版本。這個時態數據管理簡化你的數據管道便於審計、回滾數據以防意外壞寫或刪除,和繁殖實驗和報告。組織終於可以標準化清潔、集中、版本化在自己的雲存儲大數據存儲庫為您分析。
共同的挑戰和變化的數據
- 審計數據的變化:審計數據的變化是至關重要的兩方麵的數據合規以及簡單的調試,了解數據隨時間發生了變化。組織從傳統數據係統大數據技術和雲在這樣的場景中掙紮。
- 繁殖實驗和報告:在模型訓練數據科學家運行各種實驗用不同參數對給定的數據集。當科學家們重新審視他們的實驗一段時間後複製模型,一般情況下,源數據被修改了上遊管道。很多時候,他們被不知道的上遊數據更改,因此難以複製他們的實驗。一些科學家和工程師組織的最佳實踐通過創建數據的多個副本,從而增加了存儲成本。這同樣適用於分析師生成報告。
- 回滾:數據管道有時可以為下遊消費者編寫錯誤數據。這可能發生,因為問題從基礎設施不穩定到混亂的數據錯誤的管道。做簡單的管道附加目錄或一個表,回滾可以很容易地解決基於日期的分區。更新和刪除,這可能變得非常複雜,數據工程師通常需要工程師一個複雜的管道來處理這樣的場景。
引入時間旅行
δ的時間旅行能力簡化構建數據管道上麵的用例。如表或目錄編寫成δ,每個操作都是自動版本。您可以訪問數據的不同版本兩種不同的方式:
1。使用時間戳
Scala的語法:
您可以提供時間戳或日期的字符串作為一個選項DataFrame讀者:
val df = spark.read。格式(“δ”).option (“timestampAsOf”,“2019-01-01”).load (“/道路/,/我的/表”)
在Python中:
df =火花。讀\。格式(“δ”)\.option (“timestampAsOf”,“2019-01-01”)\.load (“/道路/,/我的/表”)
SQL語法:
選擇數(*)從my_table時間戳作為的“2019-01-01”選擇數(*)從my_table時間戳作為的date_sub (當前日期(),1)選擇數(*)從my_table時間戳作為的“2019-01-01 01:30:00.000”
如果讀者代碼庫,您沒有訪問,如果你輸入參數傳遞給庫讀取數據,你仍然可以穿越時間的表通過時間戳yyyyMMddHHmmssSSS格式的路徑:
val inputPath =/ /我的/ " /路徑(電子郵件保護)”val df = loadData (inputPath)/ /函數庫,你沒有訪問權def loadData (inputPath:字符串):DataFrame = {spark.read.format (“δ”).load (inputPath)}
inputPath =/ /我的/ " /路徑(電子郵件保護)”df = loadData (inputPath)#函數庫,你沒有訪問權defloadData(inputPath):返回spark.read\。格式(“δ”)\.load (inputPath)}
2。使用一個版本號
在三角洲,每寫一個版本號,您可以使用版本號穿越時間。
Scala的語法:
val df = spark.read。格式(“δ”).option (“versionAsOf”,“5238”).load (“/道路/,/我的/表”)
val df = spark.read。格式(“δ”).load (/ /我的/ " /路徑(電子郵件保護)”)
Python語法:
df =火花。讀\。格式(“δ”)\.option (“versionAsOf”,“5238”)\.load (“/道路/,/我的/表”)
df =火花。讀\。格式(“δ”)\.load (/ /我的/ " /路徑(電子郵件保護)”)
SQL語法:
選擇數(*)從my_table版本作為的5238年選擇數(*)從my_table@v5238選擇數(*)從delta.”/路徑/來/我的/表@v5238”
審計數據的變化
你可以看看表的曆史變化使用描述曆史命令或通過UI。
繁殖實驗和報告
時間旅行也扮演著重要的角色在機器學習和數據的科學。模型和實驗的重現性是一個關鍵的考慮數據科學家,因為他們經常創建100年代之前的模型把一個投入生產,和費時的過程想回到早期的模型。然而,由於數據管理通常是獨立於數據科學工具,這是很難完成的。
磚解決了這個通過集成三角洲的穿越能力與再現性問題MLflow,一個開源平台的機器學習生命周期。Beplay体育安卓版本可再生的機器學習培訓,您可以簡單地記錄一個時間戳的URL的路徑作為MLflow參數跟蹤版本的數據被用於每個培訓工作。這使您回到提前設置和數據複製模型。你既不需要配合上遊團隊的數據也不擔心克隆不同的實驗數據。這是統一的力量分析,數據科學與數據工程緊密結了婚。
回滾
時間旅行也很容易做回滾的壞寫道。例如,如果您的GDPR管道工作有一個錯誤,不小心刪除用戶信息,您可以很容易地修複管道:
插入成my_table選擇*從my_table時間戳作為的date_sub (當前日期(),1)在哪裏用戶標識=111年
你也可以修複錯誤的更新如下:
合並成my_table目標使用my_table時間戳作為的date_sub (當前日期(),1)來源在source.userId=target.userId當匹配然後更新集*
固定的看法不斷更新跨多個下遊三角洲表工作
與查詢,您現在可以銷不斷更新的快照多個下遊三角洲表工作。考慮一種情況不斷更新,三角洲表說每15秒,下遊有一個工作,定期從δ表讀取和更新不同的目的地。在這樣的場景中,通常需要一個一致的視圖的源三角洲表以便所有目的地表反映相同的狀態。你現在可以輕鬆地處理這樣的場景如下:
版本= spark.sql (“選擇馬克斯(版本)(描述曆史my_table)”).collect ()#將使用最新版本的表下麵的所有操作數據= spark.table (”(電子郵件保護)% s”%的版本(0][0]data.where (“event_type = e1”).write.jdbc (“表1”)data.where (“event_type = e2”).write.jdbc (“表”)…data.where (“event_type = e10”).write.jdbc (“table10”)
查詢時間序列分析變得簡單
時間旅行也簡化了時間序列分析。例如,如果你想找出多少新客戶添加過去一周,您的查詢可以非常簡單:beplay体育app下载地址
選擇數(截然不同的userId)- - - - - -(選擇數(截然不同的userId)從my_table時間戳作為的date_sub (當前日期(),7))從my_table
結論
時間旅行在三角洲大大提高開發人員的生產力。它可以幫助:
- 數據科學家更好地管理他們的實驗
- 數據工程師簡化管道和回滾糟糕寫道
- 數據分析師做簡單的報告
組織終於可以標準化清潔、集中、版本化的大數據存儲庫在自己的雲存儲分析。我們很高興看到你能完成這個新特性。
可用的功能是作為公共預覽為所有用戶。了解更多的特性。看它的實際應用,注冊一個免費試用磚。