如何从apache pig下的包中找到所有可能的排列

cl25kdpy  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(497)

我正在尝试使用apache pig找到所有可能的组合,我能够生成置换,但我想消除值的复制,我编写了以下代码:

A = LOAD 'data' AS f1:chararray;
DUMP A;
('A')
('B')
('C')
B = FOREACH A GENERATE $0 AS v1;
C = FOREACH A GENERATE $0 AS v2;
D = CROSS B, C;

我得到的结果是:

DUMP D;
('A', 'A')
('A', 'B')
('A', 'C')
('B', 'A')
('B', 'B')
('B', 'C')
('C', 'A')
('C', 'B')
('C', 'C')

但我想得到的结果是

DUMP R;
('A', 'A')
('A', 'B')
('A', 'C')
('B', 'B')
('B', 'C')
('C', 'C')

我该怎么做?我避免使用字符比较,因为一个字符串可能在多行中多次出现

qq24tv8q

qq24tv8q1#

您可以筛选d以删除不需要的行。例如

A = load 'testdata.txt';
B = foreach A generate $0;
C = Cross A, B;
D = filter C by $0 <= $1;
dump D;

打印出来的

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

当“testdata.txt”出现时

A
B
C

相关问题