利用mapreduce求出股票价格的开盘和收盘平均数

下图为采集到的股票信息,共计1416支股票的信息

因为在linux系统下默认采用utf-8的编码格式,而在win下txt默认采用ANSI编码格式。所以需要在linux下将文件转换一下格式,可以采用:

递归转换(包括子文件夹)
find default -type d -exec mkdir -p utf/{} \;
find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \;
 
这两行命令将default目录下的文件由GBK编码转换为UTF-8编码,目录结构不变,转码后的文件保存在utf/default目录下。
  1. package economic;
  2. import java.io.IOException;
  3. import java.util.Iterator;
  4. import java.util.StringTokenizer;
  5. import org.apache.hadoop.conf.Configuration;
  6. import org.apache.hadoop.fs.Path;
  7. import org.apache.hadoop.io.FloatWritable;
  8. import org.apache.hadoop.io.IntWritable;
  9. import org.apache.hadoop.io.LongWritable;
  10. import org.apache.hadoop.io.Text;
  11. import org.apache.hadoop.mapreduce.Job;
  12. import org.apache.hadoop.mapreduce.Mapper;
  13. import org.apache.hadoop.mapreduce.Reducer;
  14. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  15. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  16. import org.apache.hadoop.util.GenericOptionsParser;
  17. public class ScoreAvgTest {
  18. /**
  19. *
  20. * @author hadoop www.ysgj1688.com KEYIN:输入map的key值,为每行文本的开始位置子字节计算,(0,11...)
  21. *         VALUEIN:输入map的value,为每行文本值 KEYOUT :输出的key值 VALUEOUT:输出的value值
  22. */
  23. public static class MapperClass extends Mapper<Object, Text, Text, Text> {
  24. private Text companyName = new Text();
  25. private Text open = new Text();
  26. private Text data=new Text();
  27. private int n = 0;
  28. @Override
  29. protected void map(Object key, Text value, Context context)
  30. throws IOException, InterruptedException {
  31. // TODO Auto-generated method stub
  32. System.out.println(this.n);
  33. n++;
  34. String lineText = value.toString();
  35. String[] args = lineText.split("\\s+");
  36. if (args.length == 4) {
  37. this.companyName.set(args[1]);
  38. }
  39. if (args.length == 7) {
  40. try {
  41. System.out.println("Bfter Reducer:" + companyName + ","
  42. + args[1]);
  43. data.set(args[1]+" "+args[4]);
  44. context.write(this.companyName, data);
  45. } catch (IOException e) {
  46. e.printStackTrace(www.vboyl130.cn);
  47. } catch (InterruptedException e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. }
  52. }
  53. /**
  54. *
  55. * @author hadoop KEYIN:输入的名字 VALUEIN:输入的分数 KEYOUT:输出的名字 VALUEOUT:统计输出的平均分
  56. */
  57. public static class ReducerClass extends Reducer<Text, Text, Text, Text> {
  58. private Text text = new Text();
  59. protected void reduce(Text companyName, Iterable<Text> kaipan,
  60. Context context) throws IOException, InterruptedException {
  61. // TODO Auto-generated method stub
  62. double sumOpen = 0.0;
  63. double sumClose = 0.0;
  64. int num = 0;
  65. Iterator<Text> $it = kaipan.iterator();
  66. while ($it.hasNext())www.vboyule.cn  {
  67. String record = $it.next(www.baohuayule.net ).toString();
  68. String[] getData=record.split(" ");
  69. System.out.println(num);
  70. System.out.println("原始数据:" + record);
  71. num++;
  72. System.out.println("第" www.qinlinyule.cn + num + "次循环");
  73. sumOpen += (Double.valueOf(getData[0])*100);
  74. sumClose+=(Double.valueOf(getData[1])*100);
  75. }
  76. double openPrise = sumOpen / (100 * num);
  77. double closePrise = sumClose / (100 * num);
  78. System.out.println("openPrice1:" + openPrise);
  79. System.out.println("www.120xh.cn  closePrice1:" + closePrise);
  80. openPrise = (double) Math.round(openPrise * 100) / 100;
  81. closePrise = (double) Math.round(closePrise * 100) / 100;
  82. System.out.println("sumOpen:" + sumOpen+"   sumClose"+sumClose);
  83. System.out.println("openPrice2:" + openPrise);
  84. System.out.println("closePrice2:" + closePrise);
  85. String result ="开盘平均价:"+Double.toString(openPrise)+",   收盘平均价:"+Double.toString(closePrise);
  86. text.set(result);
  87. try {
  88. context.write(companyName, text);
  89. } catch (IOException e) {
  90. e.printStackTrace();
  91. } catch (InterruptedException e) {
  92. e.printStackTrace();
  93. }
  94. }
  95. }
  96. public static void main(String[] args) throws IOException,
  97. InterruptedException, www.255055.cn/   ClassNotFoundException {
  98. Configuration conf = new Configuration();
  99. conf.set("fs.default.name", "hdfs://localhost:9000");
  100. String[] otherArgs = new String[] { "export", "output" };    //export为文本输入路径,output为输出路径
  101. if (otherArgs.length < 2) {
  102. System.err.println("Usage:wordcount<in>[<in>...]<out>");
  103. System.exit(2);
  104. }
  105. Job job = Job.getInstance(conf, "arg");
  106. job.setJarByClass(ScoreAvgTest.class);
  107. job.setMapperClass(MapperClass.class);
  108. //      job.setCombinerClass(ReducerClass.class);
  109. System.out.println("Mapper over");
  110. job.setReducerClass(ReducerClass.class);
  111. System.out.println("Reducer over");
  112. job.setOutputKeyClass(Text.class);
  113. job.setOutputValueClass(Text.class);
  114. FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
  115. FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
  116. System.exit(job.waitForCompletion(true) ? 0 : 1);
  117. }
  118. }

运行后生成的output文件夹中的文件

利用MapReduce计算平均数的更多相关文章

  1. Hadoop阅读笔记(二)——利用MapReduce求平均数和去重

    前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一 ...

  2. MapReduce计算模型的优化

    MapReduce 计算模型的优化涉及了方方面面的内容,但是主要集中在两个方面:一是计算性能方面的优化:二是I/O操作方面的优化.这其中,又包含六个方面的内容. 1.任务调度 任务调度是Hadoop中 ...

  3. (第4篇)hadoop之魂--mapreduce计算框架,让收集的数据产生价值

    摘要: 通过前面的学习,大家已经了解了HDFS文件系统.有了数据,下一步就要分析计算这些数据,产生价值.接下来我们介绍Mapreduce计算框架,学习数据是怎样被利用的. 博主福利 给大家赠送一套ha ...

  4. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  5. 使用mapreduce计算环比的实例

    最近做了一个小的mapreduce程序,主要目的是计算环比值最高的前5名,本来打算使用spark计算,可是本人目前spark还只是简单看了下,因此就先改用mapreduce计算了,今天和大家分享下这个 ...

  6. 利用sklearn计算文本相似性

    利用sklearn计算文本相似性,并将文本之间的相似度矩阵保存到文件当中.这里提取文本TF-IDF特征值进行文本的相似性计算. #!/usr/bin/python # -*- coding: utf- ...

  7. MapReduce计算模型

    MapReduce计算模型 MapReduce两个重要角色:JobTracker和TaskTracker. ​ MapReduce Job 每个任务初始化一个Job,没个Job划分为两个阶段:Map和 ...

  8. MapReduce——计算温度最大值 (基于全新2.2.0API)

    MapReduce——计算温度最大值 (基于全新2.2.0API) deprecated: Job类的所有Constructors, 新的API用静态方法getInstance(conf)来去的Job ...

  9. hadoop笔记之MapReduce的应用案例(利用MapReduce进行排序)

    MapReduce的应用案例(利用MapReduce进行排序) MapReduce的应用案例(利用MapReduce进行排序) 思路: Reduce之后直接进行结果合并 具体样例: 程序名:Sort. ...

随机推荐

  1. zabbix运维监控平台

    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决 ...

  2. python实现排序之冒泡排序

    冒泡排序:是将一串无需的数字,排列成有序的.通过相邻的两个数作比较,大的往后移,经过反复的比较,最后得出一串有序的数列. 那么用代码该如何实现? 其实这个问题的思路就是判断每相邻的两个数,进行大小比较 ...

  3. Redis ---------- 持久化(AOF)操作

    每小时做一次快照持久化 8:00 快照持久化 9:00 快照持久化 10:00  快照持久化  上帝想玩弄人类,突然停电,55万个key丢失了 11:00 快照持久化 解决方案: 8:00-9:00在 ...

  4. mysql悲观锁与乐观锁

    简介 数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性. 用途 乐观锁和悲观锁是并发控制主要采用的技术手段.无论是悲观 ...

  5. google云函数实现BigQuery数据操作

    Google Cloud Function操作BigQuery数据库. 1.部署云函数时在配置文件中(package.json)添加一项 "@google-cloud/bigquery&qu ...

  6. 学习Pytbon第十七篇,面向对象编程

    面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类 ...

  7. ABAP自定义截取字符串长度函数

    SAP 中strlen()只能计算字符串的个数,不能计算含有中文字符串的长度,如字符串“SAP大波霸”,strlen('SAP大波霸') = 6,其实真实长度为3+3*2 = 9.我们可以通过cl_a ...

  8. 大话CNN经典模型:LeNet

        近几年来,卷积神经网络(Convolutional Neural Networks,简称CNN)在图像识别中取得了非常成功的应用,成为深度学习的一大亮点.CNN发展至今,已经有很多变种,其中有 ...

  9. erlang节点互通查看

    在局域网内部,一般用短节点名来完成短节点的全联通.     全联通的前提之一是cookie要相同,cookie记录在一个文件中.     对于同一个物理机上的两个erlang节点,不用其他配置就可以全 ...

  10. C语言库函数实现 【微软面试100题 第八十三题】

    题目要求 1.strcpy/memcpy/memmove: 2.memset函数: 3.字符串处理函数. 题目分析 1.接口定义: char * strcpy(char * dest, const c ...