我;我不确定如何用尽可能短的句子描述这一点,但无论如何我都会尝试。假设我在这个格式中有一个名为 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操作的值赋给它。
答案 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) )
}