hive整合hbase 建表命令

1. 启动hive,并连接到hbase

./hive --auxpath /opt/apache/hive-0.12.0-bin/lib/hive_hbase-handler-0.12.0.jar,/opt/apache/hive-0.12.0-bin/lib/hbase-0.94.8.jar -hiveconf hbase.master=master1:60000

注意,hive_hbase-handler-0.12.0.jar这个jar包要根据连接hbase的版本进行重新编译,具体方法请参考相关文章


2. 创建内表

CREATE TABLE hive_123(word string, count bigint) 

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") 

TBLPROPERTIES ("hbase.table.name" = "hive_123");

执行这条命令后,hive将会在hbase上创建表"hive_123",hive列与hbase列的映射关系为:

word字段为hbase表的rowkey,count字段则为cf1:val即column family为cf1,qualifier为val


3. 创建外表

CREATE EXTERNAL TABLE hive_vv(key string, sip string, count int)  
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf0:sip,cf1:count")  
TBLPROPERTIES ("hbase.table.name" = "hive_vv");  

创建一个hive外表,将名为hive_w的hbase表识别到hive中。


4. 使用二进制存储数据

默认情况下,hbase都是以字符串存储数据,hive也支持使用二进制方式在hbase中保存数据

CREATE EXTERNAL TABLE hive_filter(key string, sport int, cout int, ctx string )  
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf2:sport#b,cf3:count#b, cf4:ctx")  
TBLPROPERTIES ("hbase.table.name" = "hive_filter");  

其中cf2:sport#b,cf3:count#b表示sport、count两个字段以二进制的方式保存在hbase表中


5. 将hive表中的内容导入hbase表

INSERT OVERWRITE TABLE hive_vv SELECT key,sip,count FROM hive_textfile;


6. 将hbase表中的内容导入hive表

INSERT OVERWRITE TABLE hive_textfile SELECT * FROM hive_vv;


7. scan优化

在hive的命令行中,设置set hbase.scan.cache=10000;set hbase.scan.cacheblock=false;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值