2016-09-25 3 views
0

rdds 필드를 키별로 비교하고 일치하지 않는 배열 필드를 채우려 고하지만 for 루프를 사용할 수없는 경우.스칼라 스파크의 경우 For 루프 문제

루프에 대한 1 차 현장 점검을 위해 노력하고 주석되는 코드 아래

하지만 난 그 루프에 대한 작업을하는 방법을 모든 필드 비교

에게 어떤 생각을 충당하기 위해 루프를 사용 싶었던 모든 필드 그래서, b가 동일하지 않은 경우 채울 수 있습니까?

---a is of String type 
---b is of Array[String] type 
---c is of Array[String] type 

var i=0 
val joinedrdd = rdds1.join(rdds2) 
val res= joinedrdd.map { 
    case (a, (b, c)) => (
    //for (i <- 0 until (b.length - 1)){ 
     if (b(i).toString != c(i).toString) 
     {(a, b(i), c(i))} 
    //} 
    ) 
} 
+0

이러한 값을 채우는 기준은 무엇입니까? –

답변

1

내가 모르는 다른 더 효율적인 방법이있을 수 있습니다. 그러나 zip 내부 모두 Arraymap이 다를 경우 해당 값을 찾은 다음 해당 값이 바뀌면 값을 바꿉니다. 난 그냥 here 무엇을했는지

jrdd.map { 
    case (id, (xs, ys)) => (id, xs.zip(ys).map { 
    case (x, y) if x == y => x // if x = y return x or y 
    case _ => "random" // if they differ then return random 
    }) 
} 

당신이 볼 수/시험.

+0

Alberto 덕분에 샘플 코드와 거의 동일한 것을 찾고있었습니다. 그러나 _ _>> "random"에 대한 요소를 채우거나 무시할 수있는 방법이 있다면 ?? 나는 동등하지 않은 요소들과 동등한 요소들을 모두 무시하면됩니다. 미리 감사드립니다. – chaitupadi

+0

예를 보여주십시오. 설명은 꽤 모호합니다 –

+0

신경 쓰지 마 .. 나는 그것을 바로 잡았습니다. 시간을 내 주셔서 감사 드리며 여기에서 도와주세요. :) – chaitupadi