從頭學習大數據培訓課程 NOSQL 資料庫 hbase(四)整合 hbase 的批量導入功能

1.整合hfile的導入功能到代碼中

使用java代碼代替命令行實現hbase的批量導入功能

(1).hbase導入hfile功能的源碼

(2).根據源碼把相應功能加到自己的代碼中,讓你的任務運行完成之後就導入生成的hfile文件,這樣就不用再啟動命令行執行了

(3).在外面弄好hbase的配置,並設置成被整個任務鏈的job使用的,這裡任務裡面就不用再自己創建hbase的配置了,所有環境中創建一次就可以了

(4).增加創建表的功能,方便測試

(5).裡面更改了序列化類的使用方法,讓它不在map裡面被多次創建

(6).把向put對象添加數據的功能抽成一個共用的add方法

(7).打包並上傳集群測試運行

hadoop jar ./mapreducer-1.0-hainiu.jar hainiuhbasehfile -Dhainiu.task.input=/data/hainiu/user_install_status/20141228 -Dhainiu.task.id=hbase

任務運行成功

hfile的load過程

在hbase shell中查看導入結果

2.hbase的數據導出

目的:hbase導出數據生成orc文件,並創建hive表指定地址為導出數據的地址

(1).用hive查看數據中那天的數據最多,從而在hbase filter中指定導出數據的過濾條件

select uptime,count(1) n from (select from_unixtime(uptime,yyyyMMdd) as uptime from user_install_status where dt=20141228) a group by uptime order by n desc;

需求是將hbase里的數據讀出,轉成hive用的ORC格式

(2).封裝用於ORC輸出的工具方法

(3).封裝用於ORC輸出的工具方法

(4).編寫mr程序讀取hbase

引用的包

mapper實現

任務配置,使用rowfilter指定過濾的行包含"20150107"的數據

註冊到driver中

(5).生成JAR包並上傳到集群運行

hadoop jar ./mapreducer-1.0-hainiu.jar hainiuhbaseexport -Dhainiu.task.id=hbaseexport

hbase表的region數

因為有9個region所以會生成9個map任務

(6).創建orc格式的hive表並指定location為任務的輸出目錄

CREATE EXTERNAL TABLE user_install_status_hbase_export(

aid string COMMENT from deserializer,

pkgname string COMMENT from deserializer,

uptime bigint COMMENT from deserializer,

type int COMMENT from deserializer,

country string COMMENT from deserializer,

gpcategory string COMMENT from deserializer)

stored as orc

LOCATION /user/hainiu/task/hbaseexport/output/hainiuhbaseexport

TBLPROPERTIES (orc.compress=SNAPPY,orc.create.index=true);

(7).查詢驗證數據結果

select uptime,count(1) n from (select from_unixtime(uptime) as uptime from user_install_status_hbase_export) a group by uptime order by n desc;

查看結果集中

推薦閱讀:

大數據學習筆記:Hadoop之HDFS(下)
大數據計數原理1+0=1這你都不會算(七)No.59
大數據商業價值突破之路
堆內和堆外
阿里巴巴大數據之路-日誌採集

TAG:大數據 | HBase | 資料庫設計 |