后续清管器:强制udf发生在减速器中或设置Map器的数量。我有一个自定义项,它在我的pig工作流中作为Map步骤运行。它需要一个x文件列表,每个从上一步保存的reducer有一个。我希望有x个Map器(每个输入文件1个)来运行这个自定义项,因为它非常耗时,所以pig没有像我希望的那样并行运行它。基于hadoop流:单个文件或多个文件的Map。不要分裂,我想解决办法是防止分裂,所以我做了一个Pig负载函数一样。
public class ForceMapperPerInputFile extends PigStorage {
@Override
public InputFormat getInputFormat() {
return new MapperPerFileInputFormat();
}
}
class MapperPerFileInputFormat extends PigTextInputFormat {
@Override
protected boolean isSplitable(JobContext context, Path file) {
return false;
}
}
当我使用它时,它的效果与我想要的完全相反,Map器任务的数量减少了近一半。
我如何才能真正强制每个输入文件只有一个Map器?
1条答案
按热度按时间sirbozc51#
SET pig.noSplitCombination true;
(或-Dpig.noSplitCombination=true
作为运行脚本时的命令行选项之一)