Sqoop数据迁移介绍

目录

        • Sqoop版本:
        • Sqoop原理:(注意只有Map任务,没有reduce)
        • Sqoop导入导出原理
        • Sqoop安装配置环境搭建
        • Sqoop数据导入---全部导入
        • Sqoop数据导入---增量导入
        • Sqoop数据导入---MySQL表数据导入Hive
        • Sqoop数据导入---MySQL表数据子集导入
        • Sqoop数据导出

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库间进行数据的传递。
Sqoop数据迁移介绍_第1张图片

Sqoop版本:

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

Sqoop原理:(注意只有Map任务,没有reduce)

Sqoop数据迁移介绍_第2张图片

Sqoop导入导出原理

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

Sqoop安装配置环境搭建

在这里插入图片描述
Sqoop数据迁移介绍_第3张图片
Sqoop数据迁移介绍_第4张图片
Sqoop数据迁移介绍_第5张图片
Sqoop数据迁移介绍_第6张图片

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Sqoop数据迁移介绍_第7张图片

或者在bin下,也可以看到已经配置好的命令:
Sqoop数据迁移介绍_第8张图片
Sqoop数据迁移介绍_第9张图片

Sqoop数据导入—全部导入

打开SQLyog连接hadoop01数据库,可以看到我们数据库。
Sqoop数据迁移介绍_第10张图片
在这里手动创建数据库userdb,字符集选utf8
Sqoop数据迁移介绍_第11张图片
在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'); 

Sqoop数据迁移介绍_第12张图片
创建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`)  
  );

Sqoop数据迁移介绍_第13张图片

 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'); 

Sqoop数据迁移介绍_第14张图片
将emp表的数据导入到HDFS文件系统
Sqoop数据迁移介绍_第15张图片
通过HDFS UI界面查看数据结果文件
Sqoop数据迁移介绍_第16张图片
查看导入后的文件内容
Sqoop数据迁移介绍_第17张图片

Sqoop数据导入—增量导入

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

向数据表emp进行增量导入
Sqoop数据迁移介绍_第18张图片
从HDFS UI界面查看增量导入结果

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

将emp_add表中的数据导入Hive
在这里插入图片描述
Sqoop数据迁移介绍_第19张图片
通过hive客户端查看Hive数据仓库表数据
Sqoop数据迁移介绍_第20张图片

Sqoop数据导入—MySQL表数据子集导入

  1. –where
    在这里插入图片描述
    Sqoop数据迁移介绍_第21张图片
    Sqoop数据迁移介绍_第22张图片

  2. –query
    在这里插入图片描述
    Sqoop数据迁移介绍_第23张图片

Sqoop数据导出

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

创建MySQL数据表
Sqoop数据迁移介绍_第24张图片
导出操作
在这里插入图片描述
查看表
Sqoop数据迁移介绍_第25张图片

你可能感兴趣的:(大数据)