在pyspark中捕获explain()的结果

时间:2019-01-10 08:16:22

标签: 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)自然是行不通的

1 个答案:

答案 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()