我想了解Apache Spark如何在幕後工作。在Spark中編碼一點之後,我很確定它實現了RDD
作爲RMI 遠程對象,不是嗎?Apache Spark和遠程方法調用
以這種方式,它可以在轉換內部修改它們,如map
s,flatMap
s等等。不屬於RDD
的對象只是簡單地序列化並在執行期間發送給工作人員。
在下面的例子中,lines
和tokens
將被視爲遠程對象,而串toFind
將簡單地串行化並將其複製到工人。
val lines: RDD[String] = sc.textFile("large_file.txt")
val toFind = "Some cool string"
val tokens =
lines.flatMap(_ split " ")
.filter(_.contains(toFind))
我錯了嗎?我google了一下,但我還沒有找到任何有關如何在內部實施Spark RDD
的參考。
您可以查看源代碼[Scala的RDD](https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/RDD.scala) 。 –
@AlbertoBonsanto,你是對的。但'RDD.scala'文件有超過1800個sloc :) –