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

使用MapReduce计算数字的平均值

寇景明
2023-03-14

我一直在尝试编写一些代码来使用MapReduce查找数字的平均值。

我尝试使用全局计数器来实现我的目标,但是我无法在映射器的< code>map方法中设置计数器值,也无法在缩减器的< code>reduce方法中检索计数器值。

我是否必须在< code>map中使用全局计数器(例如,通过使用所提供的< code>Reporter的< code>incrCounter(key,amount))?或者你会建议任何不同的逻辑来得到一些数字的平均值吗?

共有3个答案

秦诚
2023-03-14

平均值是总和/大小。如果sum类似于sum=k1 k2 k3…,那么您可以在求和之后或求和期间除以大小。所以平均值也是k1/尺寸k2/尺寸k3/尺寸。。。

Java8代码很简单:

    public double average(List<Valuable> list) {
      final int size = list.size();
      return list
            .stream()
            .mapToDouble(element->element.someValue())
            .reduce(0,(sum,x)->sum+x/size);
    }

因此,您首先将列表中元素的每个值映射为双精度,然后通过减少函数求和。

许天逸
2023-03-14

使用所有3个映射器/合并器/缩减器来解决问题。完整代码请参考下面的链接

http://alchemistviews.blogspot.com/2013/08/calculate-average-in-map-reduce-using.html

周辰沛
2023-03-14

逻辑非常简单:如果所有数字都具有相同的键,则映射器将发送您要查找具有相同键的平均值的所有值。因此,在化简器中,您可以对迭代器中的值求和。然后,您可以在迭代器工作的数字时间上保留一个计数器,这解决了要平均多少个项目的问题。最后,在迭代器之后,您可以通过将总和除以项目数来找到平均值。

小心,如果组合器类设置为与reducer相同的类,则此逻辑将不起作用。。。

 类似资料:
  • 问题内容: 编辑:我已经写了平均的代码,但我不知道如何使它也使用从我的args.length而不是数组的整数 我需要编写一个Java程序,该程序可以计算:1.读入的整数数2.平均值-不必是整数! 注意!我不想从数组中计算平均值,但是要在args中计算整数。 目前我已经写了这个: 谁能指导我正确的方向?还是举个例子,以书面形式指导我塑造这段代码? 提前致谢 问题答案: 只需对您的代码进行一些小的修改

  • 问题内容: Y1961 Y1962 Y1963 Y1964 Y1965 Region 0 82.567307 83.104757 83.183700 83.030338 82.831958 US 1 2.699372 2.610110 2.587919 2.696451 2.846247 US 2 14.131355 13.690028 13.599516 13.649176 13.649046

  • 问题内容: 我希望我能弄清楚。我需要生成一个平均值为AVG_AMT(整数)的表,并且没有小数。它可以舍入或截断。这张桌子真的没关系。 这是我试图写的: 有什么建议? 问题答案:

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 问题内容: 我正在尝试使用下面的代码来计算用户输入的一组值的平均值,并将其显示在中,但它无法正常工作。假设用户输入7、4和5,该程序在应显示5.3时显示平均值。 代码有什么问题? 问题答案: 当您拥有增强的for循环时,为什么还要对索引使用笨拙的for循环?

  • 问题内容: 我希望函数计算Double型数组的平均值。该数组称为“投票”。现在,我有10个号码。 当我致电以获取阵列投票的平均值时,它不起作用。 这是我的代码: 我如何在此处称平均值以获得平均值? 问题答案: 您应该使用reduce()方法对数组求和,如下所示: Xcode Xcode 10.2+•Swift 5或更高版本 如果您需要使用类型的总和,那么它已经被协议扩展方法所涵盖,因此您只需要实现