国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

hadoop實例---多表關聯

來源:懂視網 責編:小采 時間:2020-11-09 13:20:27
文檔

hadoop實例---多表關聯

hadoop實例---多表關聯:多表關聯和單表關聯類似,它也是通過對原始數據進行一定的處理,從其中挖掘出關心的信息。如下 輸入的是兩個文件,一個代表工廠表,包含工廠名列和地址編號列;另一個代表地址表,包含地址名列和地址編號列。要求從輸入數據中找出工廠名和地址名的對應關系,
推薦度:
導讀hadoop實例---多表關聯:多表關聯和單表關聯類似,它也是通過對原始數據進行一定的處理,從其中挖掘出關心的信息。如下 輸入的是兩個文件,一個代表工廠表,包含工廠名列和地址編號列;另一個代表地址表,包含地址名列和地址編號列。要求從輸入數據中找出工廠名和地址名的對應關系,

多表關聯和單表關聯類似,它也是通過對原始數據進行一定的處理,從其中挖掘出關心的信息。如下 輸入的是兩個文件,一個代表工廠表,包含工廠名列和地址編號列;另一個代表地址表,包含地址名列和地址編號列。要求從輸入數據中找出工廠名和地址名的對應關系,

多表關聯和單表關聯類似,它也是通過對原始數據進行一定的處理,從其中挖掘出關心的信息。如下

輸入的是兩個文件,一個代表工廠表,包含工廠名列和地址編號列;另一個代表地址表,包含地址名列和地址編號列。要求從輸入數據中找出工廠名和地址名的對應關系,輸出工廠名-地址名表

樣本如下:

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

address:

addressID addressname
1 Beijing
2 Guangzhou
3 Shenzhen
4 Xian


結果:

factoryname addressname
Beijing Red Star Beijing
Beijing Rising Beijing
Bank of Beijing Beijing
Guangzhou Honda Guangzhou
Guangzhou Development Bank Guangzhou
Shenzhen Thunder Shenzhen
Tencent Shenzhen


代碼如下:

import java.io.IOException;
import java.util.*;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class MTjoin {
 public static int time = 0;
 /*
 * 在map中先區分輸入行屬于左表還是右表,然后對兩列值進行分割,
 * 保存連接列在key值,剩余列和左右表標志在value中,最后
輸出 */ public static class Map extends Mapper { // 實現map函數 public void map(Object key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString();// 每行文件 String relationtype = new String();// 左右表標識 // 輸入文件首行,不處理 if (line.contains("factoryname") == true || line.contains("addressed") == true) { return; } // 輸入的一行預處理文本 StringTokenizer itr = new StringTokenizer(line); String mapkey = new String(); String mapvalue = new String(); int i = 0; while (itr.hasMoreTokens()) { // 先讀取一個單詞 String token = itr.nextToken(); // 判斷該地址ID就把存到"values[0]" if (token.charAt(0) >= '0' && token.charAt(0) <= '9') { mapkey = token; if (i > 0) { relationtype = "1"; } else { relationtype = "2"; } continue; } // 存工廠名 mapvalue += token + " "; i++; } // 輸出左右表 context.write(new Text(mapkey), new Text(relationtype + "+"+ mapvalue)); } } /* * reduce解析map輸出,將value中數據按照左右表分別保存,   * 然后求出笛卡爾積,并輸出。 */ public static class Reduce extends Reducer { // 實現reduce函數 public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { // 輸出表頭 if (0 == time) { context.write(new Text("factoryname"), new Text("addressname")); time++; } int factorynum = 0; String[] factory = new String[10]; int addressnum = 0; String[] address = new String[10]; Iterator ite = values.iterator(); while (ite.hasNext()) { String record = ite.next().toString(); int len = record.length(); int i = 2; if (0 == len) { continue; } // 取得左右表標識 char relationtype = record.charAt(0); // 左表 if ('1' == relationtype) { factory[factorynum] = record.substring(i); factorynum++; } // 右表 if ('2' == relationtype) { address[addressnum] = record.substring(i); addressnum++; } } // 求笛卡爾積 if (0 != factorynum && 0 != addressnum) { for (int m = 0; m < factorynum; m++) { for (int n = 0; n < addressnum; n++) { // 輸出結果 context.write(new Text(factory[m]), new Text(address[n])); } } } } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); // 這句話很關鍵 // conf.set("mapred.job.tracker", "192.168.1.2:9001"); //可使用args // String[] ioArgs = new String[] { "MTjoin_in", "MTjoin_out" }; String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: Multiple Table Join "); System.exit(2); } Job job = new Job(conf, "Multiple Table Join"); job.setJarByClass(MTjoin.class); // 設置Map和Reduce處理類 job.setMapperClass(Map.class); job.setReducerClass(Reduce.class); // 設置輸出類型 job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); // 設置輸入和輸出目錄 FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } }
 javac -classpath hadoop-core-1.1.2.jar:/opt/hadoop-1.1.2/lib/commons-cli-1.2.jar -d firstProject firstProject/MTJoin.java
jar -cvf MTJoin.jar -C firstProject/ . 

刪除已經存在的output

hadoop fs -rmr output
hadoop fs -mkdir input
hadoop fs -put factory input
 hadoop fs -put address input

運行

hadoop jar MTJoin.jar MTJoin input output


查看結果

 hadoop fs -cat output/part-r-00000










?

作者:a331251021 發表于2013-8-4 16:20:52 原文鏈接

閱讀:72 評論:0 查看評論

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

hadoop實例---多表關聯

hadoop實例---多表關聯:多表關聯和單表關聯類似,它也是通過對原始數據進行一定的處理,從其中挖掘出關心的信息。如下 輸入的是兩個文件,一個代表工廠表,包含工廠名列和地址編號列;另一個代表地址表,包含地址名列和地址編號列。要求從輸入數據中找出工廠名和地址名的對應關系,
推薦度:
標簽: 關聯 案例 實例
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美喷水| 国产亚洲欧美日韩综合另类 | 国产高清一区二区三区视频 | 午夜日韩 | 韩国理论三级在线观看视频 | 国产亚洲欧美在线人成aaaa | 日韩视频一区二区 | 国产精品不卡在线 | 五月婷婷在线观看 | 日韩123| 亚洲国产成人久久综合一 | 91中文字幕在线播放 | 国产精品系列在线观看 | 91精品一区二区三区在线播放 | 亚洲视频在线免费看 | 伊人久久中文字幕久久cm | 国产精选在线观看 | 久久精品99久久香蕉国产色戒 | 欧美色图亚洲激情 | 欧美日韩国产在线观看 | 日本色图在线 | 黄色小视频免费在线观看 | 一道精品一区二区三区 | 国产伊人久久 | 亚洲欧美日韩高清综合678 | 免费观看的黄色网址 | 欧美日韩 国产区 在线观看 | 亚洲精品一二三 | 性xxxxfreexxxxx国产 | 国产中的精品一区的 | 国产最新网址 | 国产精品一区二区av | 岛国一区二区 | 在线观看亚洲一区二区 | 欧美亚洲综合激情在线 | 全免费毛片在线播放 | 国产成人精品视频一区二区不卡 | 中文字幕日韩欧美 | 国产亚洲一欧美一区二区三区 | 国产精品第1页在线观看 | 亚洲色图另类 |