Hive与HBase交互

前置准备

这里需要大家预先安装 Hadoop(2.7.7)集群、Hive(2.3.6)、HBase(1.4.13)。其安装教程如下:

Hadoop单机伪分布式-视频教程

Hadoop完全分布式集群环境搭建-视频教程

HA(高可用)-Hadoop集群环境搭建视频+图文教程

Linux下Hive的安装

HBase单机伪分布式集群环境搭建-视频教程

HA-HBase集群环境搭建-视频教程

一、Hive读取HBase中的数据

1.1 先在HBase上创建一张表hbase_hive(方便测试使用默认命名空间default)

hbase(main):025:0> create 'hbase_hive','info'

1.2 向hbase_hive表中插入两条测试数据

hbase(main):031:0> put 'hbase_hive','user001','info:name','xiaokang'
hbase(main):032:0> put 'hbase_hive','user001','info:age',18
hbase(main):033:0> put 'hbase_hive','user002','info:name','xiaokang1'
hbase(main):034:0> put 'hbase_hive','user002','info:age',19

1.3 在Hive中创建外部表hive_user并关联到HBase的hbase_hive

create external table hive_user(userid 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" = "hbase_hive");

1.4 读取测试

hive (default)> select * from hive_user limit 0,1;
OK
hive_user.userid        hive_user.name  hive_user.age
user001 xiaokang        18
Time taken: 0.989 seconds, Fetched: 1 row(s)

1.5 向HBase的hbase_hive表中再添加一条数据进行读取测试

hbase(main):033:0> put 'hbase_hive','user003','info:name','xiaokang2'
hbase(main):034:0> put 'hbase_hive','user003','info:age',20

hive (default)> select * from hive_user;
OK
hive_user.userid        hive_user.name  hive_user.age
user001 xiaokang        18
user002 xiaokang1       19
user003 xiaokang2       20
Time taken: 0.471 seconds, Fetched: 3 row(s)

二、Hive写入数据到HBase中

2.1 先在HBase上创建一张表from_hive(数据导入到此表中)

hbase(main):025:0> create 'from_hive','info'

2.2 在Hive中创建外部表hive_user_hbase并关联到HBase的from_hive

create external table hive_user_hbase(userid 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" = "from_hive");

2.3 创建临时表(用于将数据写入到hive_user_hbase)

create temporary table tmp_user(userid string,name string,age int) row format delimited fields terminated by '\t';

2.4 向临时表中加载数据

load data local inpath '/home/xiaokang/user.txt' into table tmp_user;

#查询验证数据是否加载成功
hive (default)> select * from tmp_user;
OK
tmp_user.userid tmp_user.name   tmp_user.age
user111 xiaokang        18
user222 xiaokang        19
user333 xiaokang        20
user444 xiaokang        21
Time taken: 0.379 seconds, Fetched: 4 row(s)

2.5 写入数据

hive (default)> insert into table hive_user_hbase select * from tmp_user;

2.6 在HBase中验证数据是否写入

#扫描全表(大数据量的情况下不推荐,会造成机器崩溃)
hbase(main):041:0> scan 'from_hive'
ROW                                 COLUMN+CELL
 user111                            column=info:age, timestamp=1585814173216, value=18
 user111                            column=info:name, timestamp=1585814173216, value=xiaokang
 user222                            column=info:age, timestamp=1585814173216, value=19
 user222                            column=info:name, timestamp=1585814173216, value=xiaokang
 user333                            column=info:age, timestamp=1585814173216, value=20
 user333                            column=info:name, timestamp=1585814173216, value=xiaokang
 user444                            column=info:age, timestamp=1585814173216, value=21
 user444                            column=info:name, timestamp=1585814173216, value=xiaokang
4 row(s) in 0.0320 seconds
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值