從頭學習大數據培訓課程 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=hbaseexporthbase表的region數
因為有9個region所以會生成9個map任務
(6).創建orc格式的hive表並指定location為任務的輸出目錄CREATE EXTERNAL TABLEuser_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/hainiuhbaseexportTBLPROPERTIES (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
※大數據商業價值突破之路
※堆內和堆外
※阿里巴巴大數據之路-日誌採集