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

在Spark UI中如何查看已缓存计算的可视化查询计划?

解决Spark UI中查看已缓存计算的可视化查询计划问题

核心原因

当你在链式调用中直接写cache().show()时,Spark会将缓存操作与执行动作合并执行,导致UI中的查询计划被简化,无法看到完整的原始执行链路。

解决方法

  • 拆分缓存与执行操作:将缓存标记和触发执行的动作分开执行,让Spark先完成缓存的物化,同时保留完整的查询计划记录:

    // 先定义并标记缓存
    val joinedDF = dfFromRDD1.join(dfFromRDD2, dfFromRDD1.col("language").lt(dfFromRDD2.col("language")), "inner")
    joinedDF.cache()
    // 单独触发执行
    joinedDF.show()
    
  • 找对UI查看入口:

    • 若使用Spark SQL,切换到UI的SQL标签页,这里会展示包含缓存节点(InMemoryTableScan)的完整可视化查询计划。
    • 若基于RDD操作,进入Jobs标签页,点击对应Job后查看Stage中的DAG图,缓存的RDD会带有明显的缓存标识。
  • 启用详细计划展示(可选):
    在Spark配置中添加spark.sql.ui.explainMode=extended,重启Spark后,SQL标签页会显示更详细的逻辑计划和物理计划,包含缓存相关的所有细节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:01:02