HBase版本 1.3.1
Hive版本 1.2.1
环境准备
$ exportHBASE_HOME=/home/admin/modules/hbase-1.3.1
$ exportHIVE_HOME=/home/admin/modules/apache-hive-1.2.2-bin
$ ln -s$HBASE_HOME/lib/hbase-common-1.3.1.jar $HIVE_HOME/lib/hbase-common-1.3.1.jar
$ ln -s$HBASE_HOME/lib/hbase-server-1.3.1.jar $HIVE_HOME/lib/hbase-server-1.3.1.jar
$ ln -s$HBASE_HOME/lib/hbase-client-1.3.1.jar $HIVE_HOME/lib/hbase-client-1.3.1.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.3.1.jar $HIVE_HOME/lib/hbase-it-1.3.1.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.3.1.jar$HIVE_HOME/lib/hbase-hadoop2-compat-1.3.1.jar
$ ln -s $HBASE_HOME/lib/hbase-hadoop-compat-1.3.1.jar$HIVE_HOME/lib/hbase-hadoop-compat-1.3.1.jar
同时在hive-site.xml中修改zookeeper的属性,如下:
<property>
<name>hive.zookeeper.quorum</name>
<value>linux01,linux02,linux03</value>
<description>The list of ZooKeeperservers to talk to. This is only needed for read/writelocks.</description
</property>
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
<description>The port of ZooKeeperservers to talk to. This is only needed for read/writelocks.</description
</property>
建立Hive表,关联HBase表,插入数据到Hive表的同时能够影响HBase表。
(1) 在Hive中创建表同时关联HBase(这里有可能会出现不兼容的情况,查看编译hive的方式)
CREATETABLE hive_hbase_emp_table( empnoint, enamestring, jobstring, mgr int, hiredatestring, saldouble, commdouble, deptnoint) STOREDBY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITHSERDEPROPERTIES ("hbase.columns.mapping" =":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno") TBLPROPERTIES ("hbase.table.name" ="hbase_emp_table"); |
(2) 在Hive中创建临时中间表,用于load文件中的数据
CREATETABLE emp( empnoint, enamestring, jobstring, mgr int, hiredatestring, saldouble, commdouble, deptnoint) row format delimited fields terminated by '\t'; |
(3) 向Hive中间表中load数据
hive> load data local inpath '/home/admin/softwares/data/emp.txt'into table emp;
(4) 通过insert命令将中间表中的数据导入到Hive关联HBase的那张表中
hive> insert into table hive_hbase_emp_table select* from emp;
(5) 查看Hive以及关联的HBase表中是否已经成功的同步插入了数据
hive> select * from hive_hbase_emp_table;
hbase> scan ‘hbase_emp_table’
在Hive中创建外部表
CREATEEXTERNAL TABLE relevance_hbase_emp( empnoint, enamestring, jobstring, mgr int, hiredatestring, saldouble, commdouble, deptnoint) STOREDBY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITHSERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno") TBLPROPERTIES ("hbase.table.name" ="hbase_emp_table"); |
关联后就可以使用Hive函数进行一些分析操作了
hive (default)> select * from relevance_hbase_emp;