gpt4 book ai didi

Hadoop PIG 输出未使用 PARALLEL 运算符拆分为多个文件

转载 作者:可可西里 更新时间:2023-11-01 15:42:11 30 4
gpt4 key购买 nike

看来我错过了什么。我的数据上的 reducer 数量在 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 ();

上面的代码创建了两个输出部分文件,但在第一个输入中它很好地拆分了数据并将 key 1 放入 part-r-00000 和 key 2part-r-00001 中。但是对于第二个输入,它创建了两个部分文件,但所有数据最终都在 part-r-00000 中。我缺少什么,我该怎么做才能根据唯一键将数据拆分为多个输出文件?

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

最佳答案

那是因为一个 key 去的 reducer 的数量被确定为 hash(key) % reducersCount。如果键是一个整数,hash(key) == key。当您拥有更多数据时,它们或多或少会均匀分布,因此您不必担心。

关于Hadoop PIG 输出未使用 PARALLEL 运算符拆分为多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535134/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com