使用删除时性能下降与子查询运行时10.4 LTS砖

自动优化应该禁用与子查询,当你有一个删除广播一边足够小。

写的sergios.lalas

去年发表在:2023年4月21日

问题

自动优化在砖(AWS|Azure|GCP)是一个可选的特性,自动紧凑的小文件在个人写一个三角洲表。支付一个小成本在写积极为表查询提供了显著的好处。

尽管汽车优化可以在很多情况下是有益的,可以看到砖运行时性能下降10.4 LTS当你有一个删除用子查询广播一方足够小。

例如查询可能看起来像:

从< tableToDelete >删除日期= < ' SampleDate ' >和SampleID(从< OtherTable >选择MatchId MatchId =“价值”)

导致

优化中默认启用删除子查询,在砖运行时10.4 LTS,假设数据将被打乱。在一方足够小的情况下播放,这不会发生,你可能会出现性能下降。

解决方案

如果你遇到这个问题,你不想升级到一个新砖运行时,您应该禁用自动优化表通过设置在你的三角洲delta.autoOptimize。optimizeWrite = false表中的属性。

你也应该在集群的设置这个值火花配置(AWS|Azure|GCP):

spark.databricks.delta.delete.forceOptimizedWrites = false
删除

信息

砖运行时11.2及以上的禁用自动优化写道删除默认情况下,子查询。

这篇文章有用吗?