OPTIMIZE 是否会创建新的镶木地板文件而不删除

问题描述 投票:0回答:1

我想分析最近通过 OPTIMIZE 命令优化的数据块上的增量表分区的大小。

我想知道我是否只是将分区文件夹中每个镶木地板文件的大小相加,这会产生我正在寻找的正确数字,还是 OPTIMIZE 会创建新的、更大的镶木地板文件,而该文件夹仍包含旧文件,未被使用增量表不再扭曲我的计算。 如果是这种情况,VACUUM 可以解决这个问题吗?还有其他更智能的方法来观察分区大小吗?

提前非常感谢!

apache-spark databricks partitioning delta
1个回答
0
投票

或者 OPTIMIZE 是否创建新的、更大的镶木地板文件,而文件夹仍包含旧文件,增量表不再使用这些文件,从而扭曲我的计算

为了支持时间旅行功能,达美将创建并维护所需数量的表版本。所以你是部分正确的。表的“当前/最新”版本中存在未使用的文件。虽然如果你使用时间旅行,它们可能会被使用。

例如请参阅本页面中的“Delta Lake 优化:真空”部分。

VACUUM 可以解决这个问题吗

基于此我会“猜测”是的。如果你VACUUM my_table RETAIN 0 HOURS

。但就我个人而言,我有点怀疑,因为增量表的文件结构不是官方记录/保证的接口。

观察分区大小的更智能方法?

VACUUM my_table RETAIN 0 HOURS

,然后总结分区文件夹的大小可能是最好的选择。

虽然以下指标专门不是按分区划分的,因此可能对您的目的毫无用处,但请查看

DESCRIBE HISTORY

 命令。

请参阅

operationMetrics

 输出中的 
DESCRIBE HISTORY my_table WHERE operation='OPTIMIZE'
 列。对于给定的 OPTIMIZE 操作,它会打印 
numAddedFiles, numRemovedFiles, numAddedBytes, numRemovedBytes, minFileSize, p25FileSize, p50FileSize, p75FileSize, maxFileSize

© www.soinside.com 2019 - 2024. All rights reserved.