Apache pig ApachePig:将两个数据集附加到一个数据集
我有两个数据集 第一盘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,则结果不符合顺序 我很难把它们按规定的顺序加上去 我该怎么做?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,则结果不符合顺序 我很难把它们按规定的顺序加上去 我该怎么做? 我想不出任何帮助,但我会非常感激。我已经尝试了经
我想不出任何帮助,但我会非常感激。我已经尝试了经典的联合,对我来说,数据保持有序 但如果它不这样做,让我们试着强迫它:) 正如我在前面的评论中所说的那样,它效率不高,但它能胜任这项工作
--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;