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任务来处理每个区块。
收起全文
精华内容
下载资源
问答
  • 欢迎来到Sqoop! 这是Sqoop(SQL到Hadoop)工具。 Sqoop允许在数据库和HDFS之间轻松导入和导出数据集。 更多文件 Sqoop附带其他文档:用户指南和手册页。 两者的asciidoc来源都在src/docs/ 。 运行ant docs以构建...
  • Teradata 的 Sqoop 连接器 随着 Teradata 和 Hadoop 之间集成的发展不断深入,使用以 Hadoop 为中心的操作的需求也在增加。 需要将 TDCH 的一小部分导入和导出功能用于 Sqoop,这在现场使用中变得普遍。 安装 安装...
  • Sqoop同步数据命令

    2021-01-07 06:03:45
    Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以使用Sqoop将数据从MySQL或Oracle等关系数据库管理系统(RDBMS)导入Hadoop分布式文件系统(HDFS),在Hadoop MapReduce中转换数据,然后将数据...
  • 写在前面 我在直接下载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 安装包

    2017-10-26 20:04:29
    Sqoop 是一款开源的工具,主要用于在 Hadoop(Hive)与传统的数据库(mysql、 postgresql...) 间 进 行 数 据 的 传 递 , 可 以 将 一 个 关 系 型 数 据 库 ( 例 如 :MySQL ,Oracle ,Postgres 等)中的数据导进到 ...
  • sqoop安装详解以及sqoop内容介绍使用介绍 集群介绍 sqoop:是一个工具,主要用于导入导出,实现MySQL到Hadoop之间数据的转换 2、导入数据:从结构化数据(Mysql,oracle,db2,)导入到半结构化或非结构化hadoop中...
  • sqoop-1.4.7.jar

    2020-04-20 16:01:09
    sqoop框架开发工具使用的jar sqoop-1.4.7.jar 手动安装到maven <groupId>org.apache.sqoop <artifactId>sqoop <version>1.4.7 </dependency>
  • 大数据之sqoop

    2019-08-13 10:37:35
    Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS...
  • Sqoop从MySQL导数据到HDFS上,如果报错空指针异常,需要的jar包。正常情况只要安装java-json.jar就可以。如果不行就都安装上。如果你用的是阿里云的EMR,安装完之后还报错的话,需求确认你的jar包中是否含有hive开头...
  • sqoop使用指南

    2019-03-11 10:39:11
    sqoop Hadoop 和关系数据库服务器之间传送数据工具,核心功能:导入、迁入。导出、迁出
  • 今天小编就为大家分享一篇使用shell脚本执行hive、sqoop命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 使用Sqoop实现增量导入,并使用Airflow自动化该过程。 1)设定数据 我)在MySQL中创建表 CREATE TABLE `employee_profile` ( `profile_id` VARCHAR(255) NOT NULL, `first_name` VARCHAR(45) NULL, ...
  • 介绍Sqoop,包括Sqoop的导入导出及脚本化运行。第五章介绍了Sqoop命令的公有参数和私有参数.
  • 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版本详解.ppt

    2019-06-02 15:14:43
    本文档介绍了Sqoop1版本和Sqoop2版本的不同及两个版本在集群安装的方式,也包含基础的操作,适合初学者使用
  • 大数据技术基础实验报告-sqoop的安装配置与应用
  • 出现此问题时使用: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)
  • Apache Sqoop(SQL-to-Hadoop) 项目旨在协助 RDBMS 与 Hadoop 之间进行高效的大数据交流。 用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase 和Hive)中;同时也可以把...
  • 2020最详细的sqoop开发手册,包括sqoop架构,部署,开发,脚本,优化和运维等全部步骤的详细说明。
  • apache-atlas-2.1.0-sqoop-hook.tar.gz--基于cdh6.3.1编译完成
  • sqoop框架开发工具使用的jar,目前版本有1.4.6和1.4.7两个jar包
  • 有一段时间没用sqoop了,今天打开进行测试的时候,发现命令行总是出现下面这样的警示信息: Warning: /opt/module/sqoop/bin/…/…/hcatalog does not exist! HCatalog jobs will fail. Please set $HCAT_HOME to ...
  • 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 ...
  • Apache Sqoop Docker映像 注意:这是master分支-对于特定的Sqoop版本,请始终检查相关分支 用法 运行时,您必须在卷中提供JDBC jar: docker run -v /path/to/jdbc-jars:/jdbc -it dvoros/sqoop:latest MySQL导入...
  • java连接sqoop源码Apache Sqoop 目录 #Getting Started下载并安装 Sqoop 注意:选择合适的版本,不要使用 sqoop2 因为它不是正式的 GA 并且可能永远不会 $ wget ...
  • Sqoop

    2018-08-31 16:48:58
    Apache Sqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错。 项目地址: ...

    Apache Sqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错。

    项目地址: http://sqoop.apache.org/

    目前为止,已经演化出了2个版本:sqoop1和sqoop2。

    sqoop1的最新版本是1.4.5,sqoop2的最新版本是1.99.3;1.99.3和1.4.5是不兼容的,并且功能尚未开发完成,还不适合在生产环境部署。

    sqoop支持的数据库:

    Database

    version

    --direct support?

    connect string matches

    HSQLDB

    1.8.0+

    No

    jdbc:hsqldb:*//

    MySQL

    5.0+

    Yes

    jdbc:mysql://

    Oracle

    10.2.0+

    No

    jdbc:oracle:*//

    PostgreSQL

    8.3+

    Yes (import only)

    jdbc:postgresql:/

    guojian@localtest:~/work$ sudo apt-get install sqoop

    guojian@localtest:~/work$ sqoop help

    usage: sqoop COMMAND [ARGS]

    Available commands:

    codegen            Generate code to interact with database records

    create-hive-table  Import a table definition into Hive

    eval               Evaluate a SQL statement and display the results

    export             Export an HDFS directory to a database table

    help               List available commands

    import             Import a table from a database to HDFS

    import-all-tables  Import tables from a database to HDFS

    job                Work with saved jobs

    list-databases     List available databases on a server

    list-tables        List available tables in a database

    merge              Merge results of incremental imports

    metastore          Run a standalone Sqoop metastore

    version            Display version information

    See 'sqoop help COMMAND' for information on a specific command.

    import是将关系数据库迁移到HDFS上

    guojian@localtest:~/work$ sqoop import --connectjdbc:mysql://192.168.81.176/hivemeta2db --username root -password passwd --table sds

    guojian@localtest:~/work$ hadoop fs -ls /user/guojian/sds

    Found 5 items

    -rw-r--r--   3 guojian cug_test          0 2014-09-11 16:04 /user/guojian/sds/_SUCCESS

    -rw-r--r--   3 guojian cug_test        483 2014-09-11 16:03 /user/guojian/sds/part-m-00000.snappy

    -rw-r--r--   3 guojian cug_test        504 2014-09-11 16:04 /user/guojian/sds/part-m-00001.snappy

    -rw-r--r--   3 guojian cug_test       1001 2014-09-11 16:03 /user/guojian/sds/part-m-00002.snappy

    -rw-r--r--   3 guojian cug_test        952 2014-09-11 16:03 /user/guojian/sds/part-m-00003.snappy

    可以通过--m设置并行数据,即map的数据,决定文件的个数。

    默认目录是/user/${user.name}/${tablename},可以通过--target-dir设置hdfs上的目标目录。

    如果想要将整个数据库中的表全部导入到hdfs上,可以使用import-all-tables命令。

    sqoop import-all-tables –connect jdbc:mysql://192.168.81.176/hivemeta2db --username root -password passwd

    如果想要指定所需的列,使用如下:

    sqoop import --connect jdbc:mysql://192.168.81.176/hivemeta2db --username root -password passwd --table sds --columns "SD_ID,CD_ID,LOCATION"

    指定导出文件为SequenceFiles,并且将生成的类文件命名为com.ctrip.sds:

    sqoop import --connect    jdbc:mysql://192.168.81.176/hivemeta2db --username root -password passwd --table sds --class-name com.ctrip.sds --as-sequencefile

    导入文本时可以指定分隔符:

    sqoop import --connect jdbc:mysql://192.168.81.176/hivemeta2db --username root -password passwd --table sds --fields-terminated-by '\t' --lines-terminated-by '\n' --optionally-enclosed-by '\"'

    可以指定过滤条件:

    sqoop import --connect jdbc:mysql://192.168.81.176/hivemeta2db --username root -password passwd --table sds --where "sd_id > 100"

    export是import的反向过程,将hdfs上的数据导入到关系数据库中

    sqoop export --connect jdbc:mysql://192.168.81.176/sqoop --username root -password passwd --table sds --export-dir /user/guojian/sds

    上例中sqoop数据中的sds表需要先把表结构创建出来,否则export操作会直接失败。

    由于sqoop是通过map完成数据的导入,各个map过程是独立的,没有事物的概念,可能会有部分map数据导入失败的情况。为了解决这一问题,sqoop中有一个折中的办法,即是指定中间 staging 表,成功后再由中间表导入到结果表。

    这一功能是通过 --staging-table <staging-table-name> 指定,同时staging表结构也是需要提前创建出来的:

    sqoop export --connect jdbc:mysql://192.168.81.176/sqoop --username root -password passwd --table sds --export-dir /user/guojian/sds --staging-table sds_tmp

    需要说明的是,在使用 --direct , --update-key 或者--call存储过程的选项时,staging中间表是不可用的。

    验证结果:

    (1)数据会首先写到sds_tmp表,导入操作成功后,再由sds_tmp表导入到sds结果表中,同时会清除sds_tmp表。

    (2)如果有map失败,则成功的map会将数据写入tmp表,export任务失败,同时tmp表的数据会被保留。

    (3)如果tmp中已有数据,则此export操作会直接失败,可以使用 --clear-staging-table 指定在执行前清除中间表。

    export选项:

    --direct

    直接使用 mysqlimport 工具导入mysql

    --export-dir <dir>

    需要export的hdfs数据路径

    -m,--num-mappers <n>

    并行export的map个数n

    --table <table-name>

    导出到的目标表

    --call <stored-proc-name>

    调用存储过程

    --update-key <col-name>

    指定需要更新的列名,可以将数据库中已经存在的数据进行更新

    --update-mode <mode>

    更新模式,包括 updateonly (默认)和allowinsert

    前者只允许更新,后者允许新的列数据写入

     

    --input-null-string <null-string>

    The string to be interpreted as null for string columns

    --input-null-non-string <null-string>

    The string to be interpreted as null for non-string columns

    --staging-table <staging-table-name>

    指定中间staging表

    --clear-staging-table

    执行export前将中间staging表数据清除

    --batch

    Use batch mode for underlying statement execution.

    Argument

    Description

    create-hive-table将关系数据库表导入到hive表中

    参数

    说明

    –hive-home <dir>

    Hive的安装目录,可以通过该参数覆盖掉默认的hive目录

    –hive-overwrite

    覆盖掉在hive表中已经存在的数据

    –create-hive-table

    默认是false,如果目标表已经存在了,那么创建任务会失败

    –hive-table

    后面接要创建的hive表

    –table

    指定关系数据库表名

    sqoop create-hive-table --connect jdbc:mysql://192.168.81.176/sqoop --username root -password passwd --table sds --hive-table sds_bak

    默认sds_bak是在default数据库的。

    这一步需要依赖HCatalog,需要先安装HCatalog,否则报如下错误:

    Hive history file=/tmp/guojian/hive_job_log_cfbe2de9-a358-4130-945c-b97c0add649d_1628102887.txt

    FAILED: ParseException line 1:44 mismatched input ')' expecting Identifier near '(' in column specification

    list-databases列出一台server上可用的数据库

    sqoop list-databases --connect jdbc:mysql://192.168.81.176/ --username root -password passwd

    list-tables列出一个数据库中的表

    sqoop list-tables --connect jdbc:mysql://192.168.81.176/sqoop --username root -password passwd

    codegen:将关系数据库表映射为一个java文件、java class类、以及相关的jar包

    sqoop codegen --connect jdbc:mysql://192.168.81.176/sqoop --username root -password passwd --table sds

    Note: /tmp/sqoop-guojian/compile/d58f607b046a061593ba708ec5f3d608/sds.java uses or overrides a deprecated API.

    Note: Recompile with -Xlint:deprecation for details.

    guojian@localtest:~/work$ ll /tmp/sqoop-guojian/compile/d58f607b046a061593ba708ec5f3d608/

    total 48

    drwxrwxr-x  2 guojian guojian  4096  912 14:15 ./

    drwxrwxr-x 11 guojian guojian  4096  912 14:15 ../

    -rw-rw-r--  1 guojian guojian 11978  912 14:15 sds.class

    -rw-rw-r--  1 guojian guojian  4811  9月 12 14:15 sds.jar

    -rw-rw-r--  1 guojian guojian 17525  9月 12 14:15 sds.java

    merge是将两个数据集合并的工具,对于相同的key会覆盖老的值。

    --class-name <class>

    指定merge job使用的类名称

    --jar-file <file>

    合并时引入的jar包,该jar包是通过Codegen工具生成的jar包

    --merge-key <col>

    指定作为merge key的列名

    --new-data <path>

    指定newer数据目录

    --onto <path>

    指定older数据目录

    --target-dir <path>

    指定目标输出目录

    参数

    说明

    sqoop merge --new-data /user/guojian/sds --onto /user/guojian/sqoop --target-dir /user/guojian/sds_new --jar-file sds.jar --class-name sds --merge-key SD_ID

    值得注意的是,--target-dir如果设置为已经存在的目录,sqoop会报错退出。

    eval用户可以很快的使用sql语句对数据库进行操作。这使得用户在执行import操作之前检查sql语句是否正确。

    sqoop eval --connect jdbc:mysql://192.168.81.176/sqoop --username root -password passwd --query "SELECT SD_ID,CD_ID,LOCATION FROM sds LIMIT 10"

    job用来生成sqoop任务。

    --create <job-id>

    创业一个新的sqoop作业.

    --delete <job-id>

    删除一个sqoop job

    --exec <job-id>

    执行一个 --create 保存的作业

    --show <job-id>

    显示一个作业的参数

    --list

    显示所有创建的sqoop作业

    参数

    说明

    例子:

    sqoop job --create myimportjob -- import --connectjdbc:mysql://192.168.81.176/hivemeta2db --username root -password passwd --table TBLS

    guojian@localtest:~/work$ sqoop job --listAvailable jobs:

      myimportjob

    guojian@localtest:~/work$ sqoop job --show myimportjob

    Job: myimportjob

    Tool: import

    Options:----------------------------

    verbose = false

    db.connect.string =     jdbc:mysql://192.168.81.176/hivemeta2db

    codegen.output.delimiters.escape = 0

    codegen.output.delimiters.enclose.required = false

    codegen.input.delimiters.field = 0

    hbase.create.table = false

    db.require.password = true

    hdfs.append.dir = false

    db.table = TBLS

    import.fetch.size = null

    accumulo.create.table = false

    codegen.input.delimiters.escape = 0

    codegen.input.delimiters.enclose.required = false

    db.username = root

    codegen.output.delimiters.record = 10

    import.max.inline.lob.size = 16777216

    hbase.bulk.load.enabled = false

    hcatalog.create.table = false

    db.clear.staging.table = false

    codegen.input.delimiters.record = 0

    enable.compression = false

    hive.overwrite.table = false

    hive.import = false

    codegen.input.delimiters.enclose = 0

    accumulo.batch.size = 10240000

    hive.drop.delims = false

    codegen.output.delimiters.enclose = 0

    hdfs.delete-target.dir = false

    codegen.output.dir = .

    codegen.auto.compile.dir = true

    mapreduce.num.mappers = 4

    accumulo.max.latency = 5000

    import.direct.split.size = 0

    codegen.output.delimiters.field = 44

    export.new.update = UpdateOnly

    incremental.mode = None

    hdfs.file.format = TextFile

    codegen.compile.dir = /tmp/sqoop-guojian/compile/bd9c7f7b651276067b3f7b341b7fa4cb

    direct.import = false

    hive.fail.table.exists = false

    db.batch = false

     

    执行:

    sqoop job -exec myimportjob

    metastore 配置sqoop job的共享元数据信息,这样多个用户定义和执行sqoop job在这一 metastore中。默认存储在~/.sqoop

    启动:sqoop metastore

    关闭:sqoop metastore --shutdown

    metastore文件的存储位置是在 conf/sqoop-site.xml中sqoop.metastore.server.location 配置,指向本地文件。

    metastore可以通过TCP/IP访问,端口号可以通过sqoop.metastore.server.port 配置,默认是16000。

    客户端可以通过 指定 sqoop.metastore.client.autoconnect.url 或使用 --meta-connect ,配置为 jdbc:hsqldb:hsql://<server-name>:<port>/sqoop,例如 jdbc:hsqldb:hsql://metaserver.example.com:16000/sqoop 。

    更多说明见 http://sqoop.apache.org/docs/1.4.5/SqoopUserGuide.html

     

    展开全文
  • sqoop使用详细手则,基于官网文档改写,适合刚入门新手查看
  • sqoop.zip解决报空指针的问题所需要的jar.这个jar包适用于安装在CDH6.2.1版本的sqoop

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,029
精华内容 16,011
关键字:

sqoop