日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人精品在线 | 精品玖玖玖 | 欧美大片xxx| 天天综合亚洲 | 一级片在线免费观看 | 久久九九国产精品 | 亚洲人屁股眼子交1 | jizz性欧美17| 天天色天天操天天 | 久久久888| 久久精品国产一区二区三区 | 少妇裸体视频 | 精产国品一二三产品蜜桃 | 国产三级精品三级在线 | 国产三级网 | 精品久久久久久 | 青青操av在线 | 中文在线观看免费网站 | 日韩免费a| 一区二区三区久久久久 | 波多野结衣视频观看 | 亚洲精品视频国产 | 日本精品一区二区三区四区的功能 | 日韩三级小视频 | 国产精在线 | 熟女人妻aⅴ一区二区三区60路 | 东京热毛片 | 婷婷综合色 | 夜夜嗨一区 | 奇米精品一区二区三区在线观看一 | 一区二区xxx | 欧美另类极品 | 国产二区视频 | 尤物在线观看 | 极品国产一区 | 中文字幕无码精品亚洲35 | 久久综合精品国产二区无码不卡 | 国产成人一区二区三区电影 | 色91视频 | 黄色成年人网站 | 男人都懂的网站 | 四虎影裤 | 国产精品国产自产拍高清av | 国产成人亚洲一区二区 | 国产美女被遭强高潮免费网站 | 一区二区视频免费看 | 久草一本 | 美女喷液视频 | 密色av| 四虎av| 日本人与黑人做爰视频 | 成人无高清96免费 | 亚洲成人免费在线观看 | 三日本三级少妇三级99 | 久久国产传媒 | 天天操穴 | 色亚洲视频 | 免费黄色视屏 | caoporn人人| 天天躁夜夜躁狠狠躁 | 国产精品久久久久91 | 欧美激情在线观看 | 日韩在线一区二区 | 成人片在线看 | 国产理论在线观看 | 午夜视频欧美 | 欧洲成人在线视频 | 鲁一鲁在线视频 | 日本中文在线观看 | 妖精视频一区二区三区 | 国产精品77777 | 麻豆精品一区二区 | 丰满岳跪趴高撅肥臀尤物在线观看 | 天堂av亚洲av国产av电影 | 中文字幕人妻熟女人妻a片 麻豆91视频 | 一级片在线免费观看 | 毛片大全免费看 | 国产精品v欧美精品v日韩精品 | www在线观看免费视频 | 男生和女生差差视频 | 国内福利视频 | 午夜精品久久久久久久第一页按摩 | 日韩av中文字幕在线免费观看 | 天天曰夜夜曰 | 三级视频网站 | 欧美日韩国产精品一区二区三区 | 久久精品香蕉 | 国产吃瓜黑料一区二区 | 91免费视频网址 | 欧美大片高清免费观看 | 在线观看免费视频一区二区 | 91色在线视频 | 视频免费在线观看 | 视频二区中文字幕 | 少妇高潮淫片免费观看 | 成人黄色小视频 | 滋润少妇h高h | 国产视频在线观看一区 | 大乳丰满人妻中文字幕日本 |