識別附加操作上的重複數據

寫的chetan.kardekar

最後發布時間:2022年5月10日


在對Delta表執行追加操作時,一個常見的問題是數據重複。

例如,假設用戶1對Delta表a執行寫操作,同時用戶2對Delta表a執行追加操作,這可能導致表中出現重複的記錄。

在本文中,我們將回顧基本的故障排除步驟,您可以使用這些步驟來識別重複的記錄、用戶名以及導致重複數據的筆記本或作業。

識別有重複記錄的列

sql select count(*) as count,  from  group by  order by 

輸出標識所有具有重複數據的列。

識別具有重複數據的輸入文件

從前麵的查詢中選擇一個數據點,並使用它來確定哪些文件提供了重複的數據。

%sql select *, input_file_name()作為路徑從 where =

輸出包括一個名為路徑,它標識每個輸入文件的完整路徑。

確定位置表

%sql描述表擴展<表名>

使用位置表結果搜索拚花路徑

%sh grep -r 'part-.snappy. %拚花' / dbfs / user /蜂巢/倉庫/ < path-to-log > / _delta_log
%sh grep -r 'part- / _delta_log

結果允許您識別受影響的Delta版本。

檢查Delta曆史記錄,查看受影響的版本

%sql select * from(描述曆史<表名>)t where t.version In(0,1)

Delta曆史結果提供用戶名,以及導致副本出現在Delta表中的筆記本或作業id。

既然已經確定了重複數據的來源,就可以修改筆記本或作業來防止重複數據的發生。

例如筆記本電腦

檢查識別附加示例中的重複數據筆記本。