在 PySpark 的这段代码中将创建多少个作业、阶段、任务以及为什么

问题描述 投票:0回答:1

我有这个代码

from pyspark.sql.functions import *
df1=spark.read.option('header','true').csv('/FileStore/tables/ds_salaries.csv')\
                                   `enter code here`.withColumn('salary',col('salary').cast('int'))

df1=df1.filter(col('salary')>30000)
df1=df1.groupBy('work_year').agg(sum('salary').alias('total_salary'))
display(df1)

当我执行这段代码时,我可以看到 jobs:3,但是这里只有 2 个操作,分别是 read 和 display(),那么为什么有一个额外的 job 以及它的用途是什么。我使用 databricks 社区版,其中它的单节点及其默认配置。

apache-spark pyspark apache-spark-sql apache-spark-dataset
1个回答
0
投票

spark.read
被急切地评估,因为它需要找到列数和列名
('header', 'true')
。内部与
df.limit(1).collect()
类似。因此,您看到的第一个作业是读取第一行的作业。

第二个作业被触发用于显示(df)。

注意:如果您提供一组

inferSchema = true
,您将看到另外一个作业,该作业将用于查找每一列的数据类型,为此spark必须读取文件。如果您提供架构,那么它将只有一项工作用于
display(df)

© www.soinside.com 2019 - 2024. All rights reserved.