Hive提供了与HBase的集成,使得能够在HBase表上使用hive sql 语句进行查询 插入操作以及进行Join和Union等复杂查询、同时也可以将hive表中的数据映射到Hbase中。
1 整合配置
- 1、修改hive-site.xml文件,添加配置属性
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1:2181,node2:2181,node3:2181</value>
</property>
- 2、修改 hive-env.sh 文件,添加hbase的依赖包到hive的classpath中
export HIVE_CLASSPATH=$HIVE_CLASSPATH:/opt/hbase/lib/*
- 3、使用编译好的 hive-hbase-handler-1.2.1.jar替换hive之前的lib目录下的该jar包
下载地址://download.csdn.net/download/qq_26719997/12255875
2 测试
2.1 将hbase表映射到hive表中
- 1:在hbase中创建一张表
create 'hbase_test','f1','f2','f3'
- 2:加载数据到hbase_test表中
put 'hbase_test','r1','f1:name','zhangsan'
put 'hbase_test','r1','f2:age','2'
- 3:创建基于hbase的hive表
create external table hiveFromHbase(
rowkey string,
f1 map<STRING,STRING>,
f2 map<STRING,STRING>
) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:,f2:")
TBLPROPERTIES ("hbase.table.name" = "hbase_test");
- 4:查看hive表的数据
0: jdbc:hive2://node1:10000> select * from hivefromhbase;
+-----------------------+----------------------+-------------------+
| hivefromhbase.rowkey | hivefromhbase.f1 | hivefromhbase.f2 |
+-----------------------+----------------------+-------------------+
| r1 | {"name":"zhangsan"} | {"age":"2"} |
+-----------------------+----------------------+-------------------+
2.2 将hive表映射到hbase表中
- 1:创建一张映射hbase的表
create table hive_test(
id string,
name string,
age int
)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:name,f2:age")
TBLPROPERTIES ("hbase.table.name" = "hbaseFromhive");
- 2:向hive表加载数据
--加载数据到hive_test表中
insert into table hive_test select * from hive_test_data;
- 3:查看hbase表hbaseFromhive是否有数据
hbase(main):032:0*scan 'hbaseFromhive'
ROW COLUMN+CELL
1 cloumn=f1:name timestamp=1584586821, value=zhangsan
1 cloumn=f1:age timestamp=1584586821, value=2
2 row(s) in 0.0036 seconds