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

如何在hadoop减速器中编写int值

伊光赫
2023-03-14

我正在用Hadoop写一个mapreduce。在reduce方法中,我想用context.write()。但是输出是int类型。我该怎么做?当我使用context.write()时,它显示一个错误:

第二个参数不能是int。

这是我的代码:

public void reduce(Text key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {

            int count = 0;

            for (NullWritable nullWritable : values) {
                count++;
            }

             //context.write(key, count); 
}

这个减少计算一些东西。然后它应该写键和计数变量。

我该怎么做?

答复

我找到了我的答案。我应该新建一个IntWritable类并使用它的方法(set(intValue))。

类似于以下代码:

IntWritable c = new IntWritable();
    public void reduce(Text key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {

                int count = 0;


                for (NullWritable nullWritable : values) {
                    count++;
                }

                c.set(count);
                context.write(key, c);

            }

共有1个答案

权胜泫
2023-03-14

您也可以这样使用它:

context.write(key,new IntWritable(count));
 类似资料:
  • 我有类文件加载到Hadoop文件系统,也有输入文件加载到HDFS。当我在终端中通过hadoop命令运行类文件时,出现了类找不到的错误。例如:我有HDFS内容为WordCount.Class WordCountMapper.Class WordCountReducer.Class SampleInpujt.txt 有人能纠正我哪里做错了吗?或者这是真的可以做到的。

  • 按照我的理解,当一个动作被调用时,所有的减速器都响应。如果action存在于reducer的语句中,则执行action。如果没有,则执行,保留现有状态。 当操作存在于reducer中,但它试图更新的特定属性不存在时,它似乎表现良好,因为没有什么可更新的。 例如,我有一个action creator,用于设置Modals的属性。每个模式都有自己的。我的代码如下所示: 我在多个精简器中都有,但是如果没

  • 在实验了2个reducer之后,阅读了Hadoop Wiki中的HowManyMapsAndReduces,Hadoop:reducer的数量保持不变,并且设置了映射任务和reduce任务的数量,我得到的结论是: 如果我有1个map(我知道这个数字实际上是由Hadoop决定的)和2个reducer(实际上我只提供了1个带有reducer代码的文件,例如),那么下面会发生什么? null 我想第一个

  • 问题内容: 我想知道如何编写探查器?推荐哪些书籍和/或文章?谁能帮我吗? 有人已经做了这样的事情? 问题答案: 我将首先看一下那些开源项目: Eclipse TPTP(http://www.eclipse.org/tptp/) VisualVM(https://visualvm.dev.java.net/) 那我看看JVMTI(不是JVMPI) http://java.sun.com/develo

  • 如果使用MapReduce执行的操作不是可交换和关联的,则组合器不能与还原器相同。 例如,当计算平均值时,组合器对键的值求和,减法器求和,然后将和除以该键的值总数。组合器的代码只有一点修改。如果您可以将同一个类用于组合器和减速机,并拥有一个可以确定当前任务是组合器还是减速机的代码库,会怎么样?如果它发现它是一个减法器,则它将总和除以计数。 大概是这样的: 这样做可能吗?上面的代码< code>TH

  • 问题内容: 问题 我希望某些观点仅适用于网站的高级用户。 在项目中的各种应用程序中如何使用此装饰器? 问题答案: 你不必为此编写自己的装饰器,就像中已经包含的那样。 还有一个扩展此装饰器的代码段(),该代码段非常适合你的用例。 而且,要(重新)使用装饰器,只需将装饰器放在路径中的模块中,即可从任何其他模块导入它。