Hive 整合HBase完整示例

一、 前提

1、 zookeeper、hadoop、hive、hbase已经安装完成

2、 其中hive和hbase没有关系

二、 整合

1、 分析

hive要和hbase通讯,重要的一点就是hive能够加载到连接hbase的jar包;然后通过hive和hbase的api进行通讯

2、 如何能让hive加载到hbase的jar包?

方案一、 将hbase的软件包下面的lib里面的jar包复制到hive目录下的lib中(个人不推荐),因为总感觉复制来复制去的东东不靠谱

方案二、 通过修改配置文件的方式(推荐),个人感觉比较规范,靠谱

修改hive软件包目录下的conf/hive-env.sh文件,添加如下两行

export HADOOP_HOME=/usr/local/software/hadoop-3.1.2
export HBASE_HOME=/usr/local/software/hbase-2.1.3

分别是Hadoop和Hbase安装目录

修改hive-site.xml文件,添加zookeeper配置

<property>
     <name>hbase.zookeeper.quorum</name>
     <value>h1,h2,h3</value>
</property>
<property>
     <name>hbase.zookeeper.property.clientPort</name>
     <value>2181</value>
</property>

配置完毕

三、使用hive操作hbase表

1、 打开hbase shell

# hbase shell
...........................
hbase(main):001:0> 

2、 创建数据表(test为表名,user为列簇)

hbase(main):001:0> create table 'test','user'

3、 向表中插入数据

hbase(main):001:0> put 'test','rowkey-1','user:id','1'
hbase(main):001:0> put 'test','rowkey-1','user:name','admin'
hbase(main):001:0> put 'test','rowkey-2','user:id','1'
hbase(main):001:0> put 'test','rowkey-2','user:name','user'

hbase数据表创建完毕

使用hive连接hbase中的test表

1、 使用hive创建外部表(位置在hbase上)

CREATE EXTERNAL TABLE test(key string,id int,name string) STORED BY 
'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES 
("hbase.columns.mapping" = ":key,user:id,user:name") 
TBLPROPERTIES("hbase.table.name" = "test");

解释一下:创建一个外部表,表名为test,有3列(key,id,name)其中key为虚拟列。外部表位置为hbase,处理类org.apache.hadoop.hive.hbase.HBaseStorageHandler,映射关系为,列簇:列名 映射表为test;

至此,使用hive关联hbase表完毕

然后就可以使用hive操作hbase中的test表了

hive> select * from test;
1	1	wx
2	2	user
Time taken: 0.763 seconds, Fetched: 2 row(s)
hive> 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值