2014-11-18 3 views
0

안녕하세요 2 개 요소와 JavaRDDPair이 : 나는 2를 결합해야스파크 - 가입 2 PairRDD 요소

("TypeA_B", List<jsonCombinedAPlusB>) 

:

("TypeA", List<jsonTypeA>), 

("TypeB", List<jsonTypeB>) 

내가 형의 1 쌍에 2 쌍을 결합해야 목록에 1 개씩 나열됩니다. 각 2 개의 jsons (1 개 유형은 A, 1 개는 B 유형)에는 내가 가입 할 수있는 공통 필드가 있습니다.

A 형의 목록을 고려

은 다른보다 훨씬 작고, 내부해야 가입, 그래서 결과 목록은 유형 A의 목록 작게해야

가장 효율적인 방식은 무엇입니까 그렇게?

답변

2

rdd.join(otherRdd)은 첫 번째 rdd에서 내부 조인을 제공합니다. 이를 사용하려면 두 RDD를 가입 할 공통 속성을 키로하는 PairRDD로 변환해야합니다. 이 (안된 예) 같은 뭔가 : merge(j1,j2) 두 JSON 객체를 결합하는 방법에 특정 비즈니스 로직이

val rddAKeyed = rddA.keyBy{case (k,v) => key(v)} 
val rddBKeyed = rddB.keyBy{case (k,v) => key(v)} 

val joined = rddAKeyed.join(rddBKeyed).map{case (k,(json1,json2)) => (newK, merge(json1,json2))} 

.

+0

OP는 구문에 대해 묻지 않고 성능에 대해 묻지 않았습니다. 즉, b.join (a)보다 더 효율적인 a.join (b) – ihadanny