在运行analyze语句之后,我得到了正确的计数。但我的问题是,每次更新计数时都需要运行它。从技术上讲,我应该能够更新相同分区的计数。
但如果我不执行analyze语句,它将返回相同的计数。
这是我为更新计数而执行的查询。
ANALYZE TABLE bi_events_identification_carrier_sam PARTITION(year, month, day) COMPUTE STATISTICS;
执行起来一点也不方便。有什么想法吗?
在运行analyze语句之后,我得到了正确的计数。但我的问题是,每次更新计数时都需要运行它。从技术上讲,我应该能够更新相同分区的计数。
但如果我不执行analyze语句,它将返回相同的计数。
这是我为更新计数而执行的查询。
ANALYZE TABLE bi_events_identification_carrier_sam PARTITION(year, month, day) COMPUTE STATISTICS;
执行起来一点也不方便。有什么想法吗?
1条答案
按热度按时间1cosmwyk1#
您的count(*)查询正在使用stats获取结果。
如果您使用spark来写数据,那么您可以设置
spark.sql.statistics.size.autoUpdate.enabled
至true
. 这样可以确保spark在写操作完成后自动更新表统计信息。如果您使用的是hive,则可以设置
set hive.stats.autogather=true;
.启用这些设置后,写查询将自动更新统计信息,随后的读查询将正常工作。