使用三角洲湖變化數據以磚

請注意

  • 三角洲湖變化數據提要有磚運行時8.4及以上。

  • 這篇文章描述了如何記錄和查詢為三角洲表使用行級變化信息數據提要功能的變化。學習如何更新表在三角洲住表管道基於源數據的變化,看到的改變數據獲取與三角洲生活表

改變數據提要允許磚跟蹤三角洲表的行級版本之間的更改。三角洲表上啟用時,運行時記錄更改事件寫入的數據表。這包括行數據與元數據顯示指定的行是否插入、刪除或更新。

你可以閱讀改變事件的批處理使用火花SQL查詢,Apache火花DataFrames和結構化流。

用例

更改數據提要在默認情況下不啟用。以下用例應該開車當你啟用更改數據提要。

  • 金銀表:提高三角洲湖性能通過處理後初始行級更改合並,更新,或刪除操作加速和簡化ETL和英語教學操作。

  • 物化視圖:創建最新的聚合視圖的信息用於BI和分析,而無需再加工完整的底層表,而不是隻在更新變化。

  • 傳輸變化:發送一個改變數據提要下遊係統如卡夫卡或RDBMS可以使用它來逐步過程後期的數據管道。

  • 審計跟蹤表:捕獲變更數據提要作為三角洲表提供永久存儲和高效的查詢功能查看所有變化隨著時間的推移,包括刪除發生時和更新。

使改變數據提要

您必須顯式地啟用更改數據提要選擇使用下列方法之一:

  • 新表:設置表屬性delta.enableChangeDataFeed=真正的創建命令。

    創建學生(idINT,的名字字符串,年齡INT)TBLPROPERTIES(δenableChangeDataFeed=真正的)
  • 現有表:設置表屬性delta.enableChangeDataFeed=真正的改變命令。

    改變myDeltaTableTBLPROPERTIES(δenableChangeDataFeed=真正的)
  • 所有新表:

    火花δ屬性違約enableChangeDataFeed=真正的;

重要的

  • 一旦你使改變數據提要選擇一個表,您可以使用磚不再寫表運行時8.1或更低水平。你總是可以讀表。

隻更改你可以改變數據提要記錄;過去的並不準確,修改一個表。

改變數據存儲

磚記錄數據變化更新,刪除,合並操作的_change_data表目錄文件夾下。一些操作,如純插入操作和完整的分區刪除,不生成數據_change_data目錄,因為磚可以有效地計算出的改變直接從事務日誌數據提要。

中的文件_change_data文件夾按照表的保留政策。因此,如果你運行真空命令,修改數據提要數據也刪除。

閱讀改變批量查詢

您可以提供版本或時間戳開始和結束。開始和結束的版本和時間戳是包容性的查詢。閱讀從一個特定的版本開始變化最新的版本的表,僅指定起始版本或時間戳。

你指定一個版本作為一個整數和一個時間戳作為字符串的格式yyyy-MM-dd [HH: mm: ss [.SSS]]

如果你提供一個低版本或時間戳比有變化的事件記錄,更改數據提要時就會激發出了一個錯誤,表示更改數據提要不啟用。

——版本作為int或long如從0到10選擇*table_changes(“表”,0,10)——時間戳字符串格式化的時間戳選擇*table_changes(“表”,“2021-04-21 05:45:46”,“2021-05-21 12:00:00”)——隻提供startingVersion /時間戳選擇*table_changes(“表”,0)——數據庫/模式名稱在表名的字符串,用引號轉義點和特殊字符選擇*table_changes(dbName. dotted.tableName”,“2021-04-21 06:45:46”,“2021-05-21 12:00:00”)——基於路徑表選擇*table_changes_by_path(“\路徑”,“2021-04-21 05:45:46”)
版本號為int或long火花格式(“δ”)\選項(“readChangeFeed”,“真正的”)\選項(“startingVersion”,0)\選項(“endingVersion”,10)\(“myDeltaTable”)#時間戳格式的時間戳火花格式(“δ”)\選項(“readChangeFeed”,“真正的”)\選項(“startingTimestamp”,“2021-04-21 05:45:46”)\選項(“endingTimestamp”,“2021-05-21 12:00:00”)\(“myDeltaTable”)#隻提供startingVersion /時間戳火花格式(“δ”)\選項(“readChangeFeed”,“真正的”)\選項(“startingVersion”,0)\(“myDeltaTable”)#道路基礎表火花格式(“δ”)\選項(“readChangeFeed”,“真正的”)\選項(“startingTimestamp”,“2021-04-21 05:45:46”)\負載(“pathToMyDeltaTable”)
/ /版本為int或long火花格式(“δ”)選項(“readChangeFeed”,“真正的”)選項(“startingVersion”,0)選項(“endingVersion”,10)(“myDeltaTable”)/ /時間戳格式的時間戳火花格式(“δ”)選項(“readChangeFeed”,“真正的”)選項(“startingTimestamp”,“2021-04-21 05:45:46”)選項(“endingTimestamp”,“2021-05-21 12:00:00”)(“myDeltaTable”)/ /隻提供startingVersion /時間戳火花格式(“δ”)選項(“readChangeFeed”,“真正的”)選項(“startingVersion”,0)(“myDeltaTable”)/ /基於路徑表火花格式(“δ”)選項(“readChangeFeed”,“真正的”)選項(“startingTimestamp”,“2021-04-21 05:45:46”)負載(“pathToMyDeltaTable”)

