为配置单元中的某些列获取“无统计信息”有什么含义?

问题描述

我在日志文件中得到以下内容,但不知道是什么含义:

查询

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...