我在Jupyter笔记本中使用PySpark。以下步骤最多需要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""")
答案 0 :(得分:-1)
在Spark中,有两个主要概念:
1:转换:每当您在withColumn,drop,join或groupB上应用它们时,它们实际上是在评估它们只是产生一个新的数据框或RDD。
2:操作:实际上,在进行计数,显示,显示,编写之类的操作时,它实际上完成了转换的所有工作。并且所有这些Action内部都调用Spark RunJob API以将所有转换作为Job运行。
在您的情况下,当您击中toydf = df.select("column_A").limit(20)
时,没有任何障碍。
但是,当您使用Show()
方法(该操作是一种操作)时,它将从群集中收集数据到驱动程序节点,并且这一次它实际上会评估您的toydf = df.select("column_A").limit(20)
。