VACUUM
摘要
VACUUM TABLE table_name [FULL [UNIFY]] [PARTITION partition_value]? [AND WAIT]?
说明
大数据系统通常使用 HDFS 进行存储,以实现数据在集群中各个节点之间的持久性、透明分布和均衡。HDFS 是一个不可变的文件系统,其间的数据不可编辑,只能追加。为了使用不可变的文件系统,不同的文件格式采用写入新文件以支持数据突变,随后使用异步后台合并来保持性能并避免产生许多小文件。
例如,在 Hive 连接器中,您可以逐行更新或删除 ORC 事务性表。不过,每当运行更新时,就会在 HDFS 文件系统中生成新的增量和 delete_delta 文件。使用 VACUUM
可以将所有这些小文件合并成一个大文件,并优化并行性和性能。
VACUUM 的类型:
默认
可以将默认 VACUUM 视为合并表的小数据集的第一级。该操作经常发生,通常比 FULL VACUUM 更快。
Hive:
在 Hive 连接器中,默认 VACUUM 对应于“轻量级压缩”。将所有有效的增量目录合并到一个压缩的增量目录中,并类似地将所有有效的 delete_delta 目录合并到一个 delete_delta 目录中。基本文件不会更改。一旦所有读取方都完成了对较小的旧增量文件的读取,就删除这些文件。
FULL
可以将 FULL VACUUM 视为合并表的所有数据集的下一级。与默认 VACUUM 相比,该操作发生的频率更低,完成时间也更长。
FULL UNIFY
UNIFY选项有助于将每个分区的多个桶文件合并为单个桶文件,桶号为0。
Hive:
在 Hive 连接器中,FULL VACUUM 对应于“重量级压缩”。将所有基本文件和增量文件合并在一起。作为该操作的一部分,会永久删除已删除或更新的行。会从元存储中的事务表中删除所有中止的事务。一旦所有读取方都完成了对旧增量文件的读取,就删除这些文件。
FULL
关键字表示是否启动重量级压缩。如果没有该选项,它将执行轻量级压缩。
可以使用 PARTITION
子句来指定清理哪个分区。
可以使用 AND WAIT
来指定该 VACUUM 以同步模式运行。如果没有该选项,它将以异步模式运行。
示例
示例 1:默认 VACUUM,等待完成:
VACUUM TABLE compact_test_table AND WAIT;
示例 2:对分区“partition_key=p1”执行 FULL VACUUM:
VACUUM TABLE compact_test_table_with_partition FULL PARTITION 'partition_key=p1';
示例 3:FULL VACUUM,等待完成:
VACUUM TABLE compact_test_table_with_partition FULL AND WAIT;
示例 4:对一个分区内的所有小文件进行Unify操作:
VACUUM TABLE catalog_sales FULL UNIFY PARTITION 'partition_key';