2013-07-04 82 views
0

我遇到了問題。我不明白怎樣才能爲輸入生成唯一的「十字」。 這是我輸入:在Pig中生成獨特的交叉

A, B, C 

我想獲得:

A,B 
A,C 
B,C 

UDF(數據-FU,撲滿)我可以用什麼來解決這個問題?

+0

是A,B,C 3記錄還是隻有一個包? – zsxwing

回答

1

如果輸入就像

A 
B 
C 

和你想要輸出:

A,B 
A,C 
B,C 

您可以使用cross加入得到的結果。例如:

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; 

如果 「A,B,C」 僅在一個記錄一個包,你可以使用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; 

由於您的描述不是非常詳盡,我只能提供上述解決方案。你可能需要適應它。