当前位置: 首页 > news >正文

工程行业网站内蒙古网站seo

工程行业网站,内蒙古网站seo,网站改版会影响排名吗,网站建设常规自适应一、排序分组概述 MapReduce中排序和分组在哪里被执行 第3步中需要对不同分区中的数据进行排序和分组#xff0c;默认情况按照key进行排序和分组 二、排序 在Hadoop默认的排序算法中#xff0c;只会针对key值进行排序 任务#xff1a; 数据文件中#xff0c;如果按照第一…一、排序分组概述 MapReduce中排序和分组在哪里被执行 第3步中需要对不同分区中的数据进行排序和分组默认情况按照key进行排序和分组 二、排序 在Hadoop默认的排序算法中只会针对key值进行排序 任务 数据文件中如果按照第一列升序排列 当第一列相同时第二列升序排列 如果当第一列相同时求出第二列的最小值 自定义排序 1.封装一个自定义类型作为key的新类型将第一列与第二列都作为key WritableComparable接口 定义 public interface WritableComparableT extends Writable, ComparableT { } 自定义类型MyNewKey实现了WritableComparable的接口该接口中有一个compareTo()方法当对key进行比较时会调用该方法而我们将其改为了我们自己定义的比较规则从而实现我们想要的效果   private static class MyNewKey implements WritableComparableMyNewKey {long firstNum;long secondNum;public MyNewKey() {}public MyNewKey(long first, long second) {firstNum first;secondNum second;}Overridepublic void write(DataOutput out) throws IOException {out.writeLong(firstNum);out.writeLong(secondNum);}Overridepublic void readFields(DataInput in) throws IOException {firstNum in.readLong();secondNum in.readLong();}/** 当key进行排序时会调用以下这个compreTo方法*/Overridepublic int compareTo(MyNewKey anotherKey) {long min firstNum - anotherKey.firstNum;if (min ! 0) {// 说明第一列不相等则返回两数之间小的数return (int) min;} else {return (int) (secondNum - anotherKey.secondNum);}}} 2.改写最初的MapReduce方法函数 public static class MyMapper extendsMapperLongWritable, Text, MyNewKey, LongWritable {protected void map(LongWritable key,Text value,MapperLongWritable, Text, MyNewKey, LongWritable.Context context)throws java.io.IOException, InterruptedException {String[] spilted value.toString().split(\t);long firstNum Long.parseLong(spilted[0]);long secondNum Long.parseLong(spilted[1]);// 使用新的类型作为key参与排序MyNewKey newKey new MyNewKey(firstNum, secondNum);context.write(newKey, new LongWritable(secondNum));};} public static class MyReducer extendsReducerMyNewKey, LongWritable, LongWritable, LongWritable {protected void reduce(MyNewKey key,java.lang.IterableLongWritable values,ReducerMyNewKey, LongWritable, LongWritable, LongWritable.Context context)throws java.io.IOException, InterruptedException {context.write(new LongWritable(key.firstNum), new LongWritable(key.secondNum));};}三、分组 在Hadoop中的默认分组规则中也是基于Key进行的会将相同key的value放到一个集合中去 目的求出第一列相同时第二列的最小值 上面的例子看分组因为我们自定义了一个新的key它是以两列数据作为key的因此这6行数据中每个key都不相同产生6组 它们是1 1,2 1,2 2,3 1,3 2,3 3。 而实际上只可以分为3组分别是123。现在首先改写一下reduce函数代码 public static class MyReducer extendsReducerMyNewKey, LongWritable, LongWritable, LongWritable {protected void reduce(MyNewKey key,java.lang.IterableLongWritable values,ReducerMyNewKey, LongWritable, LongWritable, LongWritable.Context context)throws java.io.IOException, InterruptedException {long min Long.MAX_VALUE;for (LongWritable number : values) {long temp number.get();if (temp min) {min temp;}}context.write(new LongWritable(key.firstNum), new LongWritable(min));};} 自定义分组 为了针对新的key类型作分组我们也需要自定义一下分组规则 private static class MyGroupingComparator implementsRawComparatorMyNewKey {/** 基本分组规则按第一列firstNum进行分组*/Overridepublic int compare(MyNewKey key1, MyNewKey key2) {return (int) (key1.firstNum - key2.firstNum);}/** param b1 表示第一个参与比较的字节数组* * param s1 表示第一个参与比较的字节数组的起始位置* * param l1 表示第一个参与比较的字节数组的偏移量* * param b2 表示第二个参与比较的字节数组* * param s2 表示第二个参与比较的字节数组的起始位置* * param l2 表示第二个参与比较的字节数组的偏移量*/Overridepublic int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {return WritableComparator.compareBytes(b1, s1, 8, b2, s2, 8);}} 自定义了一个分组比较器MyGroupingComparator该类实现了RawComparator接口而RawComparator接口又实现了Comparator接口这两个接口的定义 public interface RawComparatorT extends ComparatorT {public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2); } public interface ComparatorT {int compare(T o1, T o2);boolean equals(Object obj); } 分组实现步骤 1.MyGroupingComparator实现这两个接口 RawComparator中的compare()方法是基于字节的比较 Comparator中的compare()方法是基于对象的比较 由于在MyNewKey中有两个long类型每个long类型又占8个字节。这里因为比较的是第一列数字所以读取的偏移量为8字节。 2.添加对分组规则的设置   // 设置自定义分组规则    job.setGroupingComparatorClass(MyGroupingComparator.class); 3. 运行结果
http://www.zqtcl.cn/news/850669/

相关文章:

  • 报名网站开发多钱做酒网站
  • 2014年网站设计趋势怎样用代码建设一个网站
  • 手机网站使用微信支付瑞诺国际公司团队介绍
  • 如何做网站内容架构分析网站建站平台eazyshop
  • 网站开发 商标第几类建站模板大全
  • 找事做的网站杭州网站建设有限公司
  • 临沂网站建设搭建短视频如何引流与推广
  • 网站项目建设管理简介网络营销的概念
  • 网站后台怎么添加代码食品网站开发的背景
  • 茶楼 网站dedecms 旅游网站模板
  • 物流网站做那个好凯里网站设计
  • 网站 方案网页设计尺寸用怎么量
  • 商城购物网站设计内容互联网公司网站建设费用
  • 做租号玩网站赚钱吗网站下的源代码和自己做的区别
  • 关于校园网站的策划书久久建筑网的账号
  • 网站宣传的方式怎么查看一个网站有没有做推广
  • 台州房产网站建设自助开通网站
  • 佛山正规网站建设报价二级域名需要申请吗
  • 网站用户体验比较论坛类网站可以做移动端吗
  • 佛山网站优化建设网站设计公司种类
  • 永嘉高端网站建设效果空间设计手法有哪些
  • 好模板网站盐城做网站价格
  • 农村自建房设计图 效果图常州百度推广优化
  • 北京便宜网站建设为什么自己做的网站别的电脑打不开
  • 濮阳网站建设哪里便宜html页面模板
  • 个人推广网站wordpress 交友模板
  • 新乡网站建设价格中国反钓鱼网站联盟
  • 在线工具网站网站建设公司ejiew
  • 个人搭建网站教程王牌网站做代理
  • 网站地图什么意思电子商务营销推广