2015-10-15 22 views
0

我知道地圖功能可以像Spark Spark函數可以指定動態變量嗎?

val a=5 
map(data=>data+5) 

這是可能的變量可以是動態的?

例如,變量a的值在1到5之間,所以a = 1,2,3,4,5。 當我打電話地圖功能,它可以分散執行比如

data + 1 
data + 2 
data + 3 
data + 4 
data + 5 
+1

我不明白這個問題,你能指定更好的你想要做什麼嗎? –

+0

你可以看看這個問題@Rohan http://stackoverflow.com/questions/33150147/master-must-start-with-yarn-spark –

回答

0

如果我正確理解你的問題,它不會從星火角度看來有意義的。在非分佈式順序處理環境中(每個數據可以確定性地應用不同的功能),您所要求的內容是有意義的。但是,Spark應用跨分佈式數據集的轉換,並且這些轉換應用的功能是相同的。

實現你正在嘗試做的一種方法是在轉換數據時使用輸入的一些固有特性。這樣,即使你的轉換函數是相同的,提供給它的參數也會允許它的行爲類似於你所描述的「動態變量」。在你的例子中,zipWithIndex()函數就足夠了。雖然重要的是要注意,如果不能保證排序,那麼在轉換的每次運行中索引都會發生變化。

scala> val rdd = sc.parallelize(Array(1,1,1,1,1,1)) 
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:12 

scala> val newRDD = rdd.zipWithIndex().map { case (elem, idx) => elem + idx } 
... 
scala> newRDD.take(6) 
... 
res0: Array[Long] = Array(1, 2, 3, 4, 5, 6)