当从Hive表插入到HIve表时,它加载了比实际记录更多的记录。有人能帮助蜂巢的这种奇怪行为吗?
我的查询将如下所示:
insert overwrite table_a
select col1,col2,col3,... from table_b;我的table_b由6405465条记录组成。
在从table_b插入到table_a之后,我发现table_a中总共有6406565条记录。
有谁能帮帮忙吗?
发布于 2016-12-07 23:46:28
如果为hive.compute.query.using.stats=true;,则优化器将使用统计信息进行查询计算,而不是查询表数据。这要快得多,因为metastore是一个像MySQL一样快速的数据库,不需要map-reduce。但是如果没有使用INSERT、OVERWRITE或者负责统计信息自动收集的配置参数hive.stats.autogather被设置为false,那么统计信息可能不是最新的(陈旧的)。此外,在加载文件或使用第三方工具后,统计数据将不会刷新。这是因为文件从未分析过,元存储中的统计数据不是最新的,如果您放置了新文件,没有人知道数据是如何更改的。同样在sqoop加载之后,等等。因此,在加载之后使用“ANALYZE table ... COMPUTE statistics”收集表或分区的统计信息是一个很好的做法。
如果无法自动收集统计信息(适用于INSERT重写),或者无法通过运行ANALYZE语句来收集统计信息,那么最好关闭hive.compute.query.using.stats参数。配置单元将查询数据而不是使用统计信息。
请参阅以下内容作为参考:https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-StatisticsinHive
https://stackoverflow.com/questions/40959091
复制相似问题