當查詢三角洲共享表RESOURCE_LIMIT_EXCEEDED錯誤

三角洲共享共享表的元數據大小限製。如果超出這些限製它生成一個錯誤。

寫的拉傑夫kannan Thangaiah

去年發表在:2023年4月19日

問題

你查詢一個表共享δ分享和你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屬性也可以減少你的時間旅行的能力。你隻可以時間旅行是否DeltaLog中包含元數據。如果日誌保留設置為24小時,你隻能24小時時間旅行回來。


一旦問題得到解決,你應該回複delta.logRetentionDuration屬性回30天,所以你可以繼續使用時間旅行的特性。

% sql ALTER TABLE <表名稱>設置TBLPROPERTIES(δ。logRetentionDuration ' = ' 30天)


為了防止這個問題再次出現,你應該跑步優化定期。這有助於保持活躍的文件的數量低於極限。

這篇文章有用嗎?