2015-10-15 23 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)