选择count(*)issue with hive and spark

siotufzp  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(300)

在运行analyze语句之后,我得到了正确的计数。但我的问题是,每次更新计数时都需要运行它。从技术上讲,我应该能够更新相同分区的计数。
但如果我不执行analyze语句,它将返回相同的计数。
这是我为更新计数而执行的查询。

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

执行起来一点也不方便。有什么想法吗?

1cosmwyk

1cosmwyk1#

您的count(*)查询正在使用stats获取结果。
如果您使用spark来写数据,那么您可以设置 spark.sql.statistics.size.autoUpdate.enabledtrue . 这样可以确保spark在写操作完成后自动更新表统计信息。
如果您使用的是hive,则可以设置 set hive.stats.autogather=true; .
启用这些设置后,写查询将自动更新统计信息,随后的读查询将正常工作。

相关问题