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