Hive Avro表上的计数(*)返回0

Hive Avro表上的计数(*)返回0,hive,avro,Hive,Avro,我最近开始在Hive中为我的外部表使用AvroSerDe Select col_name,count(*) from table group by col_name; 上面的查询给了我一个计数。其中,与以下查询不同: Select count(*) from table; 原因是hive只查看表元数据并获取值。由于某些原因,配置单元中未更新表的统计信息,因为count(*)返回0 在创建表时,统计信息是在没有数据行的情况下写入的,对于任何数据追加/更改,配置单元需要在元数据中更新此统计信息

我最近开始在Hive中为我的外部表使用
AvroSerDe

Select col_name,count(*)
from table
group by col_name;
上面的查询给了我一个计数。其中,与以下查询不同:

Select count(*)
from table;

原因是hive只查看表元数据并获取值。由于某些原因,配置单元中未更新表的统计信息,因为count(*)返回0

在创建表时,统计信息是在没有数据行的情况下写入的,对于任何数据追加/更改,配置单元需要在元数据中更新此统计信息

运行ANALYZE命令收集统计信息并将其写入配置单元元存储


分析表名,计算统计数据;

有关分析命令的更多详细信息,请访问

解决此问题的其他方法

  • 使用“limit”和“groupby”子句会触发映射reduce作业以获取 行数的计数,并给出正确的值

  • 将“获取任务转换”设置为“无”将强制配置单元运行映射还原 计算行数的作业

    hive>set-hive.fetch.task.conversion=none