在Delta表上執行追加操作時,一個常見的問題是重複數據。
例如,假設用戶1對Delta表a執行寫操作,同時用戶2對Delta表a執行追加操作,這可能導致表中出現重複記錄。
在本文中,我們將回顧用於識別重複記錄、用戶名、導致重複數據的筆記本或作業的基本故障排除步驟。
識別有重複記錄的列
select count(*) fromgroup 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。
現在您已經確定了重複數據的來源,可以修改筆記本或作業以防止重複數據的發生。
例如筆記本電腦
檢查在附加示例中識別重複數據筆記本。