本文是对[1]的重新整理。

#---------------------------------------------------------------------------------------------------------------------

软件版本
MySQL8.0.20-0ubuntu0.19.10.1
Hiveapache-hive-3.0.0-bin
Hbasehbase-2.2.4
SQOOPsqoop-1.4.7.bin__hadoop-2.6.0
HADOOPhadoop-3.1.2

#---------------------------------------------------------------------------------------------------------------------

流程思路:

hbase->Hive外表->Hive内表->Mysql(这个流程搞不定,改为下述流程)

改为

hbase->Hive外表->导出Hive外表的HDFS文件->mysql导入HDFS文件

外表和内表的区别见[2]

#------------------------------------------------步骤如下---------------------------------------------------------------------

步骤操作命令备注
Mysql建立空表  

Hbase建立employee表

create 'employee','info'
put 'employee',1,'info:id',1
put 'employee',1,'info:name','peter'   
put 'employee',2,'info:id',2                          
put 'employee',2,'info:name','paul'

建表和插入2条数据

建立Hive外表(beeline)

CREATE EXTERNAL TABLE h_employee(key int, id int, name string)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping"= ":key, info:id,info:name") TBLPROPERTIES ("hbase.table.name"= "employee");

 

 

建立Hive内表(beeline)

CREATE TABLE  h_employee_export(key INT, id INT, name STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054';

 

 
Hive外表->Hive内表insert overwrite table h_employee_export select * from h_employee;

Hive外表是基于Hbase的

Hive内表->Mysql  

 

数据库/数据仓库表格名称
Mysqlemployee
Hbaseemployee
Hive内表h_employee_export
Hive外表h_employee

 

insert overwrite table h_employee_export select * from h_employee;

执行这句话的时候出现:

INFO  : 2020-05-29 21:28:01,357 Stage-1 map = 0%,  reduce = 0%
INFO  : 2020-05-29 21:29:01,601 Stage-1 map = 0%,  reduce = 0%
INFO  : 2020-05-29 21:30:01,746 Stage-1 map = 0%,  reduce = 0%

网上解决方案是改yarn-site.xml中的yarn.nodemanager.resource.memory-mb,试过无效,失败,以后再说!!

##################################################################################

Reference:

[1]sqoop从hbase导出数据到mysql

[2]hive内表和外表区别(转载+自己整理)

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