我有一个文本文件作为来源: -
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,它就不会触发作业,即使这两个操作都会导致混乱。所以这里有两个关键问题。