在pyspark中,运行:
sdf = sqlContext.sql("""SELECT * FROM t1 JOIN t2 on t1.c1 = t2.c1 """)
然后:
sdf.explain(extended=True)
它打印查询执行的逻辑和物理计划。
我的问题是:如何捕获输出而不是打印输出?
v = sdf.explain(extended=True)
自然是行不通的
答案 0 :(得分:3)
如果看一下explain
的源代码,就会发现:
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()