大数据之Hive整合HBase

Posted Mr.zhou_Zxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据之Hive整合HBase相关的知识,希望对你有一定的参考价值。

Hive整合HBase

1 可能会出现的异常(全分布式)

1. java.lang.InCompatibleClassChanceErr:Found Jline.xxxxxx
- 解决:$HIVE_HOME/lib/jline-2.12.jar拷贝到$HADOOP_HOME/share/hadoop/yarn/lib

2 建立hive关联hbase的表

2.1 建表语句

hive (default)> create database hive2hbase;
hive (default)> use hive2hbase;

create table if not exists hive2hbase(
uid int,
uname string,
age int,
sex string
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:uname,info:age,info:sex")
TBLPROPERTIES ("hbase.table.name" = "hive2hbase1");

2.2 报错

在这里插入图片描述

hive和hbase整合的jar包不匹配。
在这个hive中的以下jar包中,缺少依赖。
-rw-rw-r--  1 root root   115935 Jun 19  2015 hive-hbase-handler-1.2.1.jar

解决方式:
要解压这个包,然后重新源码打包。
将我打包之后的jar包覆盖到hive服务器的lib目录下即可

然后重新在hive中执行2.1中的建表语句,之后就可以在hbase中查看到此表

2.3 测试

##1. 在hive中导入数据,不能直接用load导入数据
create table if not exists t_user(
uid int,
uname string,
age int,
sex string
)
row format delimited
fields terminated by ',';

load data local inpath '/data/hive2hbase
/user.txt' into table hive2hbase.t_user;

insert into hive2hbase.hive2hbase
select * from hive2hbase.t_user;

##2. 在hbase导入数据
hbase(main):003:0> put 'hive2hbase1', '5', 'info:uname', 'luohao'
0 row(s) in 0.0420 seconds

hbase(main):004:0> put 'hive2hbase1', '5', 'info:age', '18'
0 row(s) in 0.0060 seconds

hbase(main):005:0> put 'hive2hbase1', '5', 'info:sex', 'bt'
0 row(s) in 0.0080 seconds

hive (hive2hbase)> select * from hive2hbase;
OK
1       lixi    34      man
2       wuliji  38      woman
3       xiangweihao     39      superman
4       wangyunfeng     40      superwoman
5       luohao  18      bt

3 建立HBase关联Hive的表

##1. 在hbase中建表
hbase(main):008:0> create 't1', 'f1'
0 row(s) in 2.2450 seconds

=> Hbase::Table - t1
hbase(main):009:0> put 't1', '1', 'f1:name', 'ergouzi'
0 row(s) in 0.0090 seconds

hbase(main):010:0> put 't1', '1', 'f1:age', '11'
0 row(s) in 0.0040 seconds

hbase(main):011:0> put 't1', '2', 'f1:name', 'tiedan'
0 row(s) in 0.0020 seconds

hbase(main):012:0> put 't1', '2', 'f1:age', '22'
0 row(s) in 0.0020 seconds

##2. 在hive中建表
create external table if not exists t1(
uid int,
uname string,
age int
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:name,f1:age")
TBLPROPERTIES ("hbase.table.name" = "t1");


hive (hive2hbase)> select * from t1;
OK
1       ergouzi 11
2       tiedan  22

资源获取:

https://download.csdn.net/download/m0_51197424/18884938

在这里插入图片描述

以上是关于大数据之Hive整合HBase的主要内容,如果未能解决你的问题,请参考以下文章

大数据学习系列之九---- Hive整合Spark和HBase以及相关测试

Hadoop基础之《—整合HBase+Phoenix+Hive》

大数据学习系列之六 ----- Hadoop+Spark环境搭建

Hive与Hbase关系整合

Hive与Hbase关系整合

Hadoop基础之《(11)—整合HBase+Phoenix+Hive—安装Hive》