2017-03-19 6 views
0

:이 경우 어떻게 k-v 쌍을 얻을 수 있습니까? 나는 몇 가지 데이터를 처리하기 위해 불꽃을 사용하고

val firstRdd = datas.map(data => 
    if (data.Type == 1) (data.id, data)) 
val secondRdd = datas.map(data => 
    if (data.Type == 2) (data.parentId, data)) 

을 한 후 나는 secondRdd와 firstRdd에 가입하고 싶은데, 나는 그들이 KV 쌍에없는 것을 발견, 그래서 나는 할 수 없습니다 : 지금 내가 가진 여기에서 조인을 수행하십시오. 어떻게하면 같은 구조의 kv 쌍을 얻을 수 있습니까?

답변

0

당신은 각 RDD에서 원하는 그 행을 필터링 한 후 쌍 RDD

val firstRdd = datas.filter(_.Type == 1).map(data => 
    (data.id, data)) 
val secondRdd = datas.filter(_.Type == 2).flatMap(data => 
    data.parentId.map(parentId => (parentId, data))) 
firstRdd.join(secondRdd) 
+0

예 그것은 작동 잘 들으을 만드는,하지만 난 아직 여기에 가입 수행 할 수 없습니다 필요, 그것은 말한다 : 형식이 일치하지 예상 : Rdd [Int, NotInferedW], 실제 : Rdd [(Option [int], data)] –

+0

은 같은 유형의 id와 parentId입니까? – Mikel

+0

데이터 유형을 게시 할 수 있습니까? – Mikel