Sqoop数据迁移介绍

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库间进行数据的传递。
在这里插入图片描述

Sqoop版本:
  • Sqoop1
    • sqoop1优点:架构部署简单
    • sqoop1的缺点:命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全 机制不够完善, 安装需要root权限,connector必须符合JDBC模型
  • Sqoop2
    • sqoop2的优点:多种交互方式,命令行,web UI,rest API,conncetor集中化管理, 所有的链接安装在sqoop server上,完善权限管理机制,connector规范化,仅仅负 责数据的读写。
    • sqoop2的缺点,架构稍复杂,配置部署更繁琐。
Sqoop原理:(注意只有Map任务,没有reduce)

在这里插入图片描述

Sqoop导入导出原理
  1. 导入原理
      在导入数据之前,Sqoop使用JDBC检查导入的数据表,检索出 表中的所有列以及列的SQL数据类型,并将这些SQL类型映射为 Java数据类型,在转换后的MapReduce应用中使用这些对应的 Java类型来保存字段的值,Sqoop的代码生成器使用这些信息来创 建对应表的类,用于保存从表中抽取的记录。
  2. 导出原理
      在导出数据前,Sqoop会根据目标表的定义生成一个Java类,这个 生成的类能够从文本中解析出记录数据,并能够向表中插入类型合 适的值,然后启动一个MapReduce作业,从HDFS中读取源数据 文件,使用生成的类解析出记录,并且执行选定的导出方法。
Sqoop安装配置环境搭建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

或者在bin下,也可以看到已经配置好的命令:
在这里插入图片描述
在这里插入图片描述

Sqoop数据导入—全部导入

打开SQLyog连接hadoop01数据库,可以看到我们数据库。
在这里插入图片描述
在这里手动创建数据库userdb,字符集选utf8
在这里插入图片描述
在sqlyog中创建表emp

 CREATE TABLE `emp` (     
  `id` int(11) NOT NULL,    
  `name` varchar(100) DEFAULT NULL,     
  `deg` varchar(100) DEFAULT NULL,     
  `salary` int(11) DEFAULT NULL,   
  `dept` varchar(10) DEFAULT NULL,      
   PRIMARY KEY (`id`)  
   );

然后插入测试数据:

 INSERT INTO `emp` VALUES ('1201', 'gopal', 'manager', '50000', 'TP'); 
 INSERT INTO `emp` VALUES ('1202', 'manisha', 'Proof reader', '50000', 'TP');  
 INSERT INTO `emp` VALUES ('1203', 'khalil', 'php dev', '30000', 'AC');  
 INSERT INTO `emp` VALUES ('1204', 'prasanth', 'php dev', '30000', 'AC');  
 INSERT INTO `emp` VALUES ('1205', 'kranthi', 'admin', '20000', 'TP'); 

在这里插入图片描述
创建emp_add表

 CREATE TABLE `emp_add` (     
  `id` int(11) NOT NULL,    
  `hno` varchar(100) DEFAULT NULL,     
  `street` varchar(100) DEFAULT NULL,     
  `city` varchar(100) DEFAULT NULL,     
   PRIMARY KEY (`id`)  
  );

在这里插入图片描述

 INSERT INTO `emp_add` VALUES ('1201', '288A', 'vgiri', 'jublee');  
 INSERT INTO `emp_add` VALUES ('1202', '108I', 'aoc', 'sec-bad');  
 INSERT INTO `emp_add` VALUES ('1203', '144Z', 'pgutta', 'hyd');  
 INSERT INTO `emp_add` VALUES ('1204', '78B', 'old city', 'sec-bad');  
 INSERT INTO `emp_add` VALUES ('1205', '720X', 'hitec', 'sec-bad'); 

在这里插入图片描述
将emp表的数据导入到HDFS文件系统
在这里插入图片描述
通过HDFS UI界面查看数据结果文件
在这里插入图片描述
查看导入后的文件内容
在这里插入图片描述

Sqoop数据导入—增量导入
  • append模式:主要针对INSERT新增数据的增量导入。
  • lastmodified模式:主要针对UPDATE修改数据的增量导入。

向数据表emp进行增量导入
在这里插入图片描述
从HDFS UI界面查看增量导入结果

Sqoop数据导入—MySQL表数据导入Hive

将emp_add表中的数据导入Hive
在这里插入图片描述
在这里插入图片描述
通过hive客户端查看Hive数据仓库表数据
在这里插入图片描述

Sqoop数据导入—MySQL表数据子集导入
  1. –where
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. –query
    在这里插入图片描述
    在这里插入图片描述

Sqoop数据导出

    Sqoop导出:就是将HDFS、Hive、Hbase等文件 系统或数据仓库中的数据导出到关系型数据库中,在导出操作之前,目标表必 须存在于目标数据库中,否则在执行导出操作时会失败。

创建MySQL数据表
在这里插入图片描述
导出操作
在这里插入图片描述
查看表
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值