为什么作业条目显示在Spark UI中,只有转换而没有动作的RDD

时间:2015-07-12 00:23:26

标签: apache-spark rdd

我有一个文本文件作为来源: -

key1,value1
key2,value2
key3,value3
key4,value4

我在Scala shell中定义了以下RDD: -

 val rdd=sc.textFile("sample.txt").map(_.split(",")).map(x=>( x(0),x(1) )).sortByKey()

正如您所看到的,这里只有转换,没有动作。根据Spark的懒惰评估规则,它不应该触发任何工作。但是这个声明本身正在触发一项工作,我可以通过Spark UI中的新工作条目来确认。有趣的是,这在某种程度上是由sortByKey操作引起的。我知道sortByKey会导致跨分区的混乱。但这也应该只在最终调用一个动作时才会发生。另一个谜团是,如果我用groupByKey替换sortByKey,它就不会触发作业,即使这两个操作都会导致混乱。所以这里有两个关键问题。

  1. 为什么转换sortByKey会导致作业触发?
  2. 为什么groupByKey不会触发作业而只有sortByKey会这样做,而这两个转换都会导致混乱?

1 个答案:

答案 0 :(得分:0)

Because this is a bug ......简单如下:)