如何计算 Spark 查询中扫描的字节数

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

我正在寻找一种简单的方法来衡量通过在 Spark 中执行查询实际读取了多少数据。在最基本的层面上 - 必须在文件级别筛选多少字节。更好的是,如果下推谓词限制实际从存储中读取的数据,我想知道限制是多少。

Spark 计划、

explain
计划、
queryExecution
上下文包含一些信息,但我看不到在哪里获取查询所涉及数据的实际度量。

简单的例子-

spark.sql("SELECT a,b,c FROM table WHERE c = 'foo'").explain()
|== Physical Plan ==
*(1) Project [a#118, b#10L, c#119]
+- *(1) Filter (isnotnull(c#119) AND (c#119 = foo))
   +- BatchScan[a#10L, b#118, c#119] table [filters=c IS NOT NULL, c = 'foo']

最终结果 - 我想从纯数据吞吐量的角度来衡量我的存储和表分区策略的有效性。

如果您能给我指出一些适用于 Iceberg 表或特定于 Iceberg 表的内容,我会加分。

apache-spark apache-spark-sql apache-iceberg
1个回答
2
投票

设置参数

.explain(mode="cost")
将显示正在读取的数据大小的统计信息(如果存在)。

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