在對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。
既然已經確定了重複數據的來源,就可以修改筆記本或作業來防止重複數據的發生。
例如筆記本電腦
檢查識別附加示例中的重複數據筆記本。