Apache pig ApachePig:将两个数据集附加到一个数据集

Apache pig ApachePig:将两个数据集附加到一个数据集,apache-pig,union,Apache Pig,Union,我有两个数据集 第一盘A (111) (222) (555) 第二组B (333) (444) (666) 是的 C=接头A,B 附加两个数据集后,输出应为第一个数据集和下一个第二个数据集 预期输出C为 (111) (222) (555) (333) (444) (666) 但是我的输出C是 (333) (444) (666) (111) (222) (555) 如果我使用union,则结果不符合顺序 我很难把它们按规定的顺序加上去 我该怎么做? 我想不出任何帮助,但我会非常感激。我已经尝试了经

我有两个数据集

第一盘A

(111)

(222)

(555)

第二组B

(333)

(444)

(666)

是的 C=接头A,B

附加两个数据集后,输出应为第一个数据集和下一个第二个数据集

预期输出C为

(111)

(222)

(555)

(333)

(444)

(666)

但是我的输出C是

(333)

(444)

(666)

(111)

(222)

(555)

如果我使用union,则结果不符合顺序 我很难把它们按规定的顺序加上去 我该怎么做?
我想不出任何帮助,但我会非常感激。

我已经尝试了经典的联合,对我来说,数据保持有序

但如果它不这样做,让我们试着强迫它:)

正如我在前面的评论中所说的那样,它效率不高,但它能胜任这项工作

--In order to determine nbA you can run the following cmd in the shell : wc -l A.txt
%default nbA 3

A = LOAD 'A.txt' USING PigStorage() AS (a:int);
B = LOAD 'B.txt' USING PigStorage() AS (b:int);

A = RANK A;
B = RANK B;

--DESCRIBE B; 
B = FOREACH B GENERATE rank_B + $nbA, $1;

C= UNION B,A;
C= ORDER C BY $0;
C= FOREACH C GENERATE $1; --If you want to drop the first column
DUMP C;
输出:

(111)
(222)
(555)
(333)
(444)
(666)
其中:

A.txt

和B.txt:

333
444
666

为每个文件添加一个额外的列,给出文件号,然后对修改后的数据集进行并集,然后根据给出“文件号”的列进行排序

A = LOAD 'A.txt' USING PigStorage() AS (a:int);
B = LOAD 'B.txt' USING PigStorage() AS (b:int);
A_mod = FOREACH A GENERATE a, 1 AS file_number;
B_mod = FOREACH A GENERATE b, 2 AS file_number;
unified_mod = UNION A_mod, B_mod;
output = SORT unified_mod BY file_number;

尝试订购
。为此,您必须包含键A和键B才能对其进行排序感谢这里的u注释我在集合A和集合B中只有一列,并且输出不应该是行的顺序,它应该是集合的顺序,就像集合A的所有行都应该位于集合B的第一行和第二行一样,我找不到任何解决方案。
A = LOAD 'A.txt' USING PigStorage() AS (a:int);
B = LOAD 'B.txt' USING PigStorage() AS (b:int);
A_mod = FOREACH A GENERATE a, 1 AS file_number;
B_mod = FOREACH A GENERATE b, 2 AS file_number;
unified_mod = UNION A_mod, B_mod;
output = SORT unified_mod BY file_number;