选择hive和spark的count(*)问题

问题描述 投票:0回答:1

运行ANALYZE语句后,我得到了正确的计数。但我的问题是,每次更新计数时都需要运行它。从技术上讲,我应该能够更新同一分区的计数。

但是如果我不执行ANALYZE语句,它将返回相同的计数。

这是我为要更新的计数执行的查询。

ANALYZE TABLE bi_events_identification_carrier_sam PARTITION(year, month, day) COMPUTE STATISTICS;

执行起来并不方便。有任何想法吗?

apache-spark hive apache-spark-sql hiveql
1个回答
2
投票

您的count(*)查询使用统计信息来获取结果。

如果您使用spark来写入数据,那么您可以将spark.sql.statistics.size.autoUpdate.enabled设置为true。这可确保Spark在写入完成后自动更新表统计信息。

如果您使用的是Hive,则可以设置set hive.stats.autogather=true;

启用这些设置后,写入查询将自动更新统计信息,后续读取查询将正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.