hive与hbase集成


环境:

hadoop2.7.7

hive3.1.0

hbase2.0.2

1.jar包拷贝(之所以用这种方式,是因为这种方式最为稳妥,最开始用的软连接的方式,总是却少jar包)到hive的lib目录下删除所有hbase相关的jar

rm -rf hbase-*.jar

接着从hbase的lib目录下拷贝所有的hbase相关jar

cp -a  hbasehome/lib/hbase-*.jar ./

zookeeper相关的jar也要进行替换

2.在hive的hive-site.xml中添加zk的相关配置

 1  <property>
 2   <name>hive.zookeeper.quorum</name>
 3   <value>hadoop002,hadoop003,hadoop004</value>
 4   <description>The list of ZooKeeper servers to talk to. This is only needed for read/write locks.</description>
 5 </property>
 6 <property>
 7   <name>hive.zookeeper.client.port</name>
 8   <value>2181</value>
 9   <description>The port of ZooKeeper servers to talk to. This is only needed for read/write locks.</description>
10 </property>

3.在hive中创建表,执行完建表语句后,会在hbase生成对应的hbase_emp_table表,但是这种表是non-native table类型的表,无法被truncate,也无法使用load加载数据

 1 CREATE TABLE hive_hbase_emp_table(  2 empno int,  3 ename string,  4 job string,  5 mgr int,  6 hiredate string,  7 sal double,  8 comm double,  9 deptno int) 10 STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
11 WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno") 12 TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");

4.插入数据

上面说了无法通过load加载数据,所以借助临时表进行insert,已提前创建了emp表.并插入了数据

empno对应hbase_emp_table的行键,不能为null

insert into table hive_hbase_emp_table select * from emp where empno is not null;

5.之后分别在hive和hbase查询数据即可

6.无法创建新的管理表与hbase_emp_table关联,只能通过创建外部表的方式与hbase_emp_table进行关联


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM