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