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