sqoop 订阅
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。 展开全文
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。
信息
作    用
处理大数据
起始时间
2009年
外文名
sqoop
发    音
skup
sqoop特征
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。对于某些NoSQL数据库它也提供了连接器。Sqoop,类似于其他ETL工具,使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理。Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块。
收起全文
精华内容
下载资源
问答
  • 2022-03-15 21:24:41

    Sqoop

    一、 Sqoop安装

    \1) 将Sqoop安装包上传到虚拟机并进行解压:

    [root@cent71 module]# tar -zxf sqoop-1.4.7.tar.gz -C /opt/software/

    \2) 修改配置文件sqoop-env.sh:

    [root@cent71 conf]# cp sqoop-env-template.sh sqoop-env.sh

    #Set path to where bin/hadoop is available

    export HADOOP_COMMON_HOME=/opt/software/hadoop-2.7.0

    #Set path to where hadoop-*-core.jar is available

    export HADOOP_MAPRED_HOME=/opt/software/hadoop-2.7.0

    #set the path to where bin/hbase is available

    #export HBASE_HOME=

    #Set the path to where bin/hive is available

    export HIVE_HOME=/opt/software/apache-hive-2.1.1-bin

    \3) 将mysql驱动复制到sqoop的lib中:

    [root@cent71 module]# cp mysql-connector-java-5.1.39.jar /opt/software/sqoop-1.4.7.bin__hadoop-2.6.0/lib/

    \4) 设置好环境变量,就可以在任意路径下执行sqoop指令了。

    export SQOOP_HOME=/opt/software/sqoop-1.4.7.bin__hadoop-2.6.0

    export PATH= P A T H : PATH: PATH:SQOOP_HOME/bin

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# source /etc/profile

    \5) 测试能否连接到mysql:

    \6) 如果不行的话应该是只可以localhost连接

    \7) 修改mysql数据库的user表

    \8) Update mysql.user set host=”%” where user=”root”;

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop list-databases –connect jdbc:mysql://cent71:3306/ --username root --password 123456

    sqoop list-databases –connect jdbc:mysql://master:3306/ --username root --password 123456

    二、 Sqoop导入

    1 Mysql导入到HDFS

    a) 执行导入指令:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop import --connect jdbc:mysql://cent71:3306/mybase --username root --password 123456 --target-dir /sqoopresult --table stu --num-mappers 1

    –connect:指定连接的关系数据库

    –username:指定连接数据库的用户名

    –password:指定连接数据库的密码

    –target-dir:指定导入到HDFS的目录

    –table:代表要进行导入数据操作的mysql源数据库表名

    –num-mappers:指定map任务个数(或-m),必填

    注意:sqoop中,可以直接在控制行输入上述命令,也可以使用配置文件进行导入导出。如果使用配置文件,可以创建文件conf2:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# touch myconf/conf2

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# vi myconf/conf2

    import

    –connect

    jdbc:mysql://cent71:3306/mybase

    –username

    root

    –password

    123456

    –target-dir

    /sqoopresult4

    –table

    stu

    –m

    1

    然后执行指令:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop --options-file myconf/conf2

    即可。

    在写文件conf2时需要注意:参数值和项不能在同一行,写的时候每个隔开一行即可。

    b) 查看文件内容:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# hadoop fs -cat /sqoopresult/part-m-00000

    62131222,连鑫栋,软件2班

    62131223,李庆,软件2班

    2 Mysql导入到Hive

    a) 将hive-common包加入到sqoop的lib中:

    [root@cent71 lib]# cp hive-common-2.1.1.jar /opt/software/sqoop-1.4.7.bin__hadoop-2.6.0/lib/

    b) 在hive中创建表stu2:

    hive> create table stu2 like stu;

    c) 创建option文件:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# cat myconf/conf3

    import

    –connect

    jdbc:mysql://cent71:3306/mybase

    –username

    root

    –password

    123456

    –table

    stu

    –hive-table

    sqoop.stu2

    –hive-import

    –m

    1

    –fields-terminated-by

    \t

    d) 执行文件:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop --options-file myconf/conf3

    e) 在hive中查看:

    hive> select * from stu2;

    问题注意:

    Sqoop导入到Hive中的步骤是这样的:先导入到HDFS上,再load data到hive中,因此,如果这个过程中出错了,导致第二步没有运行成功,HDFS上就会多了一个路径/user/root/*;第二次再导入时因为已经存在这个路径了,就会报错。所以第二次尝试时应该先删掉此路径。

    3 MySQL表数据子集导入

    可以使用Sqoop提供的—where和—query参数,先进行数据过滤,再将满足条件的数据进行导入。

    –where语句:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# cat myconf/conf2

    import

    –connect

    jdbc:mysql://cent71:3306/mybase

    –username

    root

    –password

    123456

    –target-dir

    /sqoopresult5

    –table

    stu

    –num-mappers

    1

    –where

    stuno=‘100001’

    –columns

    stuno,name,bjname

    查看结果:

    [root@cent72 ~]# hadoop fs -cat /sqoopresult5/part-m-00000

    100001,test,testbj

    100001,test,testbj

    100001,test,testbj

    –query主要针对复杂的数据过滤,后面可以添加SQL语句,更方便高效地导入数据:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# vi myconf/conf2

    import

    –connect

    jdbc:mysql://cent71:3306/mybase

    –username

    root

    –password

    123456

    –target-dir

    /sqoopresult6

    –m

    1

    –query

    select stuno,name from stu WHERE bjname=‘计算1班’ AND $CONDITIONS

    作用就是先查出子集,然后将子集进行导入。$CONDITIONS相当于一个占位符,动态地接收经过滤后的子集数据,然后让每个Map任务执行查询的结果并进行数据导入。

    查看结果:

    [root@cent72 ~]# hadoop fs -cat /sqoopresult6/part-m-00000

    62131201,高俊杰

    62131202,安耀楠

    62131203,耿源

    62131204,刘乐妍

    使用时需要注意以下几点:

    \1) 如果没有指定“—m 1”,那么在指令中必须要添加—split-by参数,值为表中唯一的字段(如id),作用是针对多副本map任务并行执行查询结果并进行数据导入;

    \2) –query餐宿后的查询语句中如果已经使用了WHERE关键字,那么在连接$CONDITIONS占位符前必须使用AND关键字,否则必须使用WHERE关键字连接;

    \3) –query参数后的查询语句中的$CONDITIONS不能省略,并且如果查询语句使用双引号进行包装,则必须使用$CONDITIONS,这样可以避免shell将其视为Shell变量。

    三、 Sqoop导出

    1 将hive表的数据导出到mysql表中。

    \1) 在mysql中创建表

    \2) 导出指令:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop export

    –connect jdbc:mysql://cent71:3306/mybase

    –username root

    –password 123456

    –table stu

    –export-dir /user/hive/warehouse/sqoop.db/stu

    –fields-terminated-by ‘\t’

    bin/sqoop export --connect jdbc:mysql://master:3306/smbms --username root --password 123456 --table smbms_user1 --export-dir /sqoopresult/part-m-00000 --fields-terminated-by ‘,’

    2 Hive中有中文字符,导入到mysql后中文乱码的问题:

    \1) Mysql中修改默认编码字符为utf-8:

    mysql> show variables like ‘%char%’;

    在/etc/my.conf文件中,增加如下配置:

    [mysqld]中增加character-set-server=utf8

    再增加如下配置:

    [mysql]

    default-character-set=utf8

    [client]

    default-character-set=utf8

    重启mysql服务,再进入mysql客户端:

    mysql> show variables like ‘%char%’;

    ±-------------------------------------±---------------------------+

    | Variable_name | Value |

    ±-------------------------------------±---------------------------+

    | character_set_client | utf8 |

    | character_set_connection | utf8 |

    | character_set_database | utf8 |

    | character_set_filesystem | binary |

    | character_set_results | utf8 |

    | character_set_server | utf8 |

    | character_set_system | utf8 |

    | character_sets_dir | /usr/share/mysql/charsets/ |

    | validate_password_special_char_count | 1 |

    ±-------------------------------------±---------------------------+

    9 rows in set (0.01 sec)

    \2) 重新创建库mybase,创建表stu:

    mysql> create table stu(stuno varchar(50),name varchar(50),bjname varchar(50));

    \3) 执行导入的时候要指明使用utf-8:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop export --connect "jdbc:mysql://cent71:3306/mybase

    ?useUnicode=true&characterEncoding=UTF-8" --username root --password 123456 --table stu --export-dir /user/hive/warehouse/sqoop.db/stu --fields-terminated-by ‘\t’

    或者导入的时候使用option-file,在myconf/下创建conf1,内容如下:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# cat myconf/conf1

    export

    –connect

    jdbc:mysql://cent71:3306/mybase

    –username

    root

    –password

    123456

    –table

    stu

    –export-dir

    /user/hive/warehouse/sqoop.db/stu

    –fields-terminated-by

    \t

    然后执行以下指令即可:

    [root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop --options-file myconf/conf1

    \4) 再在mysql中查询发现中文已经可以正常显示了:

    mysql> select * from stu;

    ±---------±-------------±--------------+

    | stuno | name | bjname |

    ±---------±-------------±--------------+

    | 62131222 | 连鑫栋 | 软件2班 |

    | 62131223 | 李庆 | 软件2班 |

    3 从HDFS向mysql导出数据:

    \1) 在HDFS上上传文件/zodiac.txt

    \2) Mysql中创建表zodiac

    \3) 编写导出文件:

    [root@cent71 myconf]# cat conf1

    export

    –connect

    jdbc:mysql://cent71:3306/mybase

    –username

    root

    –password

    123456

    –table

    zodiac

    –export-dir

    /zodiac.txt

    –fields-terminated-by

    ,

    \4) 导出:

    [root@cent71 myconf]# sqoop --options-file conf1

    \5) 查看结果:

    mysql> select * from zodiac;

    ±-------±-----------±-------±-----+

    | name | birth | gender | code |

    ±-------±-----------±-------±-----+

    | lucy | 1984-9-10 | F | 30 |

    | mary | 2001-12-24 | F | 20 |

    | edward | 1981-2-12 | M | 10 |

    | bob | 2004-10-10 | M | 50 |

    | sara | 1974-4-5 | F | 2 |

    ±-------±-----------±-------±-----+

    5 rows in set (0.00 sec)

    \1.

    更多相关内容
  • java连接sqoop源码Sqoop-服务 Sqoop scala 驱动程序,带有 mysql 元存储、光滑的数据库和喷雾。 Sqoop 是一个很好的工具,用于在 HDFS 中导入和导出数据。 大多数 sqoop 作业都是通过脚本编写的,这对于临时作业来说...
  • Apache Sqoop Docker映像 注意:这是master分支-对于特定的Sqoop版本,请始终检查相关分支 用法 运行时,您必须在卷中提供JDBC jar: docker run -v /path/to/jdbc-jars:/jdbc -it dvoros/sqoop:latest MySQL导入...
  • Sqoop同步数据命令

    2021-01-07 06:03:45
    Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以使用Sqoop将数据从MySQL或Oracle等关系数据库管理系统(RDBMS)导入Hadoop分布式文件系统(HDFS),在Hadoop MapReduce中转换数据,然后将数据...
  • Mac安装Sqoop

    2021-01-07 13:41:11
    Sqoop是一款用于Hadoop(Hive)与关系型数据库(mysql等)间进行数据的传递的ETL工具。 二:安装sqoop 1. 安装sqoop brew install sqoop 2. 配置环境变量 Hadoop, Hive, HBase and ZooKeeper must be installed and ...
  • 大数据之sqoop

    2021-06-15 07:27:19
    Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS...
  • sqoop-1.4.7.jar

    2021-01-27 17:11:25
    解决错误:Could not find or load main class org.apache.sqoop.Sqoop。把这个sqoop-1.4.7.jar放到sqoop根目录下的lib目录中,即可。 如果你没有积分,也可以自己去这个地址下载:...
  • Hadoop-Sqoop-Oracle 使用Sqoop在Oracle数据库和HDFS之间进行导入和导出 内容 使用 操作系统-Ubuntu 20.04.1 LTS(VMware) 后端-Java (JDK 1.8), Sqoop(v1.4.7) , Hadoop(v3.3.0) 库-OJDBC(v7),...
  • 写在前面 我在直接下载https://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.7.0.tar.gz 解压使用会出现几个bug,之前也是出现了,然后也没有来...这是因为sqoop缺少java-json.jar包 下载java-json.jar包: http
  • 一、问题发现与分析 ...经过对比:sqoop在转换MySQL的datatime字段类型为hive的string时会出现问题:默认先转为对应时间戳,再转换为北京市区时间,就会使时间多8小时。 解决办法有两个: 1、在sql里将时间字段转换为
  • sqoop-1.4.7.tar.gz.zip

    2021-11-07 08:34:47
    sqoop-1.4.7.tar.gz.zip 提示:先解压再使用,最外层是zip文件
  • 原生的sqoop在迁移联合主键的表至hive时,只能识别一个主键,导致数据覆盖。本资源是把sqoop的源码按照官方推荐的issue解决方案重新编译后的版本。sqoop-1.4.7.bin__hadoop-2.6.0-2020.0508.tar.gz是已完成编译的tar...
  • Sqoop从MySQL导数据到HDFS上,如果报错空指针异常,需要的jar包。正常情况只要安装java-json.jar就可以。如果不行就都安装上。如果你用的是阿里云的EMR,安装完之后还报错的话,需求确认你的jar包中是否含有hive开头...
  • sqoop常用命令.xlsx

    2021-01-15 19:01:55
    sqoop的常用指令操作
  • 大数据技术基础实验报告-sqoop的安装配置与应用
  • sqoop-1.4.7.zip

    2020-04-24 23:34:14
    运行Sqoop报错:找不到或无法加载主类 org.apache.sqoop.sqoopsqoop-1.4.7.jar包放到Sqoop的lib目录下,问题解决。
  • sqoop-1.4.6.jar.zip

    2020-04-20 15:38:46
    sqoop框架开发工具使用的jar sqoop-1.4.6.jar 手动安装到maven <groupId>org.apache.sqoop <artifactId>sqoop <version>1.4.6 </dependency>
  • sqoop 用户手册

    2018-05-31 12:39:59
    Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,...
  • Apache Sqoop(SQL-to-Hadoop) 项目旨在协助 RDBMS 与 Hadoop 之间进行高效的大数据交流。 用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase 和Hive)中;同时也可以把...
  • 今天小编就为大家分享一篇使用shell脚本执行hive、sqoop命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • java连接sqoop源码Apache Sqoop 目录 #Getting Started下载并安装 Sqoop 注意:选择合适的版本,不要使用 sqoop2 因为它不是正式的 GA 并且可能永远不会 $ wget ...
  • 从零开始讲解大数据业务及数据采集和迁移需求,以案例驱动的方式讲解基于Sqoop构建高性能的分布式数据迁移和同步平台。 课程亮点 1,知识体系完备,从小白到大神各阶段读者均能学有所获。 2,生动形象,化繁为简,...
  • 有一段时间没用sqoop了,今天打开进行测试的时候,发现命令行总是出现下面这样的警示信息: Warning: /opt/module/sqoop/bin/…/…/hcatalog does not exist! HCatalog jobs will fail. Please set $HCAT_HOME to ...
  • sqoop框架开发工具使用的jar,目前版本有1.4.6和1.4.7两个jar包
  • Sqoop是一个用于在Hadoop和关系数据库或大型机之间传输数据的工具。您可以使用Sqoop将关系数据库管理系统(RDBMS)(如MySQL或Oracle或大型机)中的数据导入Hadoop分布式文件系统(HDFS),转换Hadoop MapReduce中的...
  • 出现此问题时使用:java.lang.NullPointerException at org.json.JSONObject.(JSONObject.java:144) at org.apache.sqoop.util.SqoopJsonUtil.... at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
  • 编译Atlas用 sqoop-1.4.6.2.3.99.0-195.jar 内含安装jar包以及maven手动安装命令 详情可参考我的博客: https://blog.csdn.net/qq_26502245/article/details/108008070
  • apache-atlas-2.1.0-sqoop-hook.tar.gz--基于cdh6.3.1编译完成

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,162
精华内容 18,064
关键字:

sqoop