gpt4 book ai didi

hadoop - 在 HIVe 中加载比实际更多的记录

转载 作者:可可西里 更新时间:2023-11-01 15:10:59 27 4
gpt4 key购买 nike

从 Hive 表插入到 HIVe 表时,它正在加载比实际记录更多的记录。任何人都可以帮助解决 Hive 的这种奇怪行为吗?

我的查询看起来像这样:

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

我的表_b 包含 6405465 条记录。

从table_b插入table_a后,发现table_a共有6406565条记录。

有人可以帮忙吗?

最佳答案

如果 hive.compute.query.using.stats=true; 则优化器使用统计信息进行查询计算,而不是查询表数据。这要快得多,因为 Metastore 是一个像 MySQL 一样的快速数据库,不需要 map-reduce。但是,如果表不是使用 INSERT OVERWRITE 加载的,或者负责统计信息自动收集的配置参数 hive.stats.autogather 设置为 false,则统计信息可能不是新鲜的(陈旧的)。此外,在加载文件或使用第三方工具后,统计信息将不会更新。这是因为文件从未被分析过,metastore 中的统计数据不新鲜,如果你放了新文件,没有人知道数据是如何改变的。同样在 sqoop 加载等之后。因此,在加载后使用“ANALYZE TABLE ... COMPUTE STATISTICS”收集表或分区的统计信息是一个很好的做法。

如果无法自动收集统计信息(适用于 INSERT OVERWRITE)或通过运行 ANALYZE 语句,则最好关闭 hive.compute.query.using.stats范围。 Hive 将查询数据而不是使用统计信息。

引用:https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-StatisticsinHive

关于hadoop - 在 HIVe 中加载比实际更多的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40959091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com