本实例是:用hadoop的mapreduce思想来求解每年中的最高温度和最低温度(假设都是整型的温度数据)

1.mapreduce程序

package com.zhangdan.count;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.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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;import com.zhangdan.count.TopTemperature.TopMap.TopReduce;public class TopTemperature {public static class TopMap extends Mapper<LongWritable,Text,Text,TemperBeansWritable>  {public void map(LongWritable key,Text value,Context context) throws IOException,InterruptedException{String line=value.toString();StringTokenizer str=new StringTokenizer(line);while(str.hasMoreElements()){String thekey=str.nextToken();int value1=Integer.parseInt(str.nextToken());int value2=Integer.parseInt(str.nextToken());//System.out.println(thekey+":"+value1+"  "+value2);context.write(new Text(thekey),new TemperBeansWritable(value1,value2));}}public static class TopReduce extends Reducer<Text,TemperBeansWritable,Text,TemperBeansWritable>{public void reduce(Text key,Iterable<TemperBeansWritable> value,Context context) throws IOException,InterruptedException{int min=100;int max=-100;for(TemperBeansWritable temper:value){if(min>temper.getLowvalue()) min=temper.getLowvalue();if(max<temper.getHighvalue()) max=temper.getHighvalue();System.out.println(key+":"+temper.getLowvalue()+"  "+temper.getHighvalue());}//System.out.println(key+":"+min+"  "+max);context.write(key, new TemperBeansWritable(min,max));}}}public static void main(String []args) throws Exception{Configuration conf =new Configuration();Job job=new Job(conf);job.setJarByClass(TemperBeansWritable.class);job.setJobName("temperture");job.setOutputKeyClass(Text.class);job.setOutputValueClass(TemperBeansWritable.class);job.setMapperClass(TopMap.class);job.setReducerClass(TopReduce.class);job.setInputFormatClass(TextInputFormat.class);job.setOutputFormatClass(TextOutputFormat.class);FileInputFormat.addInputPath(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));job.waitForCompletion(true);}}

2.自定义value的数据类型

package com.zhangdan.count;import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;import org.apache.hadoop.io.Writable;/*** * @author vlab 此自定义数据类型只适合value型,如果是key类,必须实现writableComparable接口*/
public class TemperBeansWritable implements Writable {private int lowvalue;private int highvalue;public TemperBeansWritable() {// TODO Auto-generated constructor stub
    }public TemperBeansWritable(int lowvalue, int highvalue) {this.lowvalue = lowvalue;this.highvalue = highvalue;}public static TemperBeansWritable read(DataInput in) throws IOException {TemperBeansWritable w = new TemperBeansWritable();w.readFields(in);return w;}public int getLowvalue() {return lowvalue;}public int getHighvalue() {return highvalue;}public void setLowvalue(int lowvalue) {this.lowvalue = lowvalue;}public void setHighvalue(int highvalue) {this.highvalue = highvalue;}@Overridepublic void readFields(DataInput in) throws IOException {// TODO Auto-generated method stubthis.lowvalue = in.readInt();this.highvalue = in.readInt();}@Overridepublic void write(DataOutput out) throws IOException {// TODO Auto-generated method stub
        out.writeInt(lowvalue);out.writeInt(highvalue);}@Overridepublic String toString() {return this.lowvalue + "\t" + this.highvalue;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + highvalue;result = prime * result + lowvalue;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;TemperBeansWritable other = (TemperBeansWritable) obj;if (highvalue != other.highvalue)return false;if (lowvalue != other.lowvalue)return false;return true;}}

转载于:https://www.cnblogs.com/xunyingFree/p/5074374.html

hadoop-temperture(自定义value数据类型)相关推荐

  1. springboot控制接口返回的字段_SpringBoot实战:SpringBoot之Rest Full接口自定义返回数据类型(ResponseBodyAdvice)...

    我们在日常开发的过程中,经常会要求统一返回数据格式.如要求统一访问格式为 { "success": 请求是否成功, "message": 请求消息, " ...

  2. 自定义Cassandra数据类型

    在博客文章< 从Java连接到Cassandra>中 ,我提到了用Java 实现的Cassandra Java开发人员的一个优势是能够创建自定义 Cassandra数据类型 . 在这篇文章 ...

  3. ROS中自定义复杂数据类型

    ROS中自定义复杂数据类型 先说一下需求,想要服务的请求数据为一个point(x,y,z)的数组.具体的形式表示如: [point1,point2,...] geometry_msgs::Point ...

  4. cassandra_自定义Cassandra数据类型

    cassandra 在博客文章<从Java连接到Cassandra>中,我提到了用Java实现的Cassandra Java开发人员的一个优势是能够创建自定义Cassandra数据类型. ...

  5. Redis数据实战之GEO在LBS中应用与自定义新数据类型

    Redis数据实战之GEO在LBS中应用与自定义新数据类型 引言 面向 LBS 应用的 GEO 数据类型 GEO 的底层结构 GeoHash 的编码方法 如何操作 GEO 类型 如何自定义数据类型 R ...

  6. Hadoop之自定义数据类型

    2019独角兽企业重金招聘Python工程师标准>>> 1.写一个类实现Writable接口 2.重写write和readFilelds方法 3.自定义数据类型,提供相应的gette ...

  7. Hadoop之——自定义计数器

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46057909 1.Mapper类的实现 /*** KEYIN 即k1 表示行的偏移 ...

  8. c++ 哪些自定义的数据类型

    http://www.cnblogs.com/ShaneZhang/archive/2013/06/21/3147648.html 这些数据类型是 C99 中定义的,具体定义在:/usr/includ ...

  9. Hadoop集群大数据解决方案之MapReduce 程序实战进阶(自定义partitionsortgroup)(六)

    准 备   在上一篇博客举了个简单的word count,重在说明mapreduce的流程,但是针对mapreduce的编程,程序员能控制的,远远不止map和reduce,还有诸如partition, ...

  10. Mapreduce自定义数据类型

    Hadoop自带的数据类型: Intwritable,LongWritable,Text,xxWritable. 某些情况下:使用自定义的数据类型方便一些(类似java中的pojo). 实现: 实现w ...

最新文章

  1. c语言函数库哪里keyk,[精品]C语言库函数(字母G-K)-教案.doc
  2. 关于IOS的屏幕适配(iPhone)——资源适配
  3. R语言ggplot2可视化指定图像标题(title)、副标题(subtitle)的内容、字体大小、字体类型、色彩、对齐方式等实战
  4. module 'tensorflow' has no attribute 'Session'
  5. 基于mykernel完成多进程的简单内核
  6. 为什么应该在业务层实现管道模式,而不用ASP.NET Core Middleware实现 | 2点原因和实现方式...
  7. Branch management
  8. [MySQL] mysql 的行级显式锁定和悲观锁
  9. Bootstrap 使用Less变量
  10. 在NodeJS中使用Redis缓存数据
  11. tuxedo 强制重启
  12. 史上最全wireshark使用教程,8万字整理总结,建议先收藏再耐心研读
  13. 如何把手机证件照压缩到15KB?手机压缩图片方法
  14. 全球化业务渐入佳境,BIGO盈利持续大幅提升,是时候重估欢聚集团
  15. 【Gitlab】 remote: Ask a project Owner or Maintainer to create a default branch:
  16. 2020年数学建模国赛B题题目和解题思路
  17. pdf合并在线,大家都在用的工具
  18. 并行传输和串行传输的区别
  19. 域账户或者本地用户,每次开机登陆都重置桌面
  20. python全套壁纸_Python 全自动壁纸更新系统

热门文章

  1. 测试圈相亲平台开发流程(3):架构的初步设计
  2. 阿里云 DataWorks v2.0 常见问题与难点解析整理
  3. RestTemplate使用gzip压缩调用接口
  4. 《古代的中医 -七大名医传奇》摘录(二)
  5. python实现——规范中英文内容
  6. 计算样本中心矩B和原点矩A的关系式
  7. 汇佳学校引领国际化教育28年,打造学生未来世界竞争力
  8. 优秀男人的十五条标准(zt)
  9. 高级软件工程pair project工作总结 By 何栋梁
  10. java基础源码_java 源代码 基础点的 谢谢