日韩性视频-久久久蜜桃-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编程系列之表连接的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 最色网站 | 国产成人精品一区二区 | 久久这里都是精品 | 国产精品主播一区二区 | 四虎综合| 大乳丰满人妻中文字幕日本 | 日本人妻不卡一区二区三区中文字幕 | 果冻传媒18禁免费视频 | 午夜精品极品粉嫩国产尤物 | 蜜桃臀aⅴ精品一区二区三区 | 久久深夜| 性欧美大战久久久久久久免费观看 | 亚洲天堂久 | 精品视频在线观看一区二区 | 久久艹中文字幕 | 国产99对白在线播放 | 成年网站在线观看 | 欧美性极品 | 一线毛片 | 一级影片在线观看 | 免费午夜视频 | 狂野欧美性猛交blacked | 在线天堂视频 | 91精品国产高清一区二区三区蜜臀 | 久草久操 | 青青草日韩 | 婷婷色网站 | 国产精品久久久一区二区 | 伊人99热| 台湾佬美性中文网 | 日韩视频在线观看视频 | aa视频网站| 国产av人人夜夜澡人人爽麻豆 | 尤物在线观看视频 | 日本少妇毛茸茸高潮 | 日本免费一区二区在线 | 国产三级影院 | 精品人人人 | 日本成人在线免费视频 | 东方成人av| 强行侵犯视频在线观看 | 黄wwwww| 久久免费视频网站 | 成人黄色免费在线观看 | 91九色国产视频 | 欧美色图一区二区三区 | 香蕉视频在线观看网站 | 91麻豆产精品久久久久久夏晴子 | 人人射人人爱 | 九九亚洲精品 | 久久久久国产精品一区 | 黄色网页入口 | 免费看a网站 | 日日燥夜夜燥 | 亚洲精品xxxxx | 国产精品久久久久久久久久直播 | 亚洲麻豆av | 大地资源在线观看免费高清版粤语 | 欧美一区二区福利视频 | 国产成人免费看 | 午夜视频在线免费观看 | 日韩不卡一区二区 | 成人91免费视频 | 毛片网站在线免费观看 | www.av黄色| 亚洲国产视频网站 | 亚洲双插 | 99久久久久久久久久 | 男操女视频网站 | 女性生殖扒开酷刑vk | 国产精品一区二区不卡 | 自拍三级视频 | 亚洲女人在线 | 少妇毛片| 日本黄色一级网站 | 成人毛片一级 | 日日射夜夜操 | 日韩欧美国产三级 | 91精品国产综合久久福利软件 | 日韩成人黄色片 | 上原亚衣av一区二区三区 | 懂色aⅴ一区二区三区免费 国产精品99在线观看 | 天天操免费视频 | 亚洲精品在线免费观看视频 | 少妇人妻综合久久中文字幕 | а√天堂中文在线资源8 | 视频一区免费 | 毛片少妇 | 丰满少妇一区 | 亚洲一区 | 精品美女久久 | 国产成人观看 | 国产av无码专区亚洲av毛网站 | 一区二区三区av | 动漫毛片 | 精品一区二区三区久久 | 亚洲男人网 | 国产精品一区二区欧美 | 成人欧美视频在线观看 |