跟进Pig: Force UDF to occur in Reducer or set number of mappers。我有一个UDF,它在我的猪工作流程中作为地图步骤运行。它需要一个X文件列表,每个减速器1个从前一步骤中保存它。我希望有X映射器(每个输入文件1个)来运行这个UDF,因为它非常耗时,因此Pig没有像我想要的那样并行运行它。基于Hadoop streaming: single file or multi file per map. Don't Split,我认为解决方案是防止分裂,所以我做了一个像猪一样的Load Func。
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;
}
}
当我使用它时,它与我想要的效果完全相反,映射器任务的数量减少了近一半。
如何在每个输入文件中实际强制使用一个映射器?
答案 0 :(得分:1)
SET pig.noSplitCombination true;
(或-Dpig.noSplitCombination=true
作为运行脚本时的命令行选项之一)