在hive中加载比实际记录更多的记录

jckbn6z7  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(428)

从配置单元表插入到配置单元表时,加载的记录比实际记录多。有人能帮上忙吗?
我的查询如下:

insert overwrite table_a
    select col1,col2,col3,... from table_b;

我的表由6405465条记录组成。
从表\u b插入表\u a后,我发现表\u a中的记录总数是6406565。
有人能帮忙吗?

u3r8eeie

u3r8eeie1#

如果 hive.compute.query.using.stats=true; 然后优化器使用统计信息进行查询计算,而不是查询表数据。这要快得多,因为metastore是一个类似mysql的快速数据库,不需要map reduce。但是,如果不是使用insert overwrite或配置参数加载表,则统计信息可能不新鲜(过时) hive.stats.autogather 负责统计的自动收集设置为false。另外,在加载文件或使用第三方工具后,统计信息也不会是最新的。这是因为从来没有分析过文件,metastore中的统计数据也不新鲜,如果你放了新文件,没有人知道数据是如何更改的。同样在sqoop加载之后,使用“analyze table…”收集加载后的表或分区的统计信息也是一个很好的实践。。。“计算统计数据”。
如果无法自动收集统计信息(用于插入覆盖)或通过运行 ANALYZE 最好关掉它 hive.compute.query.using.stats 参数。配置单元将查询数据而不是使用统计信息。
参考如下:https://cwiki.apache.org/confluence/display/hive/statsdev#statsdev-统计输入

相关问题