복붙노트

[HADOOP] 스파크 - 2 개 PairRDD 요소를 결합

HADOOP

스파크 - 2 개 PairRDD 요소를 결합

안녕하세요이 개 요소가 JavaRDDPair 있습니다 :

("TypeA", List<jsonTypeA>),

("TypeB", List<jsonTypeB>)

나는 형의 1 쌍에 2 쌍을 결합해야합니다 :

("TypeA_B", List<jsonCombinedAPlusB>)

나는 각 2 jsons (A 형 1과 B 형의 1) 나는에 가입 할 수 있습니다 몇 가지 일반적인 필드가 1 개 목록에이 목록을 결합해야합니다.

타입 A의리스트가 다른 것보다 상당히 작다 고려하고, 그 결과리스트 형식의리스트 A.만큼 작아야하므로 조인은 내부되어야

이를위한 가장 효율적인 방법은 무엇입니까?

해결법

  1. ==============================

    1.rdd.join (otherRdd)는 내부 처음 RDD에 가입합니다. 그것을 사용하려면, 당신은 당신이에 가입됩니다 키를 공통 속성으로 가진 PairRDD에 모두 RDDs 변환해야합니다. 이런 식으로 뭔가 (예, 검증되지 않은) :

    rdd.join (otherRdd)는 내부 처음 RDD에 가입합니다. 그것을 사용하려면, 당신은 당신이에 가입됩니다 키를 공통 속성으로 가진 PairRDD에 모두 RDDs 변환해야합니다. 이런 식으로 뭔가 (예, 검증되지 않은) :

    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))}
    

    어디 병합 (J1, J2)는이 JSON 객체를 결합하는 방법에 특정 비즈니스 로직이다.

  2. from https://stackoverflow.com/questions/26992856/spark-joining-2-pairrdd-elements by cc-by-sa and MIT license