閱讀改變流查詢

#開始提供一個版本火花readStream格式(“δ”)\選項(“readChangeFeed”,“真正的”)\選項(“startingVersion”,0)\(“myDeltaTable”)#開始提供一個時間戳火花readStream格式(“δ”)\選項(“readChangeFeed”,“真正的”)\選項(“startingTimestamp”,“2021-04-21 05:35:43”)\負載(“/ pathToMyDeltaTable”)#不提供一個啟動版本/時間戳將導致先獲取最新的快照火花readStream格式(“δ”)\選項(“readChangeFeed”,“真正的”)\(“myDeltaTable”)
/ /開始提供一個版本火花readStream格式(“δ”)選項(“readChangeFeed”,“真正的”)選項(“startingVersion”,0)(“myDeltaTable”)/ /開始提供一個時間戳火花readStream格式(“δ”)選項(“readChangeFeed”,“真正的”)選項(“startingVersion”,“2021-04-21 05:35:43”)負載(“/ pathToMyDeltaTable”)/ /開始不提供一個版本/時間戳將導致先獲取最新的快照火花readStream格式(“δ”)選項(“readChangeFeed”,“真正的”)(“myDeltaTable”)

閱讀時更改數據表,設置選項readChangeFeed真正的。的startingVersionstartingTimestamp是可選的,如果沒有提供流返回最新的表的快照的時候流作為一個嗎插入和未來的變化變化數據。選擇速度限製(maxFilesPerTrigger,maxBytesPerTrigger),excludeRegex也支持當閱讀改變數據。

請注意

速度限製可以原子版本除了開始快照版本。也就是說,整個提交版本將速率限製或整個提交將被歸還。

默認情況下,如果用戶通過一個版本或時間戳超過最後提交表,錯誤timestampGreaterThanLatestCommit拋出。改變數據提要可以處理的範圍版本如果用戶設置以下配置真正的

火花δchangeDataFeedtimestampOutOfRange啟用=真正的;

如果你提供啟動版本大於最後一個提交一個表或一個開始時間戳比最近提交更新一個表,然後啟用前配置時,將返回空讀取結果。

如果你提供一個最終版本大於最後一個提交一個表或結束時間戳比最近提交更新表,當先前的配置啟用批處理讀模式,所有更改版本開始,最後提交之間被歸還。

改變數據事件模式

除了數據列,修改數據包含元數據列,確定更改事件的類型:

列名

類型

_change_type

字符串

插入,update_preimage,update_postimage,刪除(1)

_commit_version

三角洲日誌或表版本包含的變化。

_commit_timestamp

時間戳

當創建提交相關的時間戳。

(1)像原更新前的值,postimage是更新後的值。

常見問題(FAQ)

是什麼使更改數據提要的開銷嗎?

沒有顯著的影響。更改數據記錄查詢執行過程中,生成和一般遠小於重寫文件的總大小。

保留政策變化記錄是什麼?

改變記錄遵循相同的保留政策如表版本過時,並將清理通過真空如果他們不在指定的保存期。

什麼時候新記錄可用在改變數據提要?

更改數據提交以及三角洲湖事務,並將可用的同時新表中的數據可用。

筆記本

這個筆記本顯示了如何更改傳播到銀表的絕對數量的疫苗接種的疫苗接種率。

改變數據提要的筆記本

在新標簽頁打開筆記本