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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MapReduce多表连接

發(fā)布時(shí)間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MapReduce多表连接 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

多表關(guān)聯(lián)

??? 多表關(guān)聯(lián)和單表關(guān)聯(lián)類似,它也是通過對(duì)原始數(shù)據(jù)進(jìn)行一定的處理,從其中挖掘出關(guān)心的信息。下面進(jìn)入這個(gè)實(shí)例。

1 實(shí)例描述

??? 輸入是兩個(gè)文件,一個(gè)代表工廠表,包含工廠名列和地址編號(hào)列;另一個(gè)代表地址表,包含地址名列和地址編號(hào)列。要求從輸入數(shù)據(jù)中找出工廠名地址名對(duì)應(yīng)關(guān)系,輸出"工廠名——地址名"表。

??? 樣例輸入如下所示。

??? 1)factory:

factoryname???????????????     addressed

Beijing Red Star???????????????     1

Shenzhen Thunder???????????     3

Guangzhou Honda???????????     2

Beijing Rising??????????????????     1

Guangzhou Development Bank??????2

Tencent???????????????         3

Back of Beijing???????????????      1

??? 2)address:

addressID??? addressname

1???????     Beijing

2???????     Guangzhou

3???????     Shenzhen

4???????     Xian

??? 樣例輸出如下所示。

factoryname???????????????????     addressname

Back of Beijing???????????????????     ? Beijing

Beijing Red Star???????????????????     Beijing

Beijing Rising???????????????????       Beijing

Guangzhou Development Bank??????????Guangzhou

Guangzhou Honda???????????????     Guangzhou

Shenzhen Thunder???????????????     Shenzhen

Tencent???????????????????         Shenzhen

2 設(shè)計(jì)思路

??? 多表關(guān)聯(lián)和單表關(guān)聯(lián)相似,都類似于數(shù)據(jù)庫(kù)中的自然連接。相比單表關(guān)聯(lián),多表關(guān)聯(lián)的左右表和連接列更加清楚。所以可以采用和單表關(guān)聯(lián)的相同處理方式,map識(shí)別出輸入的行屬于哪個(gè)表之后,對(duì)其進(jìn)行分割,將連接的列值保存在key中,另一列和左右表標(biāo)識(shí)保存在value中,然后輸出。reduce拿到連接結(jié)果之后,解析value內(nèi)容,根據(jù)標(biāo)志將左右表內(nèi)容分開存放,然后求笛卡爾積,最后直接輸出。

??? 這個(gè)實(shí)例的具體分析參考單表關(guān)聯(lián)實(shí)例。下面給出代碼。

