你知道Hive统计函数count(*)为什么不走MR吗?
问题
Hive执行count(*)不走MR呢?
先说结论:如果表数据是insert进表的,count(*)统计时,带where条件执行时候Hive会执行MR,如果不带where条件,Hive会从元数据库表metastore.TABLE_PARAMS中直接获取numRows字段的值获取记录数。下面创建表进行验证,在验证时发现了Hive在无条件count(*)统计中的一个bug,bug现象也会下面验证。
创建测试表create database testdb;
use testdb;
--测试hive
create table test(
id int comment id
)comment 测试hive
insert into test values(1001);
select count(*) from test ;
select count(*) from test where id
THE END