为什么在20行pysparkDataframe上的.show()如此慢?

yc0p9oo0  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(579)

我在一个笔记本电脑里用PypSpark。以下步骤最多需要100秒,这是正常的。

toydf = df.select("column_A").limit(20)

但是,以下 show() 步骤需要2-3分钟。它只有20行整数列表,每个列表不超过60个元素。为什么要花这么长时间?

toydf.show()
``` `df` 生成如下:

spark = SparkSession.builder
.config(conf=conf)
.enableHiveSupport()
.getOrCreate()
df = spark.sql("""SELECT column_A
FROM datascience.email_aac1_pid_enl_pid_1702""")

uyhoqukh

uyhoqukh1#

spark有两个主要概念:
1:转换:无论何时应用with column、drop、join或groupby,它们实际上是在计算,它们只是生成一个新的Dataframe或rdd。
2:actions:如果是像count,show,display,write这样的操作,它实际上完成了所有的转换工作。所有操作都在内部调用spark runjob api,将所有转换作为作业运行。
在你的情况下,当你打 toydf = df.select("column_A").limit(20) 什么都没发生。
但是当你使用 Show() 方法,它将从集群收集数据到驱动程序节点,并在此时实际评估 toydf = df.select("column_A").limit(20) .

相关问题