2011-10-17 1 views
0

나는 두 개의 파일, 하나는 당신은 내가 토큰 (123) 한 시간이 파일 A에서 볼 수있는-기록Apache PIG에서이 내부 조인을 제대로 수행하려면 어떻게해야합니까?

123^record1 
222^record2 
333^record3 

다른 파일 불리는 B-기록

123^jim 
123^jim 
222^mike 
333^joe 

라고했다. 파일 B에는 두 번 있습니다. Apache PIG를 사용하는 방법이 있습니까? 예를 들어 A 파일에서 하나의 레코드 만 조인 할 수 있습니다.

(123,record1,123,jim) 
(123,record1,123,jim) 
(222,record2,222,mike) 
(333,record3,333,joe) 

내가 정말 원하는 것은 (통지 토큰 (123)은 한 번 가입 한 후 거기에 아니라) : 여기

는 산출

arecords = LOAD '$a' USING PigStorage('^') as (token:chararray, type:chararray); 

brecords = LOAD '$b' USING PigStorage('^') as (token:chararray, name:chararray); 


x = JOIN arecords BY token, brecords BY token; 

dump x; 

아래에 다음과 같은 출력 내 현재 스크립트입니다

(123,record1,123,jim) 
(222,record2,222,mike) 
(333,record3,333,joe) 

어떤 아이디어가 있습니까?

답변

4

너무 많은 덕분에 나는 같은 것을 할 것입니다 :

arecords = LOAD '$a' USING PigStorage('^') as (token:chararray, type:chararray); 

brecords = LOAD '$b' USING PigStorage('^') as (token:chararray, name:chararray); 

bdistinct = DISTINCT brecords; 

x = JOIN arecords BY token, bdistinct BY token; 

dump x; 
+0

완전히 바로, 내 오른쪽에 별개의 일을해야합니다. 그게 다 잘 됐니, 고마워! – James

+0

당신은 환영합니다 – frail

관련 문제