我最近在Hive中将AvroSerDe
用于我的外部表。
Select col_name,count(*)
from table
group by col_name;
上面的查询给了我一个计数。下面的查询不包含以下内容:
Select count(*)
from table;
答案 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;