看起来我错过了什么。我的数据上的 reducer 数量在 HDFS 中创建了那么多文件,但我的数据没有分成多个文件。我注意到的是,如果我group by
对按顺序排列的键执行 a 操作,它可以正常工作,就像下面的数据根据键很好地分成两个文件:
1 hello
2 bla
1 hi
2 works
2 end
但是这个数据没有分裂:
1 hello
3 bla
1 hi
3 works
3 end
我使用的代码适用于一个而不适用于另一个是
InputData = LOAD 'above_data.txt';
GroupReq = GROUP InputData BY $0 PARALLEL 2;
FinalOutput = FOREACH GroupReq GENERATE flatten(InputData);
STORE FinalOutput INTO 'output/GroupReq' USING PigStorage ();
上面的代码创建了两个输出部分文件,但在第一个输入中,它很好地分割了数据并将 key 1
inpart-r-00000
和 key 2
in 放入part-r-00001
。但是对于第二个输入,它会创建两个部分文件,但所有数据都以part-r-00000
. 我缺少什么,我该怎么做才能根据唯一键将数据拆分为多个输出文件?
注意:对于第二个输入,如果我使用PARALLEL 3
(3 个减速器),它会创建三个部分文件并添加所有输入数据和输入文件1
的part-0
所有数据。我发现这种行为很奇怪。顺便说一句,我正在使用 Cloudera CDH3B4。3
part-3