count(*)返回0

bxgwgixi  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(976)

我最近开始使用 AvroSerDe 我在 hive 里的外置table。

Select col_name,count(*)
from table
group by col_name;

上面的查询给了我一个计数。如以下查询所示:

Select count(*)
from table;
33qvvth1

33qvvth11#

原因是hive只查看表元数据并获取值。由于某些原因,配置单元中未更新表的统计信息,因为count(*)返回0。
在创建表时,统计信息是在没有数据行的情况下写入的,对于任何数据追加/更改,hive需要在元数据中更新此统计信息。
运行analyze命令收集统计信息并将它们写入配置单元元存储。 ANALYZE TABLE table_name COMPUTE STATISTICS; 有关analyze命令的更多详细信息,请访问apachehivewiki。
解决这个问题的其他方法
使用'limit'和'groupby'子句触发map reduce job以获取行数并给出正确的值
将fetch task conversion设置为none将强制配置单元运行map reduce作业来计算行数 hive> set hive.fetch.task.conversion=none;

相关问题