HBase实践 —— hive-hbase交互集成实践总结
Posted 扫地增
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase实践 —— hive-hbase交互集成实践总结相关的知识,希望对你有一定的参考价值。
hive和hbase那些版本是相互兼容的
官网说,
hive0.90
与hbase0.92
是兼容的,
早期的hive
版本与hbase0. 890.0
兼容;
hive1.x
与hbase0.98.x
或则更低版本是兼容的。
hive2.x
与hbase1.x
及比hbase1.x
更高版本兼容;
由于笔者在实践中使用的是
hbase1.x
与hive1.x
。如果想hbase1.x
与hive1.x
整合,需要编译hive-hbase-handler
代码。
交互配置:
1、配置hive、hbase环境变量,已有不在配
#配置hive、hbase环境变量,已有不在配
ln -s $HBASE_HOME/lib/hbase-common-1.4.9.jar $HIVE_HOME/lib/hbase-common-1.4.9.jar
ln -s $HBASE_HOME/lib/hbase-server-1.4.9.jar $HIVE_HOME/lib/hbase-server-1.4.9.jar
ln -s $HBASE_HOME/lib/hbase-client-1.4.9.jar $HIVE_HOME/lib/hbase-client-1.4.9.jar
ln -s $HBASE_HOME/lib/hbase-protocol-1.3.1.jar $HIVE_HOME/lib/hbase-protocol-1.3.1.jar
ln -s $HBASE_HOME/lib/hbase-it-1.4.9.jar $HIVE_HOME/lib/hbase-it-1.4.9.jar
ln -s $HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar $HIVE_HOME/lib/htrace-core-3.1.0-incubating.jar
ln -s $HBASE_HOME/lib/hbase-hadoop2-compat-1.4.9.jar $HIVE_HOME/lib/hbase-hadoop2-compat-1.4.9.jar
ln -s $HBASE_HOME/lib/hbase-hadoop-compat-1.4.9.jar $HIVE_HOME/lib/hbase-hadoop-compat-1.4.9.jar
2、在$HIVE_HOME/conf/hive-site.xml
中修改Zookeeper
配置:
<property>
<name>hive.zookeeper.quorum</name>
<value>kb-testhadoop01</value>
<description>
List of ZooKeeper servers to talk to. This is needed for:
1. Read/write locks - when hive.lock.manager is set to
org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager,
2. When HiveServer2 supports service discovery via Zookeeper.
3. For delegation token storage if zookeeper store is used, if
hive.cluster.delegation.token.store.zookeeper.connectString is not set
4. LLAP daemon registry service
</description>
</property>
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
<description>
The port of ZooKeeper servers to talk to.
If the list of Zookeeper servers specified in hive.zookeeper.quorum
does not contain port numbers, this value is used.
</description>
</property>
测试:
1、在Hive
中创建表同时关联HBase
。
CREATE TABLE test.hive_hbase_user_info_table
(
id string,
name string,
age int,
sex string
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age,info:sex")
TBLPROPERTIES ("hbase.table.name" = "hbase_user_info_table");
完成之后,可以分别进入
Hive(use test ;show tables;)
和HBase(list)
查看,都生成了对应的表。
2、建立中间表进行数据交互
#建立中间表
CREATE TABLE test.user_info(
id string,
name string,
age int,
sex string)
row format delimited fields terminated by '\\t';
#加载数据到中间表
load data local inpath '/home/hadoop/datas/emp.txt' into table test.user_info;
#将中间表数据插入到hive-hbase映射表中
insert into table test.hive_hbase_user_info_table select * from test.user_info;
#在hive-hbase映射表中查询数据
select * from test.hive_hbase_user_info_table;
#在hbase中查询数据
scan 'hbase_user_info_table';
3、建立外部表进行映射,用于hive
分析查询hbase
。
#建立hive分析映射表
CREATE EXTERNAL TABLE relevance_hbase_user_info(
id string,
name string,
age int,
sex string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age,info:sex")
TBLPROPERTIES ("hbase.table.name" = "hbase_user_info_table");
#查询数据
select * from relevance_hbase_user_info;
结果:
经过以上操作可以从
hive
中查询到了hbase
的数据。
以上是关于HBase实践 —— hive-hbase交互集成实践总结的主要内容,如果未能解决你的问题,请参考以下文章