hadoop - hive 计数不匹配的原因
问题描述
问题陈述:-通过将其基础数据复制到某个临时位置并在创建指向该临时位置的备份表时,我有一个带有表计数(1000)的原始外部表。运行 msck repair 后,两个表计数不匹配?
有什么理由吗。你能帮我理解它背后的原因吗?
解决方案
在这里回答和澄清一些事情,
可以直接从 Metastore 或通过读取底层数据来获取统计信息。它可以由属性控制
hive.compute.query.using.stats
一个。当它设置为 TRUE 时,Hive 将纯粹使用存储在元存储中的统计信息来回答一些查询,例如 min、max 和 count(1)。
湾。当它设置为 FALSE 时,Hive 将生成一个 YARN 作业来读取数据并提供计数结果。根据数据量,这通常很耗时,因为这不是从存储在 Hive Metastore 中的统计信息中直接获取。
因此,如果我们希望在属性设置为 TRUE 时在结果中返回正确的统计信息
hive.compute.query.using.stats
,我们需要确保更新表的统计信息。您可以通过在 Hive 中运行以下命令来检查该值是设置为 TRUE 还是 FALSE,
SET hive.compute.query.using.stats;
MSCK REPAIR 不进行文件级别检查。它只查找目录级别的更改,例如,如果您创建了一个分区表并在 HDFS 中手动添加了一个分区目录,并且如果您希望 Hive 知道它,MSCK REPAIR 将达到目的。
推荐阅读
- java - ZeroMQ(JeroMQ)接收调用导致java gc循环
- regex - 如何使用不同的关键字拆分熊猫字符串列?
- jquery - Coinbase API 与 javascript,无法获得正确的授权
- xcode - 如何使用其父节点及其深度绘制 ParticleSystem?(SCN技术+金属)
- android - 如何从 Android 应用程序中发现 Roku 设备以进行投射
- python - 设置选择框的默认值
- sql - 如何从子查询中的更新中返回多行?
- hyperledger-fabric - 为什么链码查询写入分类帐?(仅限 Marbles 私有示例链码)
- zip - 错误:没有足够的内存用于炸弹检测(可能是 zip 炸弹)
- azure-web-app-service - 使用服务标签而不是 IP 将应用服务限制为 Front Door