在pig中生成唯一的交叉

oknwwptz  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(273)

我有个问题。我不明白如何为输入生成唯一的“交叉”。以下是我的意见:

A, B, C

我想得到:

A,B
A,C
B,C

我可以用什么自定义项(datafu,piggybank)来解决这个问题?

4ioopgfo

4ioopgfo1#

如果你的意见是

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;

由于您的描述不是很详尽,我只能提供上述解决方案。你可能需要调整它。

相关问题