gpt4 book ai didi

java - 如何在 MapReduce 作业开始使用 JobControl 之前执行操作

转载 作者:可可西里 更新时间:2023-11-01 16:31:29 26 4
gpt4 key购买 nike

我有 JobControl 控制 n 个作业链。

    for (int i = 0; i < iterations; i++) {
Job eStep = EStepJob.createJob(config);
Job mStep = MStepJob.createJob(config);
emChain.add(new ControlledJob(eStep, getDeps(emChain)));
emChain.add(new ControlledJob(mStep, getDeps(emChain)));
}
jobControl.addJobCollection(emChain);

我只想在每个作业开始之前清理输出目录;但在作业初始化时不得清除目录。我目前的解决方案是将清除代码放入映射阶段,这会大大减慢执行速度。

        public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
FileSystem fs = FileSystem.get(context.getConfiguration());
if (fs.exists(new Path(context.getConfiguration().get(
AR_PROBS_OUTPUT)))) {
fs.delete(
new Path(context.getConfiguration()
.get(AR_PROBS_OUTPUT)), true);
}

有没有更合适的方法?

最佳答案

您可以使用 Mapper.setup()方法相同。它是在任何节点上启动任何 map task 之前执行的方法。我相信您在代码中初始化文件系统时正在使用 HDFS。

无论如何,代码应该以同样的方式工作。但是它被执行的次数将等于生成的 Mapper 任务的数量,而不是每个 Mapper 任务被执行的次数!

关于java - 如何在 MapReduce 作业开始使用 JobControl 之前执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29654516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com