【问题标题】:Does spark-sql query plan indicate which table partitions are used?spark-sql 查询计划是否指示使用了哪些表分区?
【发布时间】:2022-12-01 00:56:49
【问题描述】:
通过查看 spark-sql 计划,有没有一种方法可以判断是否正在使用特定表(hive/iceberg)分区?
例如,我们有一个包含 3 个分区的表,假设 A=A_VAL、B=B_VAL、C=C_VAL。通过查看计划,我可以判断是否
- 分区已完全使用(所有 3 个分区都已使用)
- 分区仅部分使用(可能仅使用了 1 或 2 个分区,例如使用了分区 A,但现在使用了 B 或 C)
如果 spark-sql 计划不提供此信息,我有什么办法可以获得此信息?
【问题讨论】:
标签:
apache-spark-sql
hive
iceberg
【解决方案1】:
您可以使用以下代码打印(逻辑和物理)计划。
import pyspark.sql
#create a df using your sql
df = sqlContext.sql("SELECT field1 AS f1, field2 as f2 from table1")
#use explain to see explain output. Without argument, you will get only physical plan
df.explain(True)
== Parsed Logical Plan ==
...
== Analyzed Logical Plan ==
...
== Optimized Logical Plan ==
...
== Physical Plan ==
...