Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 一个Spark应用程序何时可以创建多个作业和阶段?_Apache Spark_Pyspark - Fatal编程技术网

Apache spark 一个Spark应用程序何时可以创建多个作业和阶段?

Apache spark 一个Spark应用程序何时可以创建多个作业和阶段?,apache-spark,pyspark,Apache Spark,Pyspark,我使用Databricks社区版 我的Spark计划创造了多个就业机会。为什么?我认为应该有一个工作,它可以有多个阶段 我的理解是,当提交spark程序时,它将创建一个作业、多个阶段(通常每个洗牌操作创建一个新阶段)。 下面是我使用的代码,其中我有两个可能的洗牌操作(reduceByKey/SortByKey)和一个操作(Take(5)) 再观察一次,工作似乎有了新的阶段(其中一些被跳过),是什么导致了新的工作创造。一般来说,每个行动都会有一个工作——但sortByKey真的很奇怪——从技术上

我使用Databricks社区版

我的Spark计划创造了多个就业机会。为什么?我认为应该有一个工作,它可以有多个阶段

我的理解是,当提交spark程序时,它将创建一个作业、多个阶段(通常每个洗牌操作创建一个新阶段)。 下面是我使用的代码,其中我有两个可能的洗牌操作(reduceByKey/SortByKey)和一个操作(Take(5))


再观察一次,工作似乎有了新的阶段(其中一些被跳过),是什么导致了新的工作创造。

一般来说,每个行动都会有一个工作——但sortByKey真的很奇怪——从技术上讲,这是一个转变(因此应该懒散地评估)但是它的实现需要一个急切的行动来执行——因此,你看到的是一个为sortByKey准备的工作,再加上一个为take准备的工作

这就是为什么你看到了其中的两份工作——我看不出第三份来自哪里

(跳过的阶段是自动缓存洗牌结果的阶段-这是自Spark 1.3以来一直存在的优化)


关于sortByKey内部构件的更多信息-

可能是因为pyspark让您看到了这么多Spark作业?
rdd1 = sc.textFile('/databricks-datasets/flights')
rdd2 = rdd1.flatMap(lambda x: x.split(",")).map(lambda x: (x,1)).reduceByKey(lambda x,y:x+y,8).sortByKey(ascending=False).take(5)