hbase入門學習

來源:互聯網
上載者:User

        前面已對hadoop的MapReduce有了個大概認識,下面在看一下hbase中的MapReduce,TableMapper是繼承Hadoop中的Mapper類的,TableReducer是繼承Hadoop中的Reducer類的,詳見hbase官網API詳細說明。

java.lang.Object  org.apache.hadoop.mapreduce.Mapper<ImmutableBytesWritable,Result,KEYOUT,VALUEOUT>      org.apache.hadoop.hbase.mapreduce.TableMapper<KEYOUT,VALUEOUT>

       從上面可以看出,TableMapper中的兩個參數是輸出參數,在main函數中的initTableMapperJob函數中mapper參數後面的兩個參數就是和TableMapper中的兩個參數對應的,輸出參數keyout和valueout是可以自訂的。在TableMapper函數中,如果要實現Map應用,那就要用到父類的map函數,而從繼承關係來看,map方法中的keyin和valuein應該分別對應ImmutableBytesWritable類型和Result類型,這是固定的,這個是和hadoop中的MapReduce參數的區別之處,hadoop中的MapReduce輸入和輸出參數都可以自訂,而map方法中的最後一個參數context,在最後寫入輸出時context.write(keyout,valueout),要與TableMapper中定義的兩個輸出參數對應

java.lang.Object  org.apache.hadoop.mapreduce.Reducer<KEYIN,VALUEIN,KEYOUT,org.apache.hadoop.io.Writable>      org.apache.hadoop.hbase.mapreduce.TableReducer<KEYIN,VALUEIN,KEYOUT>

        TableReducer中的參數keyin和valuein類型分別對應TableMapper中的輸出keyout和valueout類型,如果要實現Reduce應用,那就要用到父類的Reducer函數,這個函數中的三個參數依次是keyin,valuein,context,keyin和valuein分別對應TableReducer中的前兩個參數KEYIN和VALUEIN,TableReducer中的第三個參數可以自訂類型,與context.write參數中的key對應,而context中的value類型必須是Writable類型才行。 下面有三篇關於hbase建表查詢的例子,結合參考資料,自己實現了一個計算平均分的MapReduce的程式

     參考資料1   參考資料2   參考資料3

       因為只是在現有例子上的一個小改動,只說一下實現思路,代碼就不貼出來了,大家也可以結合上面的例子,寫一個自己的例子練練手。參考資料3中有建scores表的代碼,表結構rowkey是人名,列簇grade和cource,course下有列名math和art,建表結果如下:

name grad      course:math   course:art

Tom    1         87                    97

Jerry   2            100                  80

       如果要按人名來算平均分,則在map過程中,將row作為key輸出即作為reduce的keyin輸入,將分數作為value輸出,取分數需要遍曆result,因為是兩列,這樣在reduce過程中,就可以按key累加分數,求出按人名統計分數的平均值;如果要按科目來算平均分,則在map過程中,遍曆每行記錄result,取出列名作為key輸出,同時取出列名的value作為value輸出,這樣在reduce過程中,就可以按key累加,求出按科目的平均值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.