一、配置
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放到hive的lib目录下。
附:对hive和hbase的版本要求非常严格,必须要版本匹配才行。如何匹配版本?
hive-hbase-handler-0.14.0.jar在Eclipse中查看,结构如下:
首先去META-INF目录下查看maven下org.apache.hive下的pom.xml查看版本信息,内容如下(版本是引用的):
再去找,/META-INF/DEPENDENCIES文件,发现版本号,在此处可以查到:
修改$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中的复合键,不支持版本查询。