1. 程式人生 > >kettle6.1讀寫hive on hbase記錄

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
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述