在pyspark中捕获explain()的结果

在pyspark中,运行:

sdf = sqlContext.sql("""SELECT * FROM t1 JOIN t2 on t1.c1 = t2.c1 """)

进而:

sdf.explain(extended=True)

它打印查询执行的逻辑和物理计划。

我的问题是:如何捕获输出而不是打印输出?

`v = sdf.explain(extended=True) 自然,不起作用

回答:

如果查看源代码explain(2.4或更低版本),您会发现:

def explain(self, extended=False):

if extended:

print(self._jdf.queryExecution().toString())

else:

print(self._jdf.queryExecution().simpleString())

因此,如果要直接检索说明计划,只需_jdf.queryExecution()在数据框上使用方法:

v = sdf._jdf.queryExecution().toString()  # or .simpleString()

从3.0开始,代码为:

print(

self._sc._jvm.PythonSQLUtils.explainString(self._jdf.queryExecution(), explain_mode)

)

删除打印后,您将获得explain一个字符串。

以上是 在pyspark中捕获explain()的结果 的全部内容, 来源链接: utcz.com/qa/409667.html

回到顶部