执行计划-在Pyspark执行的计划

时间:2019-09-15 17:24:34

标签: apache-spark pyspark

我正在探讨UDF的缺点,并遇到了scala代码,该代码显示了如何使用内置函数来提高性能。为了显示差异,作者使用了.queryExecution.executedPlan方法,它显示了计划中的推式过滤器和分区过滤器详细信息。但是我想在pyspark代码中看到相同的细节,但仍然找不到能够显示相同细节的方法。

在pyspark代码中,我使用了new_df.explain(True)方法和new_df._jdf.queryExecution()。toString()来获取详细信息,但无法在计划中获取所需的详细信息。有人可以指出我正确的方向吗?

from pyspark.sql.types import *
from pyspark.sql.functions import *

data = [("jose", 1), ("li", 2), ("liz", 3)]
source_df = spark.createDataFrame(data, ["name", "age"])

## with UDF ##
def with_greeting(x):
  if x == "jose":
    return True
with_greeting= udf(with_greeting,BooleanType())

new_df = source_df.where(with_greeting(source_df.age))
new_df._jdf.queryExecution().toString() 
##new_df.explain(True)


##With out UDF##
new_df = source_df.filter(source_df.name=="jose")
##new_df.explain(True)
new_df._jdf.queryExecution().toString()
##new_df._jdf.executedPlan().toString()

我没有看到推送过滤器的详细信息,也没有任何地方表明它在以显示给Scala的方式读取过滤器时应用了过滤器,例如Inmemoryfileindex pushfilter = [details]?``

0 个答案:

没有答案