在做探查数据时,发现有一种情况:
使用select count(*) from 表时,返回结果0条,但是表实际是有数据的,使用select * from 表也是能查到数据的.

出现这种情况的原因是:hive表的数据是load进去的,而不是插入进去的,所以元数据里没有记录到表的数据量,而使用简单的select count(*) from 表不会生成mr任务,不跑数据而去查元数据,结果自然是0.
参数 hive.compute.query.using.stats 默认为 false, 在参数优化时修改为 true 导致上述问题产生

解决方法:在select count(*)后面加limit,即可强制执行mr,limit N的N随意,会返回实际的数据量.