kettle6.1讀寫hive on hbase記錄

版本

kettle 6.1
hbase 1.2.6
hive 2.2.0
hadoop 2.6.5

數據架構

業務數據通過kafka流向業務數據處理引擎,過濾後的數據寫入hbase,kettle job定期執行作業,讀取hive運算結果寫入業務mysql庫中,提供給前端展示。

實現

1、hive on hbase

hive與hbase數據互通,這點利用hive自帶的hive-hbase-handler-2.2.0.jar即可。

1.1 、首先拷貝hbase的相關包到$HIVE_HOME/lib下覆蓋原先的包(記得備份)

hbase-annotations-1.1.1.jar
hbase-client-1.1.1.jar
hbase-common-1.1.1.jar
hbase-common-1.1.1-tests.jar
hbase-hadoop2-compat-1.1.1.jar
hbase-hadoop2-compat-1.1.1-tests.jar
hbase-hadoop-compat-1.1.1.jar
hbase-prefix-tree-1.1.1.jar
hbase-procedure-1.1.1.jar
hbase-protocol-1.1.1.jar
hbase-server-1.1.1.jar

(經過測試發現hbase1.2.6可以不用覆蓋1.1.1的jar,也能做基礎CR操作)

1.2、 hbase建立庫表

在hbase中根據業務需求建立自己所需要的庫表。

create 'h_test',{NAME => 'test1', VERSIONS => 3},{NAME => 'test2', VERSIONS => 3}

put 'h_test','1000','test1:col1','firstvalue'

put 'h_test','1000','test2:col2','secondvalue'

1.3、hive中建立擴展表

啓動服務不要忘了

nohup hive –service hiveserver2 &

建立擴展表

create external table hive_test(rowkey string, col1 string,col2 string)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
 with serdeproperties("hbase.columns.mapping" = ":key,test1:col1,test2:col2")
 tblproperties("hbase.table.name"="h_test");

1.4、執行select語句測試是否正常

(網上一些教程執行MR時會出現異常,我在運行過程中倒是沒有碰到,且hive2.0後不建議再使用hadoop MR,

Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.

可以使用hive on spark on yarn,如果spark版本爲2.0.0加,則需要使用hive2.3.0否則會報sparkListener not found異常,本例爲測試環境,未配置hive on spark)。

2、kettle配置

2.1、進入kettle6.1的

$KETTLE_HOME\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations
複製cdh55目錄爲hdp26
替換hdp26\lib內的如下文件

替換文件

2.2、啓動kettle6.1

啓動kettle,在工具->hadoop distribute中選擇hdp26並確定。

2.3、配置連接

配置hive的連接信息和mysql的連接信息
hive
這裏寫圖片描述

2.4、轉換編寫

demo實現hive讀入結果寫入mysql
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章