日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【原创】MapReduce编程系列之表连接

發布時間:2023/12/1 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【原创】MapReduce编程系列之表连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 問題描述

? ? ? ? 需要連接的表如下:其中左邊是child,右邊是parent,我們要做的是找出grandchild和grandparent的對應關系,為此需要進行表的連接。


Tom Lucy Tom Jim Lucy David Lucy Lili Jim Lilei Jim SuSan Lily Green Lily Bians Green Well Green MillShell Havid James James LiT Richard Cheng Cheng LiHua
  • 思路分析
誠然,在寫MR程序的時候要結合MR數據處理的一些特性。例如如果我們用默認的TextInputFormat來處理傳入的文件數據,傳入的格式是key為行號,value為這一行的值(如上例中的第一行,key為0,value為[Tom,Lucy]),在shuffle過程中,我們的值如果有相同的key,會merge到一起(這一點很重要!)。我們利用shuffle階段的特性,merge到一組的數據夠成一組關系,然后我們在這組關系中想辦法區分晚輩和長輩,最后對merge里的value一一作處理,分離出grandchild和grandparent的關系。 例如,Tom Lucy傳入處理后我們將其反轉,成為Lucy Tom輸出。當然,輸出的時候,為了達到join的效果,我們要輸出兩份,因為join要兩個表,一個表為L1:child parent,一個表為L2:child parent,為了達到關聯的目的和利用shuffle階段的特性,我們需要將L1反轉,把parent放在前面,這樣L1表中的parent和L2表中的child如果字段是相同的那么在shuffle階段就能merge到一起。還有,為了區分merge到一起后如何區分child和parent,我們把L1表中反轉后的child(未來的 grandchild)字段后面加一個1,L2表中parent(未來的grandparent)字段后加2。 1 package com.test.join; 2 3 import java.io.IOException; 4 import java.util.ArrayList; 5 import java.util.Iterator; 6 7 import org.apache.hadoop.conf.Configuration; 8 import org.apache.hadoop.fs.Path; 9 import org.apache.hadoop.io.Text; 10 import org.apache.hadoop.mapreduce.Job; 11 import org.apache.hadoop.mapreduce.Mapper; 12 import org.apache.hadoop.mapreduce.Reducer; 13 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 14 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 15 16 public class STJoin { 17 18 public static class STJoinMapper extends Mapper<Object, Text, Text, Text>{ 19 20 @Override 21 protected void map(Object key, Text value, Context context) 22 throws IOException, InterruptedException { 23 // TODO Auto-generated method stub 24 String[] rela = value.toString().trim().split(" ",2); 25 if(rela.length!=2) 26 return; 27 String child = rela[0]; 28 String parent = rela[1]; 29 context.write(new Text(parent), new Text((child+"1"))); 30 context.write(new Text(child), new Text((parent+"2"))); 31 32 } 33 34 } 35 public static class STJoinReducer extends Reducer<Text, Text, Text, Text>{ 36 37 @Override 38 protected void reduce(Text arg0, Iterable<Text> arg1,Context context) 39 throws IOException, InterruptedException { 40 // TODO Auto-generated method stub 41 ArrayList<String> grandParent = new ArrayList<>(); 42 ArrayList<String> grandChild = new ArrayList<>(); 43 Iterator<Text> iterator = arg1.iterator(); 44 while(iterator.hasNext()){ 45 String text = iterator.next().toString(); 46 if(text.endsWith("1")) 47 grandChild.add(text.substring(0, text.length()-1)); 48 if(text.endsWith("2")) 49 grandParent.add(text.substring(0, text.length()-1)); 50 } 51 52 for(String grandparent:grandParent){ 53 for(String grandchild:grandChild){ 54 context.write(new Text(grandchild), new Text(grandparent)); 55 } 56 } 57 } 58 } 59 60 61 public static void main(String args[]) throws IOException, ClassNotFoundException, InterruptedException { 62 Configuration conf = new Configuration(); 63 Job job = new Job(conf,"STJoin"); 64 job.setMapperClass(STJoinMapper.class); 65 job.setReducerClass(STJoinReducer.class); 66 job.setOutputKeyClass(Text.class); 67 job.setOutputValueClass(Text.class); 68 FileInputFormat.addInputPath(job, new Path("hdfs://localhost:9000/user/hadoop/STJoin/joinFile")); 69 FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/user/hadoop/STJoin/joinResult")); 70 71 System.exit(job.waitForCompletion(true)?0:1); 72 } 73 }
  • 結果顯示

?

Richard LiHua Lily Well Lily MillShell Havid LiT Tom Lilei Tom SuSan Tom Lili Tom David

?以上代碼在hadoop1.0.3平臺實現

轉載于:https://www.cnblogs.com/gslyyq/p/mapreduce.html

總結

以上是生活随笔為你收集整理的【原创】MapReduce编程系列之表连接的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 九九九九九九精品 | 亚洲人成电影在线播放 | 操操操爽爽爽 | 成人一级黄色 | 久久青青视频 | 亚洲天堂男人的天堂 | 操操操网站 | 97超碰在线播放 | 777视频在线观看 | 中文字幕三区 | 久热精品视频在线观看 | 国产在线视频91 | 欧美影院一区二区三区 | 黄色片在线免费看 | 欧美黄色一区二区 | 欧美成人专区 | 91精品婷婷国产综合久久蝌蚪 | 亚洲区欧美区 | 欧美黑人三级 | 老熟妇一区二区 | 亚洲视频手机在线 | 一区二区在线免费 | 92久久| 国产操女人| 欧美黄色a级 | 亚洲欧美日本一区二区三区 | 中文在线字幕免费观看电 | 亚洲一区二区三区日韩 | 粗大的内捧猛烈进出在线视频 | 69精品一区二区三区 | 精品人妻无码专区在线 | 少妇一级淫片aaaaaaa | 欧美一级二级三级视频 | 国产又色又爽又高潮免费 | 日本三级视频在线 | 久久精品免费av | 激情av网站 | 精品无码国产一区二区三区av | 欧美与黑人午夜性猛交久久久 | 中国黄色片子 | 天天色天天操天天 | 超碰伊人久久 | 天天操天天曰 | 91亚洲国产 | 欧美在线免费看 | 日韩精品一区二区免费视频 | 色婷婷av久久久久久久 | 久久久久99精品成人片试看 | bt男人天堂 | 亚洲女人在线 | 美国三级视频 | 91中文视频 | 日批视频免费 | 热久久国产精品 | 黄色短视频在线播放 | 欧美日批视频 | av在线播放网址 | 日本免费黄色网址 | 综合av在线 | www.99re.| 久久伊人操 | 天天透天天干 | 鲁一鲁av| 欧美一区二区久久久 | 男生草女生的视频 | 日韩av在线看免费观看 | 一本之道高清无码视频 | 欧美人xxxx| 天堂在线免费观看视频 | 欧美大色 | 亚洲国产日韩在线一区 | 久久综合久久久久 | 国产91一区在线精品 | 操操色 | 韩国禁欲系高级感电影 | 人人干人人干人人干 | 白石茉莉奈黑人 | 欧美日韩一级在线观看 | 四虎成人精品永久免费av九九 | 国产欧美日韩专区发布 | 青娱乐超碰在线 | 伊人伊人伊人伊人 | 欧美区一区二区 | 琪琪免费视频 | 成人xxx视频 | 五月天在线观看 | 国产精品国产三级国产三级人妇 | 欧美成人一区二区三区 | 伊人日本 | 久久在线观看 | 叼嘿视频在线免费观看 | 国产美女精品一区二区三区 | 色女人综合 | 日韩视频在线观看一区二区 | 狠狠做深爱婷婷久久综合一区 | 播放毛片 | 天天躁日日躁狠狠躁欧美 | 国产麻豆天美果冻无码视频 | 污视频在线免费观看 |