用于在火花中保存RDD的临时变量

时间:2014-07-12 00:08:48

标签: scala apache-spark rdd

我;我不确定如何用尽可能短的句子描述这一点,但无论如何我都会尝试。假设我在这个格式中有一个名为 data

的变量的RDD
(a,b,c)

b和c是先前RDD变换产生的数组。基于某些条件,我想将RDD转换为从b或c中仅获得1列。我有问题声明临时变量来存储rdd。

val data = sc.textFile("1.txt").map(_.split(",",-1))
//var new_data:RDD= null??? what data type should i use??
if(x ==1){
    new_data = data.map{ (a,b,c) => ( b(x) ) }
}else if( x==2 ){
    new_data = data.map{ (a,b,c) => ( c(x) ) }
}
//several more if statement here similar to the two above

//need to use new_data here

如果我使用 val if 语句中声明new_data,它将超出if语句的范围。我尝试使用var,但我不知道如何初始化它。我尝试使用MappedRDD和RDD类型的 var ,但我可以;似乎将map操作的值赋给它。

1 个答案:

答案 0 :(得分:3)

将if包装在一个函数中。 DUUUUUH!抱歉。新功能编程。在发布之前应该考虑更多。所以代码就像:

val new_data = { 
   if(x ==1){ data.map{ (a,b,c) => ( b(x) ) }         
   else if( x==2 ){ data.map{ (a,b,c) => ( c(x) ) 
}