Bor*_*iev 9 apache-spark pyspark
在pyspark中,运行:
sdf = sqlContext.sql("""SELECT * FROM t1 JOIN t2 on t1.c1 = t2.c1 """)
进而:
sdf.explain(extended=True)
它打印查询执行的逻辑和物理计划。
我的问题是:如何在变量中捕获输出,而不是打印它?
v = sdf.explain(extended=True) 自然,不起作用
Ste*_*ven 13
如果您查看explain(2.4 版或更早版本)的源代码,您会看到:
def explain(self, extended=False):
if extended:
print(self._jdf.queryExecution().toString())
else:
print(self._jdf.queryExecution().simpleString())
Run Code Online (Sandbox Code Playgroud)
因此,如果您想直接检索解释计划,只需_jdf.queryExecution()在您的数据帧上使用该方法:
v = sdf._jdf.queryExecution().toString() # or .simpleString()
Run Code Online (Sandbox Code Playgroud)
从3.0 开始,代码是:
print(
self._sc._jvm.PythonSQLUtils.explainString(self._jdf.queryExecution(), explain_mode)
)
Run Code Online (Sandbox Code Playgroud)
删除打印,你会得到explain一个字符串。
| 归档时间: |
|
| 查看次数: |
5237 次 |
| 最近记录: |