你知道Hive统计函数count(*)为什么不走MR吗?

你知道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
Copyright © 2024 亿华云