2016-04-06 14 views
1

Apache Spark'in sahne arkasında nasıl çalıştığını anlamaya çalışıyorum. Spark'de biraz kodladıktan sonra, RDD'u RMI Uzak nesneler olarak uyguladığından emin değilim, değil mi? Bu şekilde, map s, flatMap s, vb. Gibi dönüşümler içinde bunları değiştirebilir. Bir RDD'un parçası olmayan nesne yalnızca serileştirilir ve yürütme sırasında bir işçiye gönderilir. dize toFind sadece tefrika ve işçilere kopyalanmış olacaktır Aşağıdaki örnekte Apache Spark ve Uzak Yöntem Çağrısı

, lines ve tokens, uzak nesnelere olarak ele alınacaktır.

val lines: RDD[String] = sc.textFile("large_file.txt") 
val toFind = "Some cool string" 
val tokens = 
    lines.flatMap(_ split " ") 
     .filter(_.contains(toFind)) 

Yanlış mıyım? Ben biraz googled ama Spark RDD dahili olarak nasıl uygulandığıyla ilgili herhangi bir referans bulunamadı.

+0

[Scala's RDD] kaynak kodunu kontrol edebilirsiniz (https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/RDD.scala) . –

+0

@AlbertoBonsanto, haklısınız. Ama 'RDD.scala' dosyası 1800'den fazla sloka sahiptir :) –

cevap

1

Siz haklısınız. Spark, uzak yöntem çağrısı gerçekleştirmek için kapanışları seri hale getirir.

+0

Bana konuyla ilgili okumak için biraz kaynak verebilir misiniz? –

+0

Spark veya Akka doğrudan RMI kullanıyorsa doğrudan Roland Kuhn'a sordum ve bana cevap verdi: "Uygun reaktif çözümlerin hiçbiri RMI'yi kullanmıyor, bu teknik eski (şeffaf uzaklaştırma ve konum şeffaflığı arasındaki farkı araştırın). Spark, düşündüğünüz şekilde uzaktan aramalar yapmaz, bu da büyüklük dereceleriyle yavaşlatır. Bunun yerine, kodu serileştirir ve bunu çalışan düğümlere gönderir. ". Bu temelde cevapladığın şey. –

İlgili konular