Pig:每个输入文件强制一个映射器

时间:2013-04-03 19:50:53

标签: apache-pig input-split

跟进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;
    }
}

当我使用它时,它与我想要的效果完全相反,映射器任务的数量减少了近一半。

如何在每个输入文件中实际强制使用一个映射器?

1 个答案:

答案 0 :(得分:1)

SET pig.noSplitCombination true;

(或-Dpig.noSplitCombination=true作为运行脚本时的命令行选项之一)