自动更新Hive分区表的元数据的方式是什么?
如果将新的分区数据添加到HDFS(不添加alter table,则添加分区命令执行)。然后我们可以通过执行“ msck repair”命令来同步元数据。
如果从HDFS中删除了许多分区数据(未执行alter table drop partition commad执行),该怎么办。
同步Hive元数据的方式是什么?
编辑:从Hive 3.0.0 开始,MSCK
现在可以使用以下语法发现新分区或删除丢失的分区(或同时删除这两个分区):
MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS]
这已在HIVE-17824中实施
正如HakkiBuyukcengiz正确指出的那样,MSCK REPAIR
如果手动删除了HDFS上的相应文件夹,则不会删除分区,而仅在创建新文件夹时才添加分区。
从官方文档中摘录:
换句话说,它将把存在于HDFS上但不在元存储中的任何分区添加到元存储中。
external
如果在HDFS上手动删除了多个分区文件夹,而我想快速刷新分区,这通常是在有表的情况下执行的操作:
DROP TABLE table_name
)(删除外部表不会删除基础分区文件)CREATE EXTERNAL TABLE table_name ...
)MSCK REPAIR TABLE table_name
)根据分区的数量,这可能需要很长时间。另一种解决方案是ALTER TABLE DROP PARTITION (...)
对每个删除的分区文件夹使用,但是如果删除了多个分区,这可能很麻烦。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句