問題
你查詢一個表共享δ分享和你RESOURCE_LIMIT_EXCEEDED錯誤。
錯誤可能會引用一個超時。
io.delta.sharing.spark.util.UnexpectedHttpStatus: HTTP請求失敗狀態:HTTP / 1.1 400錯誤請求{“錯誤代碼”:“RESOURCE_LIMIT_EXCEEDED”,“消息”:“一個超時發生時處理表。如果它繼續發生,請聯係您的數據提供者分享一個更小的表。”}。
錯誤也可能參考表元數據超過大小限製。
{“錯誤代碼”:“RESOURCE_LIMIT_EXCEEDED”,“消息”:“表元數據大小超過限製”}
導致
三角洲共享共享表的元數據大小限製。
- 你是有限的700 kaddfileDeltaLog行動。這是有多少活躍的文件,你可以在一個共享的三角洲表。
- 你是有限的100 kRemoveFilesDeltaLog行動。這是文件被刪除的數量。這包括文件被刪除等操作優化和合並。
解決方案
您可以運行優化(AWS|Azure|GCP)共享三角洲表減少活動文件的數量。
優化table_name(在哪裏謂詞)[ZORDER通過(col_name1(,…])]
在運行優化減少活動的文件,你可以點擊RemoveFiles限製,如果優化命令刪除超過100 k的文件。
如果是這種情況,你可以暫時降低delta.logRetentionDuration財產。這降低了物品的時間留在DeltaLog。通過設置保留時間短,例如24小時,事務日誌迅速清除,這有助於你保持在100 k下RemoveFiles極限。
% sql ALTER TABLE <表名稱>設置TBLPROPERTIES(δ。logRetentionDuration”=“24小時”)
一旦問題得到解決,你應該回複delta.logRetentionDuration屬性回30天,所以你可以繼續使用時間旅行的特性。
% sql ALTER TABLE <表名稱>設置TBLPROPERTIES(δ。logRetentionDuration ' = ' 30天)
為了防止這個問題再次出現,你應該跑步優化定期。這有助於保持活躍的文件的數量低於極限。