首页 > 解决方案 > Spark - 在保存到配置单元表(ORC)时获取计数

问题描述

我想问你是否有可能在不降低性能的情况下使用 saveAsTable() 来获取我插入 Hive 表的 DataFrame 的计数?

老实说,我想报告日志计数,或者最好的方法是在插入之前和插入之后获取计数,因为这将是 Splunk Dashboard 中非常有用的信息,但我不想添加可能会严重损害性能的配置单元查询,因为我我有超过 100 次转换。

提前感谢您的帮助!

标签: apache-sparkhive

解决方案


set hive.stats.autogather=false;- 对于新创建的表和/或分区(通过 INSERT OVERWRITE 命令填充),默认情况下会自动计算统计信息。用户必须将布尔变量 hive.stats.autogather 显式设置为 false,以便不会自动计算统计信息并将其存储到 Hive MetaStore。

表级统计,

spark.sql("ANALYZE TABLE tableName COMPUTE STATISTICS").show()

这导致

parameters:{totalSize=0, numRows=0, rawDataSize=0...```

表分区级别统计:

spark.sql("ANALYZE TABLE Table1 PARTITION(ds, hr) COMPUTE STATISTICS").show()

注意:当用户发出该命令时,他可能会或可能不会指定分区规范。如果用户未指定任何分区规范,则会为表以及所有分区(如果有)收集统计信息。

表列级统计:

spark.sql("ANALYZE TABLE Table1 PARTITION(ds, hr) COMPUTE STATISTICS FOR COLUMNS").show()

您可以从以下网址获取更多详细信息:https ://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ExistingTables%E2%80%93ANALYZE


推荐阅读