queryExecution.analyzed.stats.sizeInBytes 始终返回 9223372036854775807

问题描述 投票:0回答:1

我正在尝试检查我们在数据仓库中生成的不同表的大小,以便我们可以有一种自动方法来计算下次运行中的分区大小。

为了获取表大小,我通过以下方式从数据帧获取统计信息:

val db = "database"
val table_name = "table_name"
val table_size_bytes = spark.read.table(s"$db.$table_name").queryExecution.analyzed.stats.sizeInBytes

这工作得很好,直到我开始在分区表上运行相同的代码。每次我在分区表上运行它时,我都会得到相同的

sizeInBytes
值,这是 BigInt 的最大允许值:9223372036854775807。

这是 Spark 中的错误还是我应该以不同的方式运行分区表?

scala apache-spark
1个回答
0
投票

显示默认大小InByte 8.0 EB。 运行此命令以更新 hive 元数据中的表统计信息,然后重新运行上面的命令以查看实际大小。

spark.sql(“分析表$db.$table_name计算统计NOSCAN”)

© www.soinside.com 2019 - 2024. All rights reserved.