2016-06-13 1 views
2

에서 관련 행을 찾기 : 만든 곳나는 dataframe 유형 (이름, 아이디, 부서, DeptId) 가지고 dataframe

john doe | J30 | NSL | 01 
max payne | M23 | ATL | 22 
doe john | D02 | NSL | 01 
joyee  | J04 | NSL | 01 
payne max | P04 | ATL | 22 

일부 데이터가 잘못 입력 된 새로운 ID 년대되었다. 나는 목록을

J30 -> [ J30,D02 ] 
M23 -> [ M23,P04 ] 
D02 -> [ J30,D02 ] 
J04 -> [ J04 ] 
P04 -> [ M23,P04 ] 

궁극적으로 제거 중복

U1 -> [ J30,D02 ] 
U2 -> [ M23,P04 ] 
U3 -> [ J04 ] 

내가 가진 데이터 세트가 크다

을 얻으려고, 내가 작업을 끝내야 어쨌든 스파크를 통해 찾을 수 없습니다입니다. 모든 포인터가 좋을 것입니다.

답변

2

데이터 프레임이 df라고 가정하고 이름과 두 번째 이름의 순서가 데이터 세트에서 발생한 실수 인 경우 reduceByKey 메소드를 사용하여 그룹화 할 수 있습니다.

df.map(row => (row(0).toString.split(" ").toSet, row(1))). 
    reduceByKey(Set(_, _)).collect 

res41: Array[(scala.collection.immutable.Set[String], Any)] = 
     Array((Set(joyee),J04), (Set(john, doe),Set(J30, D02)), (Set(max, payne),Set(M23, P04))) 
+0

고맙습니다. :-) –