如何找到在Apache猪所有可能的排列从袋子(How To Find All Possible Pe

2019-10-20 17:45发布

我试图找到使用Apache猪可能的所有组合,我是能够产生置换,但我想消除值我写这篇文章的代码复制:

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')

我怎样才能做到这一点? 我避免使用字符的比较,因为它可能有一个字符串多次出现在多线

Answer 1:

您可以过滤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


文章来源: How To Find All Possible Permutations From A Bag under apache pig