0

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

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

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

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

而且执行起来一点也不方便。有任何想法吗?

4

1 回答 1

2

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

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

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

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

于 2018-09-13T07:22:22.887 回答