解决了。
这需要更多的参数设置。我并不是说您需要设置所有这些,但我没有时间进行反复试验以查看最低要求的设置是多少。非常高兴在此得到纠正!
将以下内容放在猪脚本的顶部:
SET mapred.max.split.size 131072; -- 128KB
SET mapred.min.split.size 131072;
SET default_parallel 2;
SET pig.noSplitCombination true;
SET mapred.max.jobs.per.node 1;
我已经将我的块设置为 128KB,因为我的输入真的那么小!
另外,设置dfs块大小。在 Amazon EMR 中,通过设置以下 Boostrap 操作来执行此操作:
--hdfs-key-value dfs.block.size=131072
通过查看输出,我们可以看到这已经奏效:
Job Stats (time in seconds): JobId Maps Reduces MaxMapTime MinMapTIme AvgMapTime MedianMapTime MaxReduceTime MinReduceTime AvgReduceTime MedianReducetime Alias Feature Outputs job_201309111450_0001 14 0 15 9 11 12 0 0 0 0 A,cleansed,nostop MAP_ONLY s3n://mybucket/out42,
所以我们可以看到使用了 14 个映射器。还生成了 14 个部分(在我的情况下),总运行时间与单个记录的时间相同(在我的情况下为 4 分钟)。