使用Hive整合Hbase

本文介绍如何通过配置Hive连接HBase,并演示具体的表创建及数据插入过程。包括了环境搭建步骤、版本匹配原则及操作HBase表的具体方法。

一、配置

1、根据hive的版本去maven仓库找hive-hbase-handler.jar

<dependency>

<groupId>org.apache.hive</groupId>

<artifactId>hive-hbase-handler</artifactId>

<version>0.14.0</version>

</dependency>

把下载到的hive-hbase-handler-0.14.0.jar放到hivelib目录下。


附:对hivehbase的版本要求非常严格,必须要版本匹配才行。如何匹配版本?

  hive-hbase-handler-0.14.0.jar在Eclipse中查看,结构如下:


 首先去META-INF目录下查看maven下org.apache.hive下的pom.xml查看版本信息,内容如下(版本是引用的):



再去找,/META-INF/DEPENDENCIES文件,发现版本号,在此处可以查到:



2、设置环境变量

修改$HIVE_HOME/conf/hive-env.sh文件中的最后一行,内容如下:

export HIVE_AUX_JARS_PATH=/usr/local/hive-0.14.0/lib/hive-hbase-handler-0.14.0.jar:/u

sr/local/hbase-0.98.8-hadoop2/lib/hbase-client-0.98.8-hadoop2.jar:/usr/local/hbase-0.

98.8-hadoop2/lib/zookeeper-3.4.6.jar


二、创建表

使用hive创建HBase

CREATE TABLE h1(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 

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

WITH SERDEPROPERTIES ( 

"hbase.columns.mapping" = ":key,f1:c1", 

"hbase.table.name" = "t1" 

);

 

CREATE TABLE h2(id int, name string, age int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 

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

WITH SERDEPROPERTIES ( 

"hbase.columns.mapping" = ":key,f1:c1,f1:c2", 

"hbase.table.name" = "t2" 

);

 

//属性"hbase.columns.mapping"的值中间不能有任何空格。

 

对于已经存在的hbase表,也可以使用hive进行管理。语法如下

CREATE external TABLE h3(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 

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

WITH SERDEPROPERTIES ( 

"hbase.columns.mapping" = ":key,f1:c1", 

"hbase.table.name" = "t3" 

);

三、使用hive插入HBase表数据

只支持insert插入,不支持load data插入。

 

四、 整合的优点

非常方便的使用sql操作hbase表中的数据

五、 整合的缺点

不支持hbase中的复合键,不支持版本查询。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值