1 import java.io.IOException; 2 import java.lang.String; 3 import java.util.Iterator; 4 import java.util.StringTokenizer; 5 6 import org.apache.hadoop.fs.Path; 7 import org.apache.hadoop.io.Text; 8 import org.apache.hadoop.mapreduce.Job; 9 import org.apache.hadoop.mapreduce.Mapper; 10 import org.apache.hadoop.mapreduce.Reducer; 11 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 12 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 13 14 public class MTJoin { 15 public static int time = 0; 16 17 public static class Map extends Mapper<Object, Text, Text, Text> { 18 19 @Override 20 protected void map(Object key, Text value, Context context) 21 throws IOException, InterruptedException { 22 String line = value.toString(); 23 String relationType = new String(); 24 if (line.contains("factoryname") == true 25 || line.contains("addressID") == true) { 26 return; 27 } 28 29 StringTokenizer itr = new StringTokenizer(line); 30 String mapkey = new String(); 31 String mapvalue = new String(); 32 33 String[] split = line.split(" "); 34 35 if (split.length == 2 && split[1].charAt(0) >= '0' 36 && split[1].charAt(0) <= '9') { 37 mapkey = split[1]; 38 mapvalue = split[0]; 39 relationType = "1"; 40 } 41 if (split.length == 2 && split[0].charAt(0) >= '0' 42 && split[0].charAt(0) <= '9') { 43 mapkey = split[0]; 44 mapvalue = split[1]; 45 relationType = "2"; 46 } 47 48 context.write(new Text(mapkey), new Text(relationType + "+" 49 + mapvalue)); 50 51 } 52 } 53 54 public static class Reduce extends Reducer<Text, Text, Text, Text> { 55 56 @Override 57 protected void reduce(Text key, Iterable<Text> values, Context context) 58 throws IOException, InterruptedException { 59 if (0 == time) { 60 context.write(new Text("factoryname"), new Text("addressname")); 61 time++; 62 } 63 64 int factorynum = 0; 65 String[] factory = new String[10]; 66 int addressnum = 0; 67 String[] address = new String[10]; 68 69 for(Text value:values ){ 70 if (0 == value.toString().length()) { 71 continue; 72 } 73 74 char relationType = value.toString().charAt(0); 75 76 // left 77 if ('1' == relationType) { 78 factory[factorynum] = value.toString().substring(2); 79 factorynum++; 80 } 81 // right 82 if ('2' == relationType) { 83 address[addressnum] = value.toString().substring(2); 84 addressnum++; 85 } 86 } 87 88 89 if (0 != factorynum && 0 != addressnum) { 90 for (int m = 0; m < factorynum; m++) { 91 for (int n = 0; n < addressnum; n++) { 92 context.write(new Text(factory[m]), 93 new Text(address[n])); 94 } 95 } 96 } 97 } 98 99 } 100 101 public static void main(String[] args) throws Exception { 102 Job job = new Job(); 103 job.setJobName("MTJoin"); 104 job.setJarByClass(MTJoin.class); 105 106 job.setMapperClass(Map.class); 107 job.setReducerClass(Reduce.class); 108 109 job.setOutputKeyClass(Text.class); 110 job.setOutputValueClass(Text.class); 111 112 FileInputFormat.addInputPath(job, new Path(args[0])); 113 FileOutputFormat.setOutputPath(job, new Path(args[1])); 114 115 System.exit(job.waitForCompletion(true) ? 0 : 1); 116 } 117 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/liutoutou/p/3481903.html

總結(jié)

以上是生活随笔為你收集整理的MapReduce多表连接的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕制服丝袜 | 亚洲国产精品视频一区二区 | 久久91精品国产91久久小草 | 91国产精品 | 91视频免费观看网站 | 久久久久久久久国产 | 欧美成人免费观看 | 少妇喷水在线观看 | 999这里只有精品 | 午夜桃色| www久久久com | 亚洲国产中文字幕 | 九色视频网 | 99久久99久久精品国产片果冰 | a在线v| 99视频观看 | 99热都是精品 | 欧美日韩免费一区二区 | 国产在线精品视频 | 秋霞三区 | 91精品国产日韩91久久久久久 | 国产精品无码久久久久久电影 | 777片理伦片在线观看 | 国产伦精品一区二区三区妓女下载 | 国产一区亚洲二区 | 亚洲成在线 | 久久久久99精品成人片毛片 | 超碰777| 人人妻人人爽欧美成人一区 | 69视频污| 天堂网亚洲 | 欧美 日韩 国产 在线观看 | 免费在线看黄视频 | 中文字幕在线观看网站 | 97播播 | 黄色链接视频 | 国产农村妇女毛片精品久久 | 波多野结衣欲乱上班族 | 亚洲午夜剧场 | 17c在线观看 | 一级全黄色片 | 91调教视频| 在线观看成人动漫 | 国产精品aaaa | 夜夜操夜夜爱 | 亚洲欧美激情另类 | 日本欧美在线 | 国产精品少妇 | 日本少妇喷水 | 国产视频精品视频 | 少妇精品无码一区二区免费视频 | 精品人妻少妇一区二区三区 | 波多野结衣在线影院 | 精品日韩一区二区 | 在线免费av网址 | 漂亮人妻被黑人久久精品 | 激情深爱五月 | 亚洲影库| www黄在线观看 | 欧美日韩精品在线 | 日本黄网在线观看 | 美女日批在线观看 | 国产黄色成人 | 亚洲素人在线 | 亚洲人成网站999久久久综合 | 国内黄色一级片 | 国产v片在线观看 | 中国免费观看的视频 | 中文字幕免费视频观看 | 成人黄色小视频 | 狠狠干2018 | 西欧free性满足hd老熟妇 | 日本深夜福利 | 一区二区不卡 | 欧美亚洲国产日韩 | 国产专区一区二区 | 日韩网站在线观看 | 国产精品久久久久久久久久久久久久久久久久 | 日本激情视频一区二区三区 | 黄频视频在线观看 | 成人亚洲网站 | 亚洲精品视频在线观看免费 | 天堂av亚洲 | 国产人妻一区二区三区四区五区六 | 99人妻碰碰碰久久久久禁片 | 日韩女同一区二区三区 | 日韩激情视频网站 | 女性裸体不遮胸图片 | 日本午夜网 | 尤物影院在线观看 | 亚洲美女综合网 | 精品国产一二区 | 国产区视频在线 | 欧美性videos高清精品 | 成年人黄色免费视频 | 色就是色欧美色图 | 美女扒开屁股让男人桶 | 免费看三级黄色片 | 日本人妖japanesexxx |