在追加操作中識別重複數據

寫的chetan.kardekar

最後發布日期:2022年5月10日


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

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

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

識別有重複記錄的列

select count(*) from  group by  order by 

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

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

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

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

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

識別位置表

%sql描述表擴展<表名>

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

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

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

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

sql select * from (description history ) t where t.version In(0,1)

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

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

例如筆記本電腦

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