黑猴子的家:Sqoop HBase 到 RDBMS

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"

你可能感兴趣的:(黑猴子的家:Sqoop HBase 到 RDBMS)