hive 与 hbase 整合

1) 修改hive-site.xml配置文件

<property>
<name>hive.aux.jars.path</name>
<value>file:///usr/local/ae/hive-0.11.0/lib/hive-hbase-handler-0.11.0.jar,file:///usr/local/ae/hive-0.11.0/lib/hbase-0.94.6.1.jar,file:///usr/local/ae/hive-0.11.0/lib/zookeeper-3.4.3.jar</value>
<description>These JAR file are available to all users for all jobs</description>
</property>

告诉hive 需要用到外部的jar包;

2)demo

创建hive表,同时会在hbase中创建对应的表

CREATE TABLE hbase_table_1(key int, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");
cf1 对应hive的column_family, hbase.table.name 对应的是在hbase中对应hive这个表的表名;

INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=98;
从hive表把数据移动到hbase表;
:key 是必须要显示写出来的,:key 即对应是hbase 的row key,后面的都是不同的column family;
3) hive hbase 的map 数据类型的使用
create table hbase_table_3(value map<string,int>, row_key int) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping"="cf:,:key");
insert overwrite table hbase_table_3 select map(bar,foo),foo from pokes;
hbase(main):029:0> scan "hbase_table_3"
ROW                   COLUMN+CELL
 1                    column=cf:aaaa, timestamp=1404973374295, value=1
 2                    column=cf:bbbb, timestamp=1404973374295, value=2
 98                   column=cf:1111, timestamp=1404973374295, value=98
 99                   column=cf:4444, timestamp=1404973374295, value=99
----------------------------------
hive> select * from hbase_table_3;
OK
{"aaaa":1}      1
{"bbbb":2}      2
{"1111":98}     98
{"4444":99}     99
------------------------------------------------
在value map<string, int>中,map的key必须是string类型
hive表字段,只有map类型才可以直接匹配hbase表类型cf: 这样的列族的声明,否则要指定hive表字段和hbase列的对应关系;
4) hive 和 hbase表区别
hive表没有唯一键的限制,hbase有唯一键的限制;
hbase put相同row key的记录,会覆盖原来的记录;hive的相同key的数据会被保留下来;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值