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

映射器和组合器的hadoop中的不同上下文类型

柳飞鸾
2023-03-14

你好,我正在尝试实现java hadoop应用程序。我想制作映射器

我在主类中有这样的配置:

public static void main(String[] args) throws Exception {
 Configuration conf = new Configuration();
 Job job = Job.getInstance(conf, "NY statistics");
 job.setJarByClass(NYStatisticsOwnWritableComparable.class);
 job.setMapperClass(TokenizerMapper.class);
 job.setCombinerClass(Combiner.class);
 job.setReducerClass(IntSumReducer.class);
 job.setOutputKeyClass(NaicsAreaPair.class);
 job.setOutputValueClass(LongWritable.class);
 //job.setPartitionerClass(Rozdelovac.class);
 FileInputFormat.addInputPath(job, new Path(args[0]));
 FileOutputFormat.setOutputPath(job, new Path(args[1]));
 //job.setNumReduceTasks(3);
 System.exit(job.waitForCompletion(true) ? 0 : 1);
}

在这里,我必须说将使用哪个输出键和输出值。有没有可能将其设置为 ok 对于映射器使用此输出键和值,但对于组合器使用不同的?

非常感谢您的回答

共有2个答案

余歌者
2023-03-14

为什么要使用组合器?组合器的目的是通过减少通过网络发送的数据来实现“性能”。有几个限制,比如输入/输出类型必须与映射器输出(键/值)类型/减缩器输入(键/数值)类型匹配,它执行的函数应该是关联的和可交换的。请参阅此处的示例http://www.philippeadjiman.com/blog/2010/01/14/hadoop-tutorial-series-issue-4-to-use-or-not-to-use-a-combiner/

你想要什么作为你的组合器,让它成为减速器

欧阳斌
2023-03-14

它不是。组合器输出必须与映射器输出相同。

 类似资料:
  • 我仍在试图获得何时使用Hadoop combiner类的直觉(我看到了一些文章,但它们对我的情况没有特别的帮助)。 我的问题是,当组合器类的值为 Text 类时,使用组合器类是否合适?例如,假设我们有来自映射器的以下输出: 我们可以在这里应用一个组合器类吗? 在它到达减速器之前?

  • 我在一个伪分布式hadoop设置上运行mapreduce作业。在哪里可以找到映射器、分割器和合并器的输出文件?有办法检查每个操作的输出吗?

  • 问题内容: hadoop的新手,并试图从此处了解mapreduce wordcount示例代码。 文档中的映射器是- 我看到在mapreduce字数示例中,映射代码如下 问题- Object类型的此键的作用是什么?如果映射器的输入是文本文档,那么我假设其中的值将是hadoop已分区并存储在HDFS中的文本块(64MB或128MB)。 更一般而言,此输入键Keyin在地图代码中的用途是什么? 任何指

  • 我在1.1GB文件上运行Hadoop MapReduce多次,使用不同数量的映射器和化简器(例如,1个映射器和1个化简器,1个映射器和2个化简器,1个映射器和4个化简器,...) Hadoop安装在具有超线程的四核机器上。 以下是按最短执行时间排序的前 5 个结果: 1 - 8 个化简器和 1 - 8 个映射器的结果:列 = 映射器行数 = 化简器数 (1)当我有8个映射器时,程序运行速度似乎稍快

  • 我得到这个错误: 14/12/10 18:11:01 INFO Mapred.JobClient:任务Id:Attest_201412100143_0008_M_000000_0,状态:失败java.io.ioException:溢出在org.apache.hadoop.mapred.maptask$MapOutputBuffer.Collect(maptask.java:425)在wordcou

  • 我正在使用MapReduce为web搜索建立一个倒排索引。我知道如何使用一个键类型的MapReduce,您在这里设置它: 但是,如果我的密钥可以是不同类型的,那是不是支持呢?例如,一个键可能只是文本,另一个键可能是PairofWritables。我想为从映射器到reducer的输出,以及从reducer到最终输出的输出设置不同的键类型。我已经看到了一个名为MultipleOutput的类,它允许指