Hadoop PIG ouput不使用并行运算符拆分为多个文件

Hadoop PIG ouput不使用并行运算符拆分为多个文件,hadoop,parallel-processing,apache-pig,reducers,Hadoop,Parallel Processing,Apache Pig,Reducers,看来我遗漏了什么。“我的数据”上的减缩器数量在HDFS中创建了如此多的文件,但我的数据并没有拆分为多个文件。我注意到,如果我对一个按顺序排列的键执行group by,它可以正常工作,就像下面的数据根据键很好地分割成两个文件: 1 hello 2 bla 1 hi 2 works 2 end 但这些数据并不分离: 1 hello 3 bla 1 hi 3 works 3 end 我使用的代码对其中一个运行良好,而对

看来我遗漏了什么。“我的数据”上的减缩器数量在HDFS中创建了如此多的文件,但我的数据并没有拆分为多个文件。我注意到,如果我对一个按顺序排列的键执行
group by
,它可以正常工作,就像下面的数据根据键很好地分割成两个文件:

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 ();
上面的代码创建了两个输出部件文件,但在第一次输入时,它很好地分割了数据,并将键
1
放在
part-r-00000
中,将键
2
放在
part-r-00001
中。但对于第二个输入,它创建了两个部分文件,但所有数据都以
part-r-00000
结尾。我缺少的是什么,我能做些什么来强制数据根据唯一键分割成多个输出文件


注意:对于第二个输入,如果我使用
PARALLEL 3
(3个减速机),它将创建三个部件文件,并在
part-0
中添加键
1
的所有数据,在
part-3
文件中添加键
3
的所有数据。我觉得这种行为很奇怪。顺便说一句,我使用的是Cloudera CDH3B4

这是因为键所指向的减缩器的数量被确定为
哈希(键)%reducersCount
。如果密钥是整数,
散列(key)=key
。当您有更多的数据时,它们将或多或少地均匀分布,因此您不必担心。

这是因为一个键所指向的减缩器的数量被确定为
哈希(键)%reducersCount
。如果密钥是整数,
散列(key)=key
。当您有更多的数据时,它们将或多或少地均匀分布,因此您不必担心