2014-12-16 4 views
0

key(a,b)의 표 X와 key(a)의 표 Y이 있습니다. Spark에서 여러 API 함수를 검색했지만 두 표 모두에 대한 조인을 제공 할 수있는 항목을 찾을 수 없습니다. key(a).Spark 또는 Pyspark의 복잡한 내부 조인

는 두 개의 데이터 구조가

X.take(1) -> made of key(a,b) 

[((u'"1"', u'"B8"'), (u'"1"', u'"B8"', array([[ 7.16677290e-01, 4.15236265e-01, 7.02316511e-02]])))] 

Y.take(1) -> have key(a) 

[(u'"5"', (u'"5"', array([[ 0.86596322, 0.29811589, 0.29083844, 0.51458565, 0.23767414]])))] 

지금, 나는 a -> [a,b,array_1,array_2] 같은 구조 무언가를 원하는 (두 개의 서로 다른 키를 사용하여 두 개의 테이블로 생각)하게한다.

Cogroup은 key(a,b)key(a)의 카티 션 곱을 반환하므로 내 용도로 사용되지 않았습니다.

a -> [a,b,array_1,array_2] :에

어떤 제안이나 힌트는 어떻게 같은 행이 데이터 구조를 얻을 수 있습니다.

답변

1

전체 참여 기간 동안 키를 (a,b)으로 유지해야하는 이유가 있습니까? 조인 작업을하기 위해 RDD의 구조를 약간 변경할 수있는 것처럼 보입니다.

((a,b),[value])에서 (a,(b,[value]))으로 변경 한 다음 (a,[value])과 결합하십시오. 결국 (a, Iterable((b,[value])), Iterable([value])으로 끝납니다.

+0

키를 변경할 수는 있지만 그렇게하고 싶지는 않습니다. [a, b, [value1], value2]에 더 가깝지 않습니다. – ssvk3

+0

예. 당신은'(a, (a, b, [value1], [value2]))'에'(a, Iterable ((b, [value]), 반복 가능 ([value])'를 매우 쉽게 맵핑 할 수 있습니다. – climbage