Avro表上的count(*)返回0

时间:2019-05-10 21:28:09

标签: hive avro

我最近在Hive中将AvroSerDe用于我的外部表。

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

上面的查询给了我一个计数。下面的查询不包含以下内容:

Select count(*)
from table;

1 个答案:

答案 0 :(得分:0)

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

创建表时,统计信息不包含任何数据行,并且对于任何数据追加/更改,hive都需要在元数据中更新此统计信息。

运行ANALYZE命令收集统计信息并将其写入Hive MetaStore。

ANALYZE TABLE table_name COMPUTE STATISTICS;

访问Apache Hive wiki,以获取有关ANALYZE命令的更多详细信息。

其他解决此问题的方法

  • 使用'limit'和'group by'子句触发映射减少作业以获取 行数的计数并给出正确的值

  • 将提取任务转换设置为无将强制配置单元运行地图减少 计算行数的工作

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