多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > 【Hadoop基礎教程】7、Hadoop之一對一關聯查詢

【Hadoop基礎教程】7、Hadoop之一對一關聯查詢

來源:程序員人生   發布時間:2015-04-09 08:56:38 閱讀次數:2611次

我們都知道1個產品唯1對應1個單價,本案例將通過兩種類型輸入文件:product類(產品)和price類(價格)進行1對1的關聯查詢,得到產品名(例如:手表)與產品價格(例如:$100)的關聯信息。

開發環境


硬件環境:Centos 6.5 服務器4臺(1臺為Master節點,3臺為Slave節點)
軟件環境:Java 1.7.0_45、hadoop⑴.2.1

1、 Map進程


首先使用默許的TextInputFormat類對輸入文件進行處理,得到文本中每行的偏移量及其內容并存入

2、 Reduce進程


Reduce進程首先對輸入

3、 驅動實現


驅動核心代碼實現以下,詳細源碼請參考:ProductJoinPricesrccomzonesion ablejoinProductJoinPrice.java。

    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        String[] otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs();
        if(otherArgs.length != 3){
            System.err.println("Usage:Join <productTableDir> <priceTableDir> <output>");
        }
        //定義Job
        Job job = new Job(conf,"join productTable and priceTable");
        //定義輸入文件路徑:商品表 & 價格表
        FileInputFormat.addInputPath(job, new Path(otherArgs[0]));//<productTableDir>
        FileInputFormat.addInputPath(job, new Path(otherArgs[1]));//<priceTableDir>
        //定義輸出文件路徑
        FileOutputFormat.setOutputPath(job, new Path(otherArgs[2]));//<output>
        //設置Jar運行入口類和Mapper類和Reducer類
        job.setJarByClass(ProductJoinPrice.class);
        job.setMapperClass(MapperClass.class);
        job.setReducerClass(ReducerClass.class);
        //設置輸出文件的key和value類型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);
        System.exit(job.waitForCompletion(true) ? 0 : ⑴);
    }

4、部署運行


1)啟動Hadoop集群

[hadoop@K-Master ~]$ start-dfs.sh
[hadoop@K-Master ~]$ start-mapred.sh
[hadoop@K-Master ~]$ jps
5283 SecondaryNameNode
5445 JobTracker
5578 Jps
5109 NameNode

2)部署源碼

#設置工作環境
[hadoop@K-Master ~]$ mkdir -p /usr/hadoop/workspace/MapReduce
#部署源碼
將ProductJoinPrice文件夾拷貝到/usr/hadoop/workspace/MapReduce/ 路徑下;

… 你可以直接 下載 ProductJoinPrice

3)編譯文件

#切換工作目錄
[hadoop@K-Master ~]$ cd /usr/hadoop/workspace/MapReduce/ProductJoinPrice
#編譯文件
[hadoop@K-Master ProductJoinPrice]$ javac -classpath /usr/hadoop/hadoop-core⑴.2.1.jar:/usr/hadoop/lib/commons-cli⑴.2.jar -d bin src/com/zonesion/tablejoin/ProductJoinPrice.java
[hadoop@K-Master ProductJoinPrice]$ ls bin/com/zonesion/tablejoin/ -la
總用量 12
drwxrwxr-x 2 hadoop hadoop  110 7月  31 17:19 .
drwxrwxr-x 3 hadoop hadoop   22 7月  31 17:19 ..
-rw-rw-r-- 1 hadoop hadoop 1770 7月  31 17:39 ProductJoinPrice.class
-rw-rw-r-- 1 hadoop hadoop 2134 7月  31 17:39 ProductJoinPrice$CommonReduce.class
-rw-rw-r-- 1 hadoop hadoop 2375 7月  31 17:39 ProductJoinPrice$PreMapper.class

4)打包jar文件

[hadoop@K-Master ProductJoinPrice]$ jar -cvf ProductJoinPrice.jar -C bin/ .
added manifest
adding: com/(in = 0) (out= 0)(stored 0%)
adding: com/zonesion/(in = 0) (out= 0)(stored 0%)
adding: com/zonesion/tablejoin/(in = 0) (out= 0)(stored 0%)
adding: com/zonesion/tablejoin/ProductJoinPrice$MapperClass.class(in = 2277) (out= 967)(deflated 57%)
adding: com/zonesion/tablejoin/ProductJoinPrice.class(in = 1897) (out= 970)(deflated 48%)
adding: com/zonesion/tablejoin/ProductJoinPrice$ReducerClass.class(in = 1999) (out= 880)(deflated 55%)

