You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hadoop MapReduce作业如何生成无额外_SUCCESS文件的输出

如何在Hadoop MapReduce作业中禁用_SUCCESS文件生成

嘿,这个需求我太熟悉了——有时候下游脚本或者数据处理流程里,那个自动生成的_SUCCESS文件确实会添点小麻烦。要解决这个问题,有两种简单可靠的方法,看你适合哪种场景:

方法一:提交作业时通过命令行参数指定

如果你是通过hadoop jar命令提交作业,可以直接在命令里添加一个配置参数,禁用成功标记文件的生成:

hadoop jar your-job-jar-file.jar com.your.package.YourMainClass \
  -Dmapreduce.job.success.completion.indicator=false \
  /path/to/input /path/to/output

这个参数的作用就是告诉Hadoop:作业完成后不要创建_SUCCESS文件。

方法二:在MapReduce代码中配置Job对象

如果你是开发MapReduce作业的开发者,可以在代码里直接给Job实例设置这个配置,这样每次运行作业都会自动生效,不用每次提交都加参数:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.Job;

public class YourMapReduceJob {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "Your Job Name");
        
        // 常规配置:设置主类、Mapper、Reducer、输出格式等
        job.setJarByClass(YourMapReduceJob.class);
        // ... 其他必要配置
        
        // 关键配置:禁用_SUCCESS文件
        job.getConfiguration().setBoolean("mapreduce.job.success.completion.indicator", false);
        
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

注意事项

  • 如果你使用的是Hadoop 1.x版本(比较老了,但还是有人在用),参数名要改成mapred.job.success.completion.indicator(前缀是mapred而不是mapreduce)。
  • 这个设置只会影响_SUCCESS文件的生成,不会干扰作业的正常执行和输出结果的写入,完全不用担心数据问题。

内容的提问来源于stack exchange,提问作者Gopal Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:53:34