You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中无需触发异常即可正常展示physical plan执行树

PySpark无异常输出Action Data Tree的方法

可以直接通过Spark内置API输出该结构,无需主动触发异常。
你在异常信息中看到的结构实际是Spark的查询执行计划树,PySpark的DataFrame内置了专门的方法打印该内容:

  • 基础打印方法:直接调用DataFrame的explain()方法,传入不同参数可以调整输出的计划内容:
    • 调用df.explain():默认输出精简版物理执行计划
    • 调用df.explain(mode="extended"):输出从解析后逻辑计划、优化逻辑计划到最终物理计划的全链路结构,和异常底部展示的结构完全匹配
    • 调用df.explain(mode="formatted"):输出分块格式化的计划,可读性更高
  • 如果需要拿到计划的字符串内容做二次处理,不需要直接打印,可以调用df._jdf.explainString("extended")获取字符串格式的计划内容。

示例代码如下:

from pyspark.sql import SparkSession

# 初始化Spark会话
spark = SparkSession.builder.appName("print_plan_demo").getOrCreate()
# 构造测试DataFrame
test_df = spark.createDataFrame([(1, "张三"), (2, "李四")], schema=["user_id", "user_name"])
# 打印完整执行计划树
test_df.select("user_id", "user_name").filter("user_id > 1").explain(mode="extended")

补充说明:Spark 3.0及以上版本还支持更多explain模式,mode="cost"可打印优化器估算的执行成本,mode="codegen"可打印运行时生成的Java代码,可根据实际需求选择。

内容的提问来源于stack exchange,提问作者Jack Avante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:15:01