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