`
tenght
  • 浏览: 50401 次
社区版块
存档分类
最新评论

如何用Hadoop计算平均值

 
阅读更多

如何用Hadoop计算平均值

数据

data.txt
a 2
a 3
a 4
b 5
b 6
b 7

代码

import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.DoubleWritable;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class Average {
 public static class TokenizerMapper extends
   Mapper<Object, Text, Text, Text> {
  private final static IntWritable one = new IntWritable(1);
  private Text word = new Text();
  public void map(Object key, Text value, Context context)
    throws IOException, InterruptedException {
   StringTokenizer itr = new StringTokenizer(value.toString());
   while (itr.hasMoreTokens()) {
    word.set(itr.nextToken());
    if (itr.hasMoreTokens()) {
     context.write(word, new Text(itr.nextToken() + ",1"));
    }
   }
  }
 }
 static class AverageCombine extends Reducer<Text, Text, Text, Text> {
  public void reduce(Text key, Iterable<Text> values, Context context)
    throws IOException, InterruptedException {
   int sum = 0, cnt = 0;
   for (Text val : values) {
    String[] s1 = val.toString().split(",");
    sum += Integer.parseInt(s1[0]);
    cnt += Integer.parseInt(s1[1]);
   }
   String s;
   System.out.println("Combine" + (s = new String(sum + "," + cnt)));
   context.write(key, new Text(new String(sum + "," + cnt)));
  }
 }
 static class AverageReducer extends
   Reducer<Text, Text, Text, DoubleWritable> {
  public void reduce(Text key, Iterable<Text> values, Context context)
    throws IOException, InterruptedException {
   int sum = 0, cnt = 0;
   for (Text val : values) {
    String[] s = val.toString().split(",");
    sum += Integer.parseInt(s[0]);
    cnt += Integer.parseInt(s[1]);
   }
   String s;
   System.out.println("reduce"
     + (s = new String(key + "," + (sum * 1.0 / cnt))));
   context.write(key, new DoubleWritable(sum * 1.0 / cnt));
  }
 }
 public static void main(String[] args) throws Exception {
  Configuration conf = new Configuration();
  String[] otherArgs = args;
  if (otherArgs.length != 2) {
   System.err.println("Usage:Data Average <in> <out>");
   System.exit(2);
  }
  Job job = new Job(conf, "Data Average");
  job.setJarByClass(Average.class);
  job.setMapperClass(TokenizerMapper.class);
  job.setCombinerClass(AverageCombine.class);
  job.setReducerClass(AverageReducer.class);
  job.setOutputKeyClass(Text.class);
  job.setOutputValueClass(Text.class);
  FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
  FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
  System.exit(job.waitForCompletion(true) ? 0 : 1);
 }
}

执行

bin/hadoop jar Average.jar Average data.txt out

结果

a 3.0
b 6.0

分享到:
评论

相关推荐

    基于hadoop计算机平均分

    【标题】"基于Hadoop计算机平均分"是一个关于利用Java编程语言和Apache Hadoop...通过这个项目,学习者不仅可以掌握如何使用Java和Hadoop计算平均分,还能了解到如何编写MapReduce作业,以及如何组织和管理团队项目。

    java操作hadoop之mapreduce计算整数的最大值和最小值实战源码

    本教程将详细讲解如何使用Java编程语言操作Hadoop的MapReduce来计算整数序列中的最大值和最小值,这对于数据分析和处理任务来说是非常基础且实用的技能。 首先,我们需要理解MapReduce的工作原理。MapReduce是一种...

    MapReduce求行平均值--MapReduce案例

    对于行平均值,我们可以让Partitioner根据行号或标识符进行分区,以确保相同行的数据在同一个Reducer中计算平均值。 在实现这些方法时,需要注意数据类型转换和错误处理。例如,数值可能以字符串形式存在,需要转换...

    基于Hadoop豆瓣电影数据分析实验报告

    - **分析1**:查询平均评分排名前十的国家及其评分,使用GROUP BY和AVG函数计算平均值。 - **分析2**:同样方法分析平均评分排名前十的电影类型。 - **分析3**:统计每种类型电影的平均时长,按时长排序,选择...

    MapReduce求平均值示例程序

    在这个“MapReduce求平均值示例程序”中,我们将深入理解如何利用MapReduce解决计算平均值的问题,同时也会涉及到日志系统在调试中的应用。 首先,Map阶段是MapReduce工作流程的第一步。在这个阶段,原始数据被分割...

    Hadoop 分析统计学生考试成绩1

    使用 Hadoop 对成绩进行统计,这里需要设置命令行参数为 input 和 output,前者是 csv 文件的路径,后者是 Hadoop 任务结束后,将结果输出的路径。 * 运行网页程序:只需要执行 SpringApplication.run...

    hadoop几个实例

    或者使用MapReduce计算大规模数据集的统计指标,如平均值、最大值和最小值。 5. **Hadoop生态系统**:Hadoop并不是孤立的,它有一个丰富的生态系统,包括Hive(用于数据仓库)、Pig(提供高级数据处理语言)、Spark...

    有一个int数组{1,3,5,-2,4,6},要求获取:最大值、最小值、元素和、平均值

    计算平均值时,需要先得到元素和(如上述的17),然后除以数组长度(在这个例子中是6)。所以平均值是17 / 6 ≈ 2.83。 这些操作在大数据分析中尤其重要,因为大数据通常涉及处理大量数值数据,寻找其中的模式、...

    MapReduce求行平均值--标准差--迭代器处理--MapReduce案例

    在这个案例中,"lqc_Data_Avg_SD"很可能是输入数据集的名字,它可能包含了多行数值数据,等待我们用MapReduce方法计算平均值和标准差。实际操作中,我们需要编写Java代码实现MapReduce作业,配置输入输出路径,并...

    Hadoop之外卖订单数据分析系统

    这可能涉及多种统计方法,如平均值、中位数、众数等,以了解订单量、客单价、热门菜品、高峰时段等信息。此外,还可以使用机器学习算法预测订单趋势、识别异常行为或进行用户聚类。 数据可视化是让非技术团队理解...

    细细品味Hadoop_Hadoop集群(第9期)_MapReduce初级案例

    Reducer接收来自所有Mapper的相同键的数据,并执行聚合操作,例如求和、平均值计算或者连接操作。这使得数据处理结果被汇总到一起,提供最终的输出。MapReduce通过这种分而治之的方式,实现了大规模数据处理的高效性...

    基于Hadoop的数据分析.doc

    在`com.hebut.mr`包下,创建一个名为`Score`的类,继承自`Mapper`和`Reducer`,用于处理输入数据并计算平均值。这里的代码导入了Hadoop的相关库,如`Configuration`、`Job`、`Mapper`、`Reducer`等,这些都是Hadoop ...

    hadoop实现聚类算法

    3. **更新质心**:对于每个簇,计算所有数据点的平均值作为新的质心。 4. **重复**:重复第2步和第3步,直到质心不再发生变化或达到最大迭代次数。 **4.1.2 K-Means在MapReduce框架中的适应** 为了提高K-Means算法...

    基于 Hadoop 平台,使用 MapReduce 编程,统计NBA球员五项数据.zip

    这一步骤可以用来计算每位球员的赛季平均值,最高值,或者与其他球员进行比较。 为了运行这个 MapReduce 程序,我们需要编写 Java 代码,并将其打包成 JAR 文件。之后,我们可以通过 Hadoop 命令行工具提交作业,...

    分布式计算开源框架Hadoop入门实践

    Reduce任务通常涉及聚合操作,比如求和或平均值。 #### 六、HDFS的特点与优势 - **高容错性**: HDFS自动将数据复制到集群中的多个节点,即使某些节点发生故障,也可以保证数据的完整性。 - **可扩展性**: HDFS支持...

    Hadoop大数据实训,求最高温度最低温度实验报告

    通过这个实验,学生将深入理解Hadoop MapReduce的工作原理,掌握如何处理自定义数据类型,使用Combiner优化性能,以及如何通过Eclipse提交和管理MapReduce任务。这些都是大数据处理和分布式计算中的核心技能,对于...

    Hadoop权威指南天气数据

    Hadoop是一个开源的分布式计算框架,由Apache软件基金会维护。它的设计目标是使大型数据集在普通硬件上进行快速、可靠和可扩展的处理。Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,...

    mapreduce在hadoop实现词统计和列式统计

    列式统计可能涉及计算文件中特定列的值,如总和、平均值或最大最小值。在mrflowcount工程中,假设我们有一个结构化的数据文件,每一行代表一条记录,每列包含不同类型的数据。MapReduce的处理方式如下: 1. **...

    hadoop权威指南1901&1902;天气数据

    4. **分析**:执行各种统计计算,如平均值、最大值、最小值,或者使用更复杂的算法进行预测和模式识别。 5. **结果导出**:最后,将处理后的结果保存回HDFS或输出到其他系统进行进一步的分析或展示。 在大数据领域...

    hadoop学习笔记(三)

    接下来,Reduce阶段将这些中间结果进行聚合,通常用于计算汇总或聚合函数,如求和、平均值或最大值等。 在这个例子中,我们创建了一个名为`GetMaxValueMapReduceTest`的类,它继承了`MyMapReduceSIngleColumnTest`...

Global site tag (gtag.js) - Google Analytics