问题描述
查询:
create table mydb.new as
select a.col1,b.col4,a.col3 from
sampledb.table1 a
left join sampledb.table2 b
on a.col3=b.col3
;
No Stats for sampledb@table1,Columns: col_1
No Stats for sampledb@table2,Columns: col_4
有人可以帮忙解决这个问题或指导我去哪里找吗?
没有答案的相关问题:Hive No Stats for 'database'@'table',Columns
解决方法
没有统计数据会导致次优计划(对于连接列)或表扫描,而不是仅对简单查询使用统计数据:
CBO 在创建查询计划时使用统计信息。缺少统计信息或过时的统计信息可能会导致次优查询计划。如果没有统计信息,CBO 会根据文件大小/平均行大小进行一些估计(请参阅 hive.stats.avg.row.size
配置和其他 statistics related settings)。
另外如果hive.compute.query.using.stats=true
和statistics存在,那么优化器使用statistics进行简单查询(例如select count(col1) ...)而不是查询表数据(这可能会导致错误的查询结果,如果stats 已过时),请参阅 this answer。
另请阅读此设计文档以了解有关统计信息的更多详细信息:https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-StatisticsinHive