宣布三角洲湖0.3.0釋放
2019年8月2日, 在工程的博客
得到一個O ' reilly的新電子書的早期預覽一步一步的指導你需要開始使用三角洲湖。
我們興奮地宣布釋放三角洲湖0.3.0介紹新的編程api用於操縱和管理三角洲表中的數據。這個版本的主要特點是:
- Scala / Java api——DML命令您現在可以修改三角洲表中的數據刪除使用編程api (# 44)、更新(# 43和合並# 42)。這些api鏡子相應的SQL命令的語法和語義,對許多工作負載,例如,緩慢變化維度(SCD)操作,合並改變複製的數據,插入從流媒體查詢。看到文檔為更多的細節。
- Scala / Java api查詢提交曆史(# 54)- - -現在你可以查詢一個表的提交曆史,看看修改表的操作。這使您能夠審計數據變化,時間旅行查詢特定版本,調試和意外刪除的數據恢複,等等看文檔為更多的細節。
- Scala / Java api吸塵舊文件(# 48)——的快照(以及其他中止事務未提交的文件)可以通過用真空吸塵器清理垃圾收集表。看到文檔為更多的細節。
更新和刪除
有很多常見的使用情況下,現有的數據數據湖需要更新或者刪除:
- 通用數據保護監管(GDPR)和加州消費者隱私法案》(CCPA)合規
- 從傳統數據庫變化數據捕獲
- Sessionization集團多個事件到一個會話是一種常見的用例在許多領域從產品分析定向廣告預測性維護。
- 重複數據刪除的記錄來源
從湖泊從根本上是基於文件的數據,他們總是比改變現有數據優化的附加數據。因此,建立上述用例一直是具有挑戰性的。用戶通常閱讀整個表(或分區)的一個子集,然後覆蓋它們。因此,每個組織試圖重新發明輪子的要求書寫複雜查詢的SQL,火花等。
三角洲湖流行的要求之一是支持更新和刪除。在0.3.0版本中,我們增加了Scala / Java api很容易合並和刪除記錄。
刪除示例
您可以刪除數據匹配謂詞從三角洲湖表。例如,從2017年之前刪除所有事件,您可以運行如下:
進口io.delta.tables._
val deltaTable = deltaTable。forPath (sparkSession pathToEventsTable)deltaTable.delete (“日期
更新的例子
你可以更新數據相匹配的謂詞在三角洲湖表。例如,要解決一個拚寫錯誤eventType
,您可以運行下麵的:
進口io.delta.tables._val deltaTable = deltaTable。forPath (sparkSession pathToEventsTable)deltaTable.updateExpr (/ /使用SQL格式化字符串謂詞和更新表達式“eventType = clck”,地圖(“eventType”- >“點擊”)
進口org.apache.spark.sql.functions._進口spark.implicits._deltaTable.update (/ /使用火花SQL謂詞函數和值得一提美元“eventType”=“clck”),地圖(“eventType”- >點燃(“點擊”));
合並的例子
您可以從火花DataFrame插入數據到一個三角洲湖表使用合並操作。這個操作類似於SQL MERGE命令,但額外支持刪除和額外的條件更新,插入和刪除。
假設您有一個火花DataFrame包含新數據與eventId事件。這些事件可能已經出現在事件表。所以,當你想要將新數據合並到事件表,你想更新匹配的行(即eventId存在)和插入新行(即eventId不存在)。你可以運行以下:
進口io.delta.tables._進口org.apache.spark.sql.functions._val updatesDF =…/ /定義更新DataFrame(日期、eventId數據)
DeltaTable。pathToEventsTable forPath(火花)。as (“事件”).merge (updatesDF.as (“更新”),”事件。eventId = updates.eventId”).whenMatched.updateExpr (地圖(“數據”- >“updates.data”)).whenNotMatched.insertExpr (地圖(“日期”- >“updates.date”,“eventId”- >“updates.eventId”,“數據”- >“updates.data”)). execute ()
看到編程API文檔理解的api的更多細節。
查詢提交曆史
三角洲湖自動版本存儲的數據。三角洲湖維護提交曆史所有的操作修改了表。在這個版本中,您現在可以訪問表的提交曆史和理解操作修改了表。
審計數據變化從兩方麵的數據是至關重要的合規以及簡單的調試,了解數據隨時間發生了變化。組織從傳統數據係統大數據技術和雲在這樣的場景中掙紮。新的API將允許用戶維護一個跟蹤的所有更改一個表。
您可以檢索信息操作,用戶、時間戳等每個寫一個三角洲湖表通過運行命令曆史。倒序返回的操作。默認情況下,表曆史保留30天。
進口io.delta.tables._
val deltaTable = deltaTable。pathToTable forPath(火花)val fullHistoryDF = deltaTable.history ()/ /得到完整的表的曆史。val lastOperationDF = deltaTable.history (1)/ /最後一個手術。
返回的DataFrame將有以下結構。
+- - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +|版本|時間戳|用戶標識|用戶名|操作|operationParameters|工作|筆記本|clusterId|readVersion|isolationLevel|isBlindAppend|+- - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +|5|2019年-07年-29年14:07年:47|零|零|刪除|(謂語- - - - - ->[" (…|零|零|零|4| null| false|| 4 | 2019-07-29 14:07:41零零更新| | | |(謂詞- > (id…零零| | |空零錯誤| | | 3 || 3 | 2019-07-29 14:07:29零零|刪除| | |(謂詞- > [" (…|零|零|零|2|零|假||2|2019年-07年-29年14:06:56|零|零|更新|(謂語- - - - - ->(id…|零|零|零|1|零|假||1|2019年-07年-29年14:04:31日|零|零|刪除|(謂語- - - - - ->[" (…|零|零|零|0| null| false|| 0 | 2019-07-29 14:01:40零零| | | |寫[模式- > ErrorIfE……零| |空零零零真正| | | | |+ - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
真空
三角洲湖使用MVCC使快照隔離和時間旅行。然而,永遠保持所有版本的表可以非常昂貴。您可以刪除文件保留閾值以上的運行真空放在桌子上。文件的默認保留閾值是7天。的能力時間旅行回一個版本超過保存期丟失後運行真空。遞歸地運行真空命令在桌子上真空與三角洲湖相關聯的目錄表。
進口io.delta.tables._
val deltaTable = deltaTable。pathToTable forPath(火花)deltaTable.vacuum ()/ /真空不是必需的文件版本比默認的保存期deltaTable.vacuum (One hundred.)/ /真空所需的文件不超過100小時的舊版本
雲存儲支持
如果你錯過了它,在我們的早些時候0.2.0釋放,我們添加了支持雲存儲,如S3和Azure blob存儲。版本還包括支持改善並發性。如果您正在運行大數據在雲中工作負載,看看我們以前的版本。
接下來是什麼
我們已經準備在9月份我們的下一個版本。我們目前工作的主要功能是δ摘要的python和SQL api和數據預期這將允許你設置驗證表。你可以跟蹤所有的即將推出,計劃特性github的裏程碑。
到來,我們也很興奮火花AI歐洲峰會10月15日至17日。在峰會上,我們會有一個訓練專用的三角洲湖。早起的人登記2019年8月16日結束。