mysql导入hbase可以直接通过sqoop进行,但是hbase导出到mysql无法直接进行,需要经过hive的中间作用来完成,思路是这样的hbase→hive外部表→hive内部表→sqoop导出→mysql,这就需要hive和hbase 的整合集成
1、Hive和HBase整合集成
https://www.jianshu.com/p/e9d1ccfc6ff1
2、Hive与HBase集成测试案例一
https://www.jianshu.com/p/c43b5f530174
3、Hive与HBase集成测试案例二
https://www.jianshu.com/p/3c0be7c78160
4、在mysql数据库中创建hbase_staff表,为hbase导入做准备
mysql> create table hbase_staff(id int(4) , name varchar(255), sex varchar(255));
5、创建hive 内部表
hive> drop table nhbase;
hive> create table nhbase(id int,name string,sex string) row format delimited fields terminated by '\t';
6、创建Hive外部表,关联HBase表
hive> create external table whbase(id int,name string,sex string)
> stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> with serdeproperties("hbase.columns.mapping"=":key,info:name,info:sex")
> tblproperties("hbase.table.name"="staff_hbase");
7、查询Hive外部表
hive> select * from whbase;
8、把hive外部关联hbase的表,通过查询导入到hive内部表
hive> insert overwrite table nhbase select * from whbase;
9、查询内部表
hive> select * from nhbase;
10、通过sqoop把hive内部表数据导入到mysql表中
完成hbase表数据到mysql表的全过程
[victor@node1 sqoop-1.4.7]$ bin/sqoop export \
--connect jdbc:mysql://node1:3306/company \
--username root \
--password 000000 \
--table hbase_staff \
--num-mappers 1 \
--export-dir /user/hive/warehouse/nhbase \
--input-fields-terminated-by "\t"