Apache spark 火花贴图功能可以分配动态变量吗?

Apache spark 火花贴图功能可以分配动态变量吗?,apache-spark,map-function,Apache Spark,Map Function,我知道地图功能可以做到像这样 val a=5 map(data=>data+5) 变量a可能是动态的吗 例如,变量a的值在1到5之间,因此a=1,2,3,4,5。 当我调用map函数时,它可以像 data + 1 data + 2 data + 3 data + 4 data + 5 如果我正确理解了你的问题,从火花的角度来看,这是没有意义的。您所要求的在非分布式、顺序处理环境中是有意义的(在这种环境中,每个数据可以确定地应用于不同的功能)。但是,Spark跨分布式数据集应用转换,并且

我知道地图功能可以做到像这样

val a=5
map(data=>data+5)
变量a可能是动态的吗

例如,变量a的值在1到5之间,因此a=1,2,3,4,5。 当我调用map函数时,它可以像

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

如果我正确理解了你的问题,从火花的角度来看,这是没有意义的。您所要求的在非分布式、顺序处理环境中是有意义的(在这种环境中,每个数据可以确定地应用于不同的功能)。但是,Spark跨分布式数据集应用转换,并且这些转换应用的函数是相同的

实现您正试图做的事情的一种方法是在转换数据时使用输入的一些固有特性。这样,即使您的转换函数是相同的,提供给它的参数也将允许它的行为像(您所描述的)一个“动态变量”。在您的示例中,函数就足够了。尽管需要注意的是,如果不能保证顺序,那么每次运行转换时索引都会发生变化

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)
scala>val-rdd=sc.parallelize(数组(1,1,1,1,1))
rdd:org.apache.spark.rdd.rdd[Int]=ParallelCollectionRDD[0]位于parallelize at:12
scala>val newRDD=rdd.zipWithIndex().map{case(elem,idx)=>elem+idx}
...
scala>newRDD.take(6)
...
res0:Array[Long]=数组(1,2,3,4,5,6)

我不明白这个问题,你能详细说明你想做什么吗?你能看看这个问题吗@Rohan