pig:强制每个输入文件一个Map器

relj7zay  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(324)

后续清管器:强制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器?

sirbozc5

sirbozc51#

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

相关问题