当前位置: 首页 > 知识库问答 >
问题:

hadoop mapreduce作业不运行reducer

苏阳州
2023-03-14

我试图运行WordCount示例的一个变体,这个变体是,映射器输出文本作为键和文本作为值,而还原器输出文本作为键和NullWritable作为值。

除了地图,减少签名,我把主要的方法是这样的:

//start a conf
Configuration conf = new Configuration();
conf.set("str",str);

//initialize a job based on the conf
Job job = new Job(conf, "wordcount");
job.setJarByClass(org.myorg.WordCount.class);

//the reduce output
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(NullWritable.class);

//the map output
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);

//Map and Reduce
job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);


//take hdfs locations as input and output
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);

FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));

//run the job
job.waitForCompletion(true);
map(LongWritable key, Text value, Context context){
.........
context.write("1000000","2");
}
reduce(Text key, Iterable<Text> values, Context context){
 .......
 context.write("v",NullWritable.get());
}

共有1个答案

轩辕阳焱
2023-03-14

尝试将@override添加到reduce函数中,以确保它实际上覆盖了该行为。如果您的签名不匹配,那么它将使用默认的reduce,它不执行任何操作。如果没有正确重写,将会出现编译器错误。

@override
reduce(Text key, Iterable<Text> values, Context context){
 .......
 context.write("v",NullWritable.get());
}
 类似资料:
  • 第一次使用cron作业,我在linux上相对较新,我似乎无法让它工作,如果我只是在命令行中手动运行它,它工作得很好,但不是作为cron作业。 我是这样设置的: 合同-e 插入模式 */3****root(cd/home/ec2 user/;java-jar-feedPuller-1.jar)(每3分钟测试一次) 保存并退出 它说它已经创建了一个新的cron作业选项卡 现在,当我做crontab-l

  • 问题内容: 因此,我试图将cron作业设置为我创建的守护程序的一种看门狗。如果守护程序出错并失败,我希望cron作业定期重新启动它…我不确定这样做的可能性如何,但是我通读了一些cron教程,找不到任何可以做我的事情正在寻找… 我的守护程序是从Shell脚本开始的,所以我真的只是在寻找一种方法来运行cron作业,前提是该作业的先前运行仍未运行。 它确实为我试图使用锁定文件提供了解决方案,但我不确定是

  • 问题内容: 我想清除所有超过1周的SQL数据库,我想每晚进行一次。所以,我要安排一份工作。如何查询mySQL,而不必每次都手动输入密码? PHP中的查询如下: 有没有办法将其作为shell脚本运行?如果没有,有没有一种方法可以使cron运行php文件? 问题答案: 尝试创建如下所示的shell脚本: 然后可以将其添加到cron

  • 我试图在hadoop中运行一个程序,但我一直得到: 线程“main”java.lang.unsupportedClassVersionError:hadoop_project_16/aggregatejob:不支持major.minor版本52.0在java.lang.ClassLoader.DefineClass1(本机方法)在java.lang.ClassLoader.DefineClass(

  • 问题内容: 在Linux中,是否可以在前台(或交互模式)运行cron作业?(我有一个定期运行的程序来接受用户输入并进行一些处理。因此,我想将其安排为可以在前台运行的Cron作业)。 问题答案: 在您的用户的上尝试一下: 它将在执行脚本的同时(每小时)打开一次,并在脚本退出后退出。当然,您应该修改零件以适合您的需求。

  • 问题内容: 我想让cron作业使用一个已经存在的名为my_env的anaconda python环境执行python脚本。我唯一想做的是让cron作业运行一个名为的脚本,该脚本又会激活env,然后运行python脚本。 尝试从命令行执行此脚本不起作用: 我需要做什么以确保激活正确的环境。可以像我5岁时向我解释一下。 问题答案: 不要打电话,但是。是bash命令。 要不就 因为您添加了bash sh