问题
你查询一个表共享δ分享和你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天)
为了防止这个问题再次出现,你应该跑步优化定期。这有助于保持活跃的文件的数量低于极限。