hive整合HBase:HBase table xsg:test05 doesn't exist while the table is declared as an external table

版本 虚拟机centOS7 hive 1.2.1 hbase 1.2.6

1,在hive-site.xml中添加配置

 <property>
  <name>hbase.zookeeper.quorum</name>
  <value>test-hadoop-2-21,test-hadoop-2-22,test-hadoop-2-23</value>
 </property>

2,将Hbase/lib下的jar包拷贝到hive/lib下 给hive整合hbase提供环境

hbase-server-1.2.6.jar
hbase-client-1.2.6.jar
hbase-protocol-1.2.6.jar
 hbase-hadoop2-compat-1.2.6.jar
 hbase-common-1.2.6.jar
 hbase-hadoop-compat-1.2.6.jar
 htrace-core-3.1.0-incubating.jar
metrics-core-2.2.0.jar

另外还有一个特殊的包hive-hbase-handler-1.2.1需要编译 (hive1.2.2版本的不需要)

如果没有这个jar包,就会报错:

message:HBase table xsg:test05 doesn’t exist while the table is declared as an external table.

解决方法:

下载hive的源码包 通过eclipse进行编译 :说白了就是把缺少的jar包添加进行,重新打jar包上传即可
import -> File System -> hbase-handler/src/java -> 确定 -> Finish

在这里插入图片描述
这是一个压缩包,解压得到源码包 ,,后在eclipse中操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建jar包的目录Lib,将下载好的jar包复制,光标放在lib上 —>粘贴
在这里插入图片描述
选择Build Path点击Add to Bulid Path 至此可以导出我们需要的jar包了。
在org.apache.hadoop.hive.hbase包上点击右键,选择export 选择java下的JAR file,选择一个生成位置,即可点击完成。
到这里我们就生成了符合自己Hbase版本的hive-hbase-handler了。

4,将jar包上传到hive/lib中就可以创建hive表进行测试了

如果报错org.apache.hadoop.hbase.client.RetriesExhaustedException: Can’t get the location for replica

很可能是你的hbase服务或者内部服务之间有问题了,看一下日志吧!

创建外部表将hbase中的数据在hive中做一个映射,就可以在hive中操作hbase了,注意建表时两个表中的字段类型与个数要一致,存放数据时没有的字段会显示NULL

create external table test01 (rowkey string,name string, age int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age") TBLPROPERTIES ("hbase.table.name" = "test01");
注意:如果是default中的表就只写表名      "hbase.table.name" = "test01"
 如果是某个命名空间的表   要指明命名空间 "hbase.table.name"="xsg:aaa"

5,将hive数据写入hbase
insert into table aaa select * from bbb;
之后在hbase中查询数据,数据已经从hive复制到了hbase中

最后要感谢提供方法 的博主,文档链接

https://blog.csdn.net/linxiyimeng007/article/details/80969151
提供了主要eclipse操作方法
https://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html
Eclipse中导入外部jar包
https://www.cnblogs.com/acm-bingzi/p/decompileJar.html
当时理解错了,还来了一段反编译
https://blog.csdn.net/danielchan2518/article/details/81075542?utm_source=blogxgwz1
报错:Can’t get the location for replica时提供思路
https://www.cnblogs.com/tnsay/p/5783815.html
最后再来几条测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值