利用MapReduce计算平均数
利用mapreduce求出股票价格的开盘和收盘平均数
下图为采集到的股票信息,共计1416支股票的信息
因为在linux系统下默认采用utf-8的编码格式,而在win下txt默认采用ANSI编码格式。所以需要在linux下将文件转换一下格式,可以采用:
- package economic;
- import java.io.IOException;
- import java.util.Iterator;
- import java.util.StringTokenizer;
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.fs.Path;
- import org.apache.hadoop.io.FloatWritable;
- import org.apache.hadoop.io.IntWritable;
- import org.apache.hadoop.io.LongWritable;
- 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 ScoreAvgTest {
- /**
- *
- * @author hadoop www.ysgj1688.com KEYIN:输入map的key值,为每行文本的开始位置子字节计算,(0,11...)
- * VALUEIN:输入map的value,为每行文本值 KEYOUT :输出的key值 VALUEOUT:输出的value值
- */
- public static class MapperClass extends Mapper<Object, Text, Text, Text> {
- private Text companyName = new Text();
- private Text open = new Text();
- private Text data=new Text();
- private int n = 0;
- @Override
- protected void map(Object key, Text value, Context context)
- throws IOException, InterruptedException {
- // TODO Auto-generated method stub
- System.out.println(this.n);
- n++;
- String lineText = value.toString();
- String[] args = lineText.split("\\s+");
- if (args.length == 4) {
- this.companyName.set(args[1]);
- }
- if (args.length == 7) {
- try {
- System.out.println("Bfter Reducer:" + companyName + ","
- + args[1]);
- data.set(args[1]+" "+args[4]);
- context.write(this.companyName, data);
- } catch (IOException e) {
- e.printStackTrace(www.vboyl130.cn);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
- /**
- *
- * @author hadoop KEYIN:输入的名字 VALUEIN:输入的分数 KEYOUT:输出的名字 VALUEOUT:统计输出的平均分
- */
- public static class ReducerClass extends Reducer<Text, Text, Text, Text> {
- private Text text = new Text();
- protected void reduce(Text companyName, Iterable<Text> kaipan,
- Context context) throws IOException, InterruptedException {
- // TODO Auto-generated method stub
- double sumOpen = 0.0;
- double sumClose = 0.0;
- int num = 0;
- Iterator<Text> $it = kaipan.iterator();
- while ($it.hasNext())www.vboyule.cn {
- String record = $it.next(www.baohuayule.net ).toString();
- String[] getData=record.split(" ");
- System.out.println(num);
- System.out.println("原始数据:" + record);
- num++;
- System.out.println("第" www.qinlinyule.cn + num + "次循环");
- sumOpen += (Double.valueOf(getData[0])*100);
- sumClose+=(Double.valueOf(getData[1])*100);
- }
- double openPrise = sumOpen / (100 * num);
- double closePrise = sumClose / (100 * num);
- System.out.println("openPrice1:" + openPrise);
- System.out.println("www.120xh.cn closePrice1:" + closePrise);
- openPrise = (double) Math.round(openPrise * 100) / 100;
- closePrise = (double) Math.round(closePrise * 100) / 100;
- System.out.println("sumOpen:" + sumOpen+" sumClose"+sumClose);
- System.out.println("openPrice2:" + openPrise);
- System.out.println("closePrice2:" + closePrise);
- String result ="开盘平均价:"+Double.toString(openPrise)+", 收盘平均价:"+Double.toString(closePrise);
- text.set(result);
- try {
- context.write(companyName, text);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- public static void main(String[] args) throws IOException,
- InterruptedException, www.255055.cn/ ClassNotFoundException {
- Configuration conf = new Configuration();
- conf.set("fs.default.name", "hdfs://localhost:9000");
- String[] otherArgs = new String[] { "export", "output" }; //export为文本输入路径,output为输出路径
- if (otherArgs.length < 2) {
- System.err.println("Usage:wordcount<in>[<in>...]<out>");
- System.exit(2);
- }
- Job job = Job.getInstance(conf, "arg");
- job.setJarByClass(ScoreAvgTest.class);
- job.setMapperClass(MapperClass.class);
- // job.setCombinerClass(ReducerClass.class);
- System.out.println("Mapper over");
- job.setReducerClass(ReducerClass.class);
- System.out.println("Reducer over");
- 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);
- }
- }
运行后生成的output文件夹中的文件
利用MapReduce计算平均数的更多相关文章
- Hadoop阅读笔记(二)——利用MapReduce求平均数和去重
前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一 ...
- MapReduce计算模型的优化
MapReduce 计算模型的优化涉及了方方面面的内容,但是主要集中在两个方面:一是计算性能方面的优化:二是I/O操作方面的优化.这其中,又包含六个方面的内容. 1.任务调度 任务调度是Hadoop中 ...
- (第4篇)hadoop之魂--mapreduce计算框架,让收集的数据产生价值
摘要: 通过前面的学习,大家已经了解了HDFS文件系统.有了数据,下一步就要分析计算这些数据,产生价值.接下来我们介绍Mapreduce计算框架,学习数据是怎样被利用的. 博主福利 给大家赠送一套ha ...
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- 使用mapreduce计算环比的实例
最近做了一个小的mapreduce程序,主要目的是计算环比值最高的前5名,本来打算使用spark计算,可是本人目前spark还只是简单看了下,因此就先改用mapreduce计算了,今天和大家分享下这个 ...
- 利用sklearn计算文本相似性
利用sklearn计算文本相似性,并将文本之间的相似度矩阵保存到文件当中.这里提取文本TF-IDF特征值进行文本的相似性计算. #!/usr/bin/python # -*- coding: utf- ...
- MapReduce计算模型
MapReduce计算模型 MapReduce两个重要角色:JobTracker和TaskTracker. MapReduce Job 每个任务初始化一个Job,没个Job划分为两个阶段:Map和 ...
- MapReduce——计算温度最大值 (基于全新2.2.0API)
MapReduce——计算温度最大值 (基于全新2.2.0API) deprecated: Job类的所有Constructors, 新的API用静态方法getInstance(conf)来去的Job ...
- hadoop笔记之MapReduce的应用案例(利用MapReduce进行排序)
MapReduce的应用案例(利用MapReduce进行排序) MapReduce的应用案例(利用MapReduce进行排序) 思路: Reduce之后直接进行结果合并 具体样例: 程序名:Sort. ...
随机推荐
- SQL递归查询实现组织机构树
系统用到的组织机构树,要实现对当前节点以及其子节点的查询,数据库SQL要用到递归查询,这也是我第一次接触SQL的递归查询. 先说一下什么是递归查询,简单说来是将一个树状结构存储在一张表里,比如一个表中 ...
- django+xadmin在线教育平台(十四)
7-1 django templates模板继承1 机构可以筛选类别 机构可以根据所在地区进行分类 右侧我要学习功能: form表单提交 右下:授课机构排名 页面头部与底部为全局头和全局底部. Dja ...
- MySQL5.6基于GTID的主从复制配置
全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性. GTID实际上是由UUID+TID组成的.其中UUID是一个MySQL实例的唯一标 ...
- SQLSERVER 数据库恢复挂起的解决办法
如果你的数据库还处于挂起状态,请把我下面代码的test改为你的库名,然后执行完,刷新就正常了: USE masterGOALTER DATABASE test SET SINGLE_USERGOALT ...
- tcl之控制流-while
- 解决SecureCRT远程Linux遇到文件不能直接往CRT里直接拖入的问题
不能拖入到CRT的第一个原因可能是Options-->Global Options-->Terminal中的Mouse下的Copy on select没有勾选.当发现自己勾选了也不能往里面 ...
- Linux编译移植Qt4的环境_在OMAPL138平台
Linux编译Qt4的环境_OMAPL138 手里有一块创龙OMAPL138的板子,我要在上面成功移植Qt环境和触摸屏幕,这是我第二次进行Linux的Qt环境移植,发现了很多问题,需要重新整理. 我编 ...
- Hacker Cups and Balls Gym - 101234A 二分+线段树
题目:题目链接 题意:有编号从1到n的n个球和n个杯子. 每一个杯子里有一个球, 进行m次排序操作,每次操作给出l,r. 如果l<r,将[l,r]范围内的球按升序排序, 否则降序排, 问中间位置 ...
- dubbo的rpc异常
Exception in thread "main" com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method ...
- Android面试收集录11 Window+Activity+DecorView+ViewRoot之间的关系
一.职能简介 Activity Activity并不负责视图控制,它只是控制生命周期和处理事件.真正控制视图的是Window.一个Activity包含了一个Window,Window才是真正代表一个窗 ...