5)上傳輸入文件

#創建product輸入文件夾
[hadoop@K-Master ProductJoinPrice]$ hadoop fs -mkdir ProductJoinPrice/input/product/
#創建price輸入文件夾
[hadoop@K-Master ProductJoinPrice]$ hadoop fs -mkdir ProductJoinPrice/input/price/
#上傳文件到product文件夾
[hadoop@K-Master ProductJoinPrice]$ hadoop fs -put input/product* ProductJoinPrice/input/product/
#上傳文件到price文件夾
[hadoop@K-Master ProductJoinPrice]$ hadoop fs -put input/price* ProductJoinPrice/input/price/

6)運行Jar文件

[hadoop@K-Master ProductJoinPrice]$ hadoop jar ProductJoinPrice.jar com.zonesion.tablejoin.ProductJoinPrice ProductJoinPrice/input/product/ ProductJoinPrice/input/price/ ProductJoinPrice/output
14/08/01 09:32:53 INFO input.FileInputFormat: Total input paths to process : 4
14/08/01 09:32:53 INFO util.NativeCodeLoader: Loaded the native-hadoop library
14/08/01 09:32:53 WARN snappy.LoadSnappy: Snappy native library not loaded
14/08/01 09:32:54 INFO mapred.JobClient: Running job: job_201408010921_0004
14/08/01 09:32:55 INFO mapred.JobClient:  map 0% reduce 0%
14/08/01 09:32:57 INFO mapred.JobClient:  map 50% reduce 0%
14/08/01 09:32:59 INFO mapred.JobClient:  map 100% reduce 0%
14/08/01 09:33:06 INFO mapred.JobClient:  map 100% reduce 100%
14/08/01 09:33:06 INFO mapred.JobClient: Job complete: job_201408010921_0004
14/08/01 09:33:06 INFO mapred.JobClient: Counters: 29
......

7)查看輸出結果

[hadoop@K-Master ProductJoinPrice]$ hadoop fs -ls ProductJoinPrice/output
Found 3 items
-rw-r--r--   1 hadoop supergroup   0 2014-08-01 09:33 /user/hadoop/ProductJoinPrice/output/_SUCCESS
drwxr-xr-x   - hadoop supergroup  0 2014-08-01 09:32 /user/hadoop/ProductJoinPrice/output/_logs
-rw-r--r--   1 hadoop supergroup   107 2014-08-01 09:33 /user/hadoop/ProductJoinPrice/output/part-r-00000
[hadoop@K-Master ProductJoinPrice]$ hadoop fs -cat ProductJoinPrice/output/part-r-00000
手表      $100
休閑帽 $200
移動硬盤    $300
u盤      $900
3星手機    $800
聯想筆記本   $2000
錢包      $100

您可能喜歡

【Hadoop基礎教程】5、Hadoop之單詞計數
【Hadoop基礎教程】6、Hadoop之單表關聯查詢
【Hadoop基礎教程】7、Hadoop之1對1關聯查詢
【Hadoop基礎教程】8、Hadoop之1對多關聯查詢
【Hadoop基礎教程】9、Hadoop之倒排索引

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲第一色在线 | 精品久久亚洲 | 精品国产乱码一区二区三区 | 久久中国| 欧美日韩中文亚洲另类春色 | www亚洲免费 | 国产精品国产三级国产普通话对白 | 国产亚洲精品久久久久久小说 | 午夜理伦三级播放 | 在线视频播放网站 | 欧美 亚洲 激情 | 成人精品一区二区三区中文字幕 | 中文一区在线 | 欧美午夜三级我不卡在线观看 | www.国产福利 | 亚洲精品不卡久久久久久 | 国产精品无码久久av | 亚州天堂网 | 国产精品jizz在线观看免费 | 尤物tv| 亚洲第99页 | 图片小说综合 | 精品国产一区二区三区在线 | 欧美日韩午夜视频 | free中国性xxxxhd | 久久久久久久国产精品视频 | 一区二区三区四区国产 | 男女上下爽无遮挡午夜免费视频 | 国内精品久久久久久中文字幕 | 日韩亚州 | 国产精品综合 | 亚洲精品一区二区中文 | 国产欧美日韩精品a在线观看 | 午夜肉伦伦影院在线观看 | 久久精品国产精品亚洲精品 | 国产精品久久久久影院色老大 | 亚洲国产精品久久精品成人 | 成年视频国产免费观看 | 中文字幕在线播放第一页 | 日韩18 | 中文字幕欧美日韩 |