天天看點

Hbase與hive整合

//hive與hbase整合

create table lectrure.hbase_lecture10(sname string, score int) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' whth serdeproperties("hbase.columns.mapping" = ':key,cf1:score')

tblproperties("hbase.table.name" = "hbase_lecture10");

with serdeproperties : 指定屬性,這裡指定Hbase表和hive的字段映射關系,注意這裡的字段個數和順序必須和前面Hive表的屬性保持一緻。第一個字段:key映射到Hive中的sname字段,後面字段依此類推。

//加載資料,可以通過Hive支援的insert overwrite方式将一個表的資料導入HBase. (耗時異常長)

insert overwrite table lecture.hbase_lectrure10 Select sname, score From lecture.lectrue10;

//hbase建立表和插入資料

create 'hbase_test',{NAME => 'cf1'}

put 'hbase_test','a','cf1:v1','1'

//建立hive外部表

create external table lecture.hbase_test(key string, value int)

stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties("hbase.columns.mapping"=":key,cf1:v1")

tblproperties("hbase.table.name"="hbase_test");

//字段映射屬性

Hbase.columns.mapping 字段映射屬性。到目前為止,一個Hive表可以包含N個字段,該屬性也需要包含N個聲明

hbase.table.default.storage.type 可以是任意的string(預設)或二進制類型。該選項隻能在Hive 0.9.*有效

//多列和多列族映射

create table hbase_test2(key string, value1 string, value2 string, value3 string)

stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

with serdeproperties

("hbase.columns.mapping "=":key,cf1:coll,cf1:col2,cf2:col3")

TBLPROPERTIES("hbase.table.name" = "hbase_test2")

//插入資料

put 'hbase_test2','rk1','cf1:col1','100'

put 'hbase_test2','rk1','cf1:col2','101'

put 'hbase_test2','rk1','cf1:col3','102'

put 'hbase_test2','rk2','cf2:col1','100'

put 'hbase_test2','rk2','cf2:col2','101'

put 'hbase_test2','rk2','cf2.col3','102'

//掃描表檢視資料

scan 'hbase_test2'

2、Hive Map

(1)通過Hive建表

create table hbase_test3(row_key string,value map<string,int>)

WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:");

(2)使用Hive語句insert overwrite

insert overwrite table hbase_test3 select sname,map(sname,score) from lecture.lecture 10;