由於列重複,無法讀取審計日誌

區分大小寫的參數名在讀取審計日誌時會導致重複列錯誤。

寫的亞當Pavlacka

最後發布日期:2022年7月22日

問題

你在試著閱讀一個udit日誌然後得到一個AnalysisException:發現重複列錯誤。

spark.read.format("json").load("dbfs://mnt/logs//date=2021-12-07") // AnalysisException: Found duplicate column(s) in data schema: '  '

導致

從2021年11月到2021年12月,Databricks發布了數量有限的帶有重複大小寫敏感參數名的SQL審計日誌。這可能會破壞模式推斷,並在試圖讀取在此期間生成的審計日誌時生成錯誤。

以下參數名被重複:

|正確名稱|重複名稱| | ------------ | -------------- | | dataSourceId | dataSourceId | | alertId | alertId | | dashboardId | dashboardId |

解決方案

創建一個新的集群來讀取和修複審計日誌文件。

打開大小寫敏感性,這樣模式推斷就可以正確地加載數據。

% scala spark.conf.set(“spark.sql。caseSensitive", true) spark.read.format("json").load("dbfs://mnt/logs/pathToMyLogs/date=2021-12-07").write…spark.conf.set(“spark.sql。caseSensitive”,假)

處理完日誌後,關閉大小寫敏感性。

刪除

警告

在執行其他工作負載的共享集群和/或集群上啟用模式推斷可能會導致其他工作負載出現問題。