hadoop-temperture(自定义value数据类型)
本实例是:用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数据类型)相关推荐
- springboot控制接口返回的字段_SpringBoot实战:SpringBoot之Rest Full接口自定义返回数据类型(ResponseBodyAdvice)...
我们在日常开发的过程中,经常会要求统一返回数据格式.如要求统一访问格式为 { "success": 请求是否成功, "message": 请求消息, " ...
- 自定义Cassandra数据类型
在博客文章< 从Java连接到Cassandra>中 ,我提到了用Java 实现的Cassandra Java开发人员的一个优势是能够创建自定义 Cassandra数据类型 . 在这篇文章 ...
- ROS中自定义复杂数据类型
ROS中自定义复杂数据类型 先说一下需求,想要服务的请求数据为一个point(x,y,z)的数组.具体的形式表示如: [point1,point2,...] geometry_msgs::Point ...
- cassandra_自定义Cassandra数据类型
cassandra 在博客文章<从Java连接到Cassandra>中,我提到了用Java实现的Cassandra Java开发人员的一个优势是能够创建自定义Cassandra数据类型. ...
- Redis数据实战之GEO在LBS中应用与自定义新数据类型
Redis数据实战之GEO在LBS中应用与自定义新数据类型 引言 面向 LBS 应用的 GEO 数据类型 GEO 的底层结构 GeoHash 的编码方法 如何操作 GEO 类型 如何自定义数据类型 R ...
- Hadoop之自定义数据类型
2019独角兽企业重金招聘Python工程师标准>>> 1.写一个类实现Writable接口 2.重写write和readFilelds方法 3.自定义数据类型,提供相应的gette ...
- Hadoop之——自定义计数器
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46057909 1.Mapper类的实现 /*** KEYIN 即k1 表示行的偏移 ...
- c++ 哪些自定义的数据类型
http://www.cnblogs.com/ShaneZhang/archive/2013/06/21/3147648.html 这些数据类型是 C99 中定义的,具体定义在:/usr/includ ...
- Hadoop集群大数据解决方案之MapReduce 程序实战进阶(自定义partitionsortgroup)(六)
准 备 在上一篇博客举了个简单的word count,重在说明mapreduce的流程,但是针对mapreduce的编程,程序员能控制的,远远不止map和reduce,还有诸如partition, ...
- Mapreduce自定义数据类型
Hadoop自带的数据类型: Intwritable,LongWritable,Text,xxWritable. 某些情况下:使用自定义的数据类型方便一些(类似java中的pojo). 实现: 实现w ...
最新文章
- c语言函数库哪里keyk,[精品]C语言库函数(字母G-K)-教案.doc
- 关于IOS的屏幕适配(iPhone)——资源适配
- R语言ggplot2可视化指定图像标题(title)、副标题(subtitle)的内容、字体大小、字体类型、色彩、对齐方式等实战
- module 'tensorflow' has no attribute 'Session'
- 基于mykernel完成多进程的简单内核
- 为什么应该在业务层实现管道模式,而不用ASP.NET Core Middleware实现 | 2点原因和实现方式...
- Branch management
- [MySQL] mysql 的行级显式锁定和悲观锁
- Bootstrap 使用Less变量
- 在NodeJS中使用Redis缓存数据
- tuxedo 强制重启
- 史上最全wireshark使用教程,8万字整理总结,建议先收藏再耐心研读
- 如何把手机证件照压缩到15KB?手机压缩图片方法
- 全球化业务渐入佳境,BIGO盈利持续大幅提升,是时候重估欢聚集团
- 【Gitlab】 remote: Ask a project Owner or Maintainer to create a default branch:
- 2020年数学建模国赛B题题目和解题思路
- pdf合并在线,大家都在用的工具
- 并行传输和串行传输的区别
- 域账户或者本地用户,每次开机登陆都重置桌面
- python全套壁纸_Python 全自动壁纸更新系统