在pig中使用foreach的组合

ua4mk5z4  于 2021-06-25  发布在  Pig
关注(0)|答案(2)|浏览(339)

我想在foreach的帮助下生成pig中的组合。有什么可能的办法吗?

My Input:
A
B
C

Objective:
A,B
A,C
B,C

这是我试过的样品。此示例显示“语法错误,'$0'处或附近出现意外符号”。

A = load '/test';
B = foreach A generate $0;
Combination = Cross A, B;
Combination_Filter = foreach Combination generate $0 < $1;

请帮我解决这个问题。提前谢谢

1aaf6o9v

1aaf6o9v1#

你能试试下面的选项吗?
输入:

A
B
C

选项1:

A = LOAD 'input' AS(f1:chararray);
B = LOAD 'input' AS(f2:chararray);
C = CROSS A,B;
D = FILTER C BY A::f1 < B::f2;
DUMP D;

选项2:

A = LOAD 'input' AS (f1:chararray);
B = FOREACH A GENERATE f1 AS (f2:chararray);
C = CROSS A,B;
D = FILTER C BY A::f1 < B::f2;
DUMP D;

输出:

(A,B)
(A,C)
(B,C)
xienkqul

xienkqul2#

仅使用 foreach ,实现类似目标的唯一方法是使用sivasakthi的答案,或者使用自定义自定义自定义项。你可以把所有的收银机放在一个袋子里 group all ,然后运行udf。
udf是另一个问题:如何用pig把(a,b,c)变成(ab,ac,bc)?
代码类似于:

A = load '/test';
A_grouped = group A all;
A_combinations = foreach A_grouped generate CombinationsUDF(A);

相关问题