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

如何在PySpark中查看Delta Lake MERGE语句的执行计划?

查看Delta Lake MERGE操作执行计划的方法

针对你使用Python 3.10、delta-spark 2.4.0的场景,要获取MERGE操作等效于explain(mode="extended")的执行计划,有两种实用方案:

方案1:利用DeltaMergeBuilder的explain()方法

Delta Lake的DeltaMergeBuilder(即调用merge()后返回的对象)自带explain()方法,支持指定输出模式,用它替代execute()就能查看完整计划,且不会实际执行MERGE操作。

修改代码如下:

df = spark.sql("SELECT * FROM table")

tablePath = "/path/to/deltalake"

tbl = DeltaTable.forPath(spark, tablePath)

# 替换execute()为explain(),指定extended模式输出完整计划
tbl.alias("target") \
    .merge(
        source=df.alias("source"),
        condition=condition) \
    .whenMatchedUpdateAll() \
    .whenNotMatchedInsertAll() \
    .explain(mode="extended")

该方法会直接打印出MERGE操作的逻辑计划与物理计划,效果和DataFrame的explain(mode="extended")完全一致。

方案2:转为SQL语句后查看计划

若方案1存在版本兼容问题,可手动构造MERGE SQL语句,通过Spark SQL的explain()查看计划:

# 先将源DataFrame注册为临时视图
df.createOrReplaceTempView("source_view")

# 构造Delta Lake的MERGE SQL并查看计划
spark.sql(f"""
MERGE INTO delta.`{tablePath}` target
USING source_view source
ON {condition}
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *
""").explain(mode="extended")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:12:05