代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
mapreduce 求最大值最小值问题
作者:
新沣
/ 发布于
2017/7/12
/
554
import java.io.File; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.JobConf; 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; public class GetMinMaxKeyMapReduce { public static class GetMinMaxKeyMap extends Mapper<Object, Text, Text,Text> { private Text min = new Text(); private Text max = new Text(); private Long i = new Long(0); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { String[] strs = value.toString().split("\t"); if (strs!=null && strs.length>5 &&strs[3].length() > 20 && strs[3].indexOf(" ") == -1 && strs[3].indexOf("=") == -1) { if(i==0){ min= new Text(strs[3]); max= new Text(strs[3]); } if(strs[3].compareTo(min.toString())<0){ min=new Text(strs[3]); } if(strs[3].compareTo(max.toString())>0){ max=new Text(strs[3]); } i++; } } @Override protected void cleanup(Context context) throws IOException, InterruptedException { context.write(new Text("min"), min); context.write(new Text("max"), max); } } public static class GetMinMaxKeyReducer extends Reducer<Text, Text, Text, Text> { public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException { String result =""; for (Text value : values) { if(result.equals("")){ result = value.toString(); } if (("min").equals(key.toString())) { if(value.toString().compareTo(result)<0){ result=value.toString(); } } else if (("max").equals(key.toString())) { if(value.toString().compareTo(result)>0){ result=value.toString(); } } else { System.err.println("未知reduce 输入key:" + key.toString()); } } context.write(key, new Text(result)); } } public static void main(String[] args) throws Exception { File jarFile = EJob.createTempJar("bin"); ClassLoader classLoader = EJob.getClassLoader(); Thread.currentThread().setContextClassLoader(classLoader); //Hadoop 运行环境 Configuration conf = new Configuration(); conf.set("mapred.job.tracker", "bfdbjc1:12001");; //任务参数设置 Job job = new Job(conf, "GetMinMaxKey"); job.setJarByClass(GetMinMaxKeyMapReduce.class); job.setMapperClass(GetMinMaxKeyMap.class); job.setReducerClass(GetMinMaxKeyReducer.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(Text.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); FileInputFormat.addInputPath(job, new Path("hdfs://bfdbjc1:12000/user/work/tables2/raw_kafka/l_date=2013-09-15")); FileOutputFormat.setOutputPath(job, new Path("hdfs://bfdbjc1:12000/user/work/output/minmaxkey/")); //Eclipse 本地提交 ((JobConf) job.getConfiguration()).setJar(jarFile.toString()); //等待任务运行完成 System.exit(job.waitForCompletion(true) ? 0 : 1); } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
新沣
贡献的其它代码
(
9
)
.
中文分词算法(实现从文章中提取关键字算法)
.
大整数加法
.
mapreduce 求最大值最小值问题
.
将HDFS中的数据导入HBase
.
复选框选择功能大全
.
各种各样的有弹窗复制样式大全
.
无限极分类删除父节点时将父节点的所有子节点删除
.
通过文件存储来实现缓存
.
等差数列和等比数列
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3