Hive msck修复一个大表需要很长时间

Hive msck修复一个大表需要很长时间,hive,hdfs,bigtable,hive-partitions,Hive,Hdfs,Bigtable,Hive Partitions,我每天都将数据摄取到HDFS中。从数据到HDFS,我生成按日期和另一列划分的配置单元表。一天有130克的数据。生成数据后,我运行msck repair。现在每个msck任务超过2小时。在我看来,msck将扫描整个表数据(我们有大约200天的数据),然后更新元数据。我的问题是:有没有办法让msck只扫描最后一天的数据,然后更新元数据来加快整个过程?顺便说一句,没有小文件问题,我已经在msck之前合并了小文件。当您使用此配置创建外部表或执行修复/恢复分区时: set hive.stats.autog

我每天都将数据摄取到HDFS中。从数据到HDFS,我生成按日期和另一列划分的配置单元表。一天有130克的数据。生成数据后,我运行
msck repair
。现在每个msck任务超过2小时。在我看来,msck将扫描整个表数据(我们有大约200天的数据),然后更新元数据。我的问题是:有没有办法让msck只扫描最后一天的数据,然后更新元数据来加快整个过程?顺便说一句,没有小文件问题,我已经在msck之前合并了小文件。

当您使用此配置创建外部表或执行修复/恢复分区时:

set hive.stats.autogather=true;
配置单元扫描表位置中的每个文件以获取统计信息,这可能会花费太多时间

解决方案是在创建/更改表/恢复分区之前将其关闭

set hive.stats.autogather=false; 
看这些相关的票:

如果您需要统计信息,您可以仅在必要时使用收集新分区的统计信息

ANALYZE TABLE [db_name.]tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)]  
  COMPUTE STATISTICS 
详情如下:


另外,如果您知道应该添加哪些分区,请使用-您可以在一个命令中添加多个分区。

使用此配置创建外部表或执行修复/恢复分区时:

set hive.stats.autogather=true;
配置单元扫描表位置中的每个文件以获取统计信息,这可能会花费太多时间

解决方案是在创建/更改表/恢复分区之前将其关闭

set hive.stats.autogather=false; 
看这些相关的票:

如果您需要统计信息,您可以仅在必要时使用收集新分区的统计信息

ANALYZE TABLE [db_name.]tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)]  
  COMPUTE STATISTICS 
详情如下:

另外,如果您知道应该添加哪些分区,请使用-您可以在一个命令中添加多个分区