我在一个笔记本电脑里用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""")
1条答案
按热度按时间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)
.