蜂巢计数不匹配的原因

时间:2020-09-19 16:03:53

标签: hadoop hive hiveql hadoop2

问题陈述:-我有一个原始外部表,该表具有表count(1000),方法是将其基础数据复制到某个临时位置,并在创建备份表时指向该临时位置。并且在运行msck修复后,两个表的计数都不匹配?

有什么理由吗?您能否帮助我理解其背后的原因。

1 个答案:

答案 0 :(得分:1)

在这里回答和澄清一些事情,

    可以直接从Metastore或通过读取基础数据来获取
  1. Stats。可以由属性hive.compute.query.using.stats

    控制

    a。设置为TRUE时,Hive将纯粹使用存储在元存储中的统计信息来回答诸如min,max和count(1)之类的一些查询。

    b。设置为FALSE时,Hive将产生一个YARN作业以读取数据并提供计数结果。基于数据量通常很耗时,因为这不是从Hive Metastore中存储的统计信息中直接获取的。

    因此,如果我们希望在属性hive.compute.query.using.stats设置为TRUE时在结果中返回正确的统计信息,则需要确保表的统计信息已更新。

    您可以通过在Hive中运行以下命令来检查该值是设置为TRUE还是FALSE,

    SET hive.compute.query.using.stats;

  2. MSCK REPAIR不执行文件级别检查。它仅查找目录级别的更改,例如,如果您已创建分区表并在HDFS中手动添加了分区目录,并且您希望Hive意识到这一点,则MSCK REPAIR可以满足此目的。