寻找一种方法来知道何时在三角洲湖表上运行OPTIMIZE



如果Databricks在AWS上运行,我正在寻找一种方法来了解何时是在分区表上运行优化的好时机。考虑到这是一个昂贵的过程,尤其是在大桌子上,我怎么知道现在是否是运行它的好时机,以及在哪些桌子上?也许我可以创建一个每周执行一次的脚本,并只在需要时运行优化命令。

此外,建议在创建分区的同一作业上为每个分区运行OPTIMIZE?

所以我创建了2022-02-12分区,然后运行optimize,其中partition=2022-02-12,我对此不确定,因为";最终一致性";在S3中,可能文件一加载就没有准备好,有些东西可能会损坏。

谢谢!

如果你有按天划分的数据,那么你可以每天运行优化脚本,可能在一天结束后一个小时(S3的最终一致性在这里不起作用(。它可以简单到(考虑在最常查询的列上添加ZORDER BY(:

OPTIIMZE <table> WHERE partition = (current_date() - interval 1 days)

如果您的工作负载只是追加的,那么您就不需要担心冲突。

除了OPTIMIZE,您还需要有一个将执行VACUUM的工作,因为OPTIMIZE会将旧文件留在原位,并且它们会占用空间。

最新更新