2014-07-12 3 views
0

나는이 짧은 문장을 어떻게 설명할지는 모르지만 어쨌든 시도 할 것입니다. 데이터RDD를 스파크 상태로 유지할 임시 변수

(a,b,c) 

B 및 C는 이전 RDD 변환으로 인한 어레이 I 변수에서이 포맷으로 RDD을 가지고있다라는 말. 특정 조건에 따라 RDD를 b 또는 c 중 하나의 열만 가져 오도록 변환하려고합니다. rdd를 저장하기 위해 임시 변수를 선언하는 데 문제가 있습니다. 내가 경우 문 내에서 new_data를 선언 할 를 사용하는 경우

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 

, 그것은 if 문에서 범위를 벗어난 것입니다. 나는 var를 사용하여 시도했지만 그것을 초기화하는 방법을 모른다. 나는 MappedRDD와 RDD 타입의 var을 사용해 보았지만 맵 작업의 값을 지정하는 것처럼 보였다.

답변

3

함수에 if를 포함하십시오. DUUUUHH !! 죄송합니다. 기능 프로그래밍에 익숙하지 않습니다. 게시하기 전에 더 생각 했어야합니다. 코드는 아래와 같습니다 :

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

답으로 표시 할 수 있습니까? – maasg

관련 문제