使用Python3.10,Delta-Spark 2.4.0,我需要查看在PySpark中的MERGE语句的执行计划.

对于数据帧操作,df.explain()提供了它,但我还没有找到查看Merge()的物理计划的方法.

有没有一种方法可以看到以下explain(mode="extended")的类似功能?

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

tablePath = "/path/to/deltalake"

tbl = DeltaTable.forPath(spark, tablePath)

table.alias("target") \
    .merge(
        source=df.alias("source"),
        condition=condition) \
    .whenMatchedUpdateAll() \
    .whenNotMatchedInsertAll() \
    .execute()

推荐答案

issue#893是因为"使用python API打印合并操作的执行计划"而引发的,这与您所要求的是相同的.

但不幸的是,由于#910(comment)中提到的以下原因,他们决定不建造它:

由于explain方法目前不能输出merge内部的物理执行计划,我们决定现在不添加它.当我们在merge中有了输出实际执行计划的方法时,我们可以重新访问此API.

或者,您可以try 分析Spark UI中的查询执行细节,并密切关注官方的Delta LakePySpark文档,以了解有关公开merge操作的物理计划的任何更新.

Python相关问答推荐

为什么使用SciPy中的Distance. cos函数比直接执行其Python代码更快?

在编写要Excel的数据透视框架时修复标题行

如何在PIL、Python中对图像应用彩色面膜?

如何使用没有Selenium的Python在百思买着陆页面上处理国家/地区 Select ?

Chatgpt API不断返回错误:404未能从API获取响应

优化pytorch函数以消除for循环

使用@ guardlasses. guardlass和注释的Python继承

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

将JSON对象转换为Dataframe

当递归函数的返回值未绑定到变量时,非局部变量不更新:

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

为什么\b在这个正则表达式中不解释为反斜杠

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

如何杀死一个进程,我的Python可执行文件以sudo启动?

Pandas:计算中间时间条目的总时间增量

Gunicorn无法启动Flask应用,因为无法将应用解析为属性名或函数调用.'"'' "

Gekko中基于时间的间隔约束

当条件满足时停止ODE集成?

Polars Group by描述扩展