2013-07-04 3 views
0

문제가 있습니다. 입력에 대해 고유 한 "십자가"를 어떻게 생성 할 수 있는지 이해할 수 없습니다.돼지에서 독특한 십자가를 생성하십시오

A, B, C 

내가 좀하고 싶습니다 : 여기 내 입력

UDF (데이터-FU, 돼지 저금통이) 나는이 문제를 해결하는 데 사용할 수있는 무엇
A,B 
A,C 
B,C 

? 사용자의 입력이 출력

A 
B 
C 

하고 싶으세요 경우

+0

A, B, C 3 개의 레코드 또는 하나의 가방입니까? – zsxwing

답변

1

:

A,B 
A,C 
B,C 

당신은 cross 결과를 얻기 위해 가입 할 수 있습니다. 예를 들어 "A, B, C는"하나 개의 레코드 만 가방이 경우

input1 = load 'your_path' as (key: chararray); 
input2 = load 'your_path' as (key: chararray); 
cross_results = cross input1, input2; 
final_results = filter cross_results by input1::key < input2::key; 

, 당신은 flatten를 사용할 수 있습니다. 예 :

-- Assume your input x is something like {A, B, C} in one row 
y = foreach x generate flatten($0) as f1, flatten($0) as f2; 
final_results = filter y by f1 < f2; 

설명에 지나치지 않으므로 위의 해결 방법 만 제공 할 수 있습니다. 그것을 적용해야 할 수도 있습니다.