1.sqoop的安装

  1.1 与hadoop和hive的集成,修改/opt/cdh/sqoop-1.4.5-cdh5.3.6/conf/sqoop-env.sh 文件

    

  1.2 验证安装是否成功  bin/sqoop version   查看sqoop版本

    

2.sqoop 基本操作

  2.1 查看sqoop可用的命令 bin/sqoop help

    

  2.2 查看某个命令的具体用法 bin/sqoop help 命令

    

  2.3 查看可用的数据库列表

    bin/sqoop list-databases \
      --connect jdbc:mysql://life-hadoop.life.com:3306/ \
      --username root \
      --password root

    

  2.4 将mysql表中的数据导入到hdfs中

    bin/sqoop import \
      --connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
      --username root \
      --password root \
      --table my_user \
      --target-dir /user/yanglin/sqoop/import/my_user \

      --num-mappers 1

    

    注:如果不指定导入的目录--target-dir  会默认导入到用户根目录 /user/yanglin/

      默认导出格式为textfile,字段中间用,隔开

      导出格式可以通过

        --as-avrodatafile

         --as-parquetfile

        --as-sequencefile

        --as-textfile  默认

      同时可以自定只导出指定的列  --columns  id,account

      可以通过sql语句进行导入数据的清洗  --query  'select id ,account from my_user'   其中where 语句中必须包含$CONDITIONS

        bin/sqoop import \
          --connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
          --username root \
          --password root \
          --query 'select id ,account from my_user where $CONDITIONS' \

          --target-dir /user/yanglin/sqoop/import/my_user_query \
          --num-mappers 1 \
          --as-parquetfile

        

      可以指定压缩格式 --compress  和  --compression-codec

        bin/sqoop import \
          --connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
          --username root \
          --password root \
          --query 'select id ,account from my_user where $CONDITIONS' \
          --target-dir /user/yanglin/sqoop/import/my_user_compress \
          --num-mappers 1 \
          --as-parquetfile \
          --compress \
          --compression-codec org.apache.hadoop.io.compress.SnappyCodec

        

      可以指定导入数据的字段间的分割符,默认为,--fields-terminated-by '\t'

        bin/sqoop import \
          --connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
          --username root \
          --password root \
          --table my_user \
          --target-dir /user/yanglin/sqoop/import/my_user_terminated \
          --num-mappers 1 \
          --fields-terminated-by '\t'

        

      可以通过指定 --delete-target-dir 在运行前,如果输出目录存在,则删除

    2.4.2 增量导入

      方法一:使用--query 将指定的输入导入

        bin/sqoop import \
          --connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
          --username root \
          --password root \
          --query 'select * from my_user where $CONDITIONS and id>3 and id<7' \
          --target-dir /user/yanglin/sqoop/import/my_user_query_where \
          --num-mappers 1 \
          --fields-terminated-by '\t'

        

      方法二:使用sqoop自带命令,指定--check-column(依据哪一个列进行增量导入),--incremental(增量的方式为追加),--last-value(最后一条数据的id值)

        bin/sqoop import \
          --connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
          --username root \
          --password root \
          --table my_user \
          --target-dir /user/yanglin/sqoop/import/my_user_table_where \
          --num-mappers 1 \
          --fields-terminated-by '\t' \
          --check-column id \
          --incremental append \
          --last-value 3 \
          --direct

        

    2.4.3 通过指定--direct,我们可以指定通过mysql将数据进行导出,速度更快

  2.5 数据导出到rdms

    bin/sqoop export \
      --connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
      --username root \
      --password root \
      --table my_user \
      --export-dir /user/yanglin/sqoop/export/user \
      --num-mappers 1 \
      --fields-terminated-by '\t' \
      --direct

    

  2.6 将rdmb中的数据导入到hive表中

    bin/sqoop import \
      --connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
      --table my_user \
      --username root \
      --password root \
      --num-mappers 1 \
      --fields-terminated-by '\t' \
      --hive-import \
      --hive-database chd_hive \
      --hive-table user_import

     

3.使用脚本进行sqoop导入和导出

  3.1 编写脚本文件sqoop_import.sql

    #使用文件对sqoop进行导入
    import
    #mysql数据库连接
    --connect
    jdbc:mysql://life-hadoop.life.com:3306/sqoop
    #mysql数据库用户名
    --username
    root
    #mysql数据库密码
    --password
    root
    #mysql数据库要导出的表名
    --table
    my_user
    #导出到hdfs系统中路径
    --target-dir
    /user/yanglin/sqoop/import/my_user_options
    #导出数据中字段的分割符
    --fields-terminated-by
    '\t'

  3.2 运行脚本 --options-file

     bin/sqoop --options-file /opt/data/sqoop_import.sql --num-mappers 1

     

     

        

    

    

    

sqoop的使用的更多相关文章

  1. sqoop:Failed to download file from http://hdp01:8080/resources//oracle-jdbc-driver.jar due to HTTP error: HTTP Error 404: Not Found

    环境:ambari2.3,centos7,sqoop1.4.6 问题描述:通过ambari安装了sqoop,又添加了oracle驱动配置,如下: 保存配置后,重启sqoop报错:http://hdp0 ...

  2. 安装sqoop

    安装sqoop 1.默认已经安装好java+hadoop 2.下载对应hadoop版本的sqoop版本 3.解压安装包 tar zxvf sqoop-1.4.6.bin__hadoop-2.0.4-a ...

  3. Hadoop学习笔记—18.Sqoop框架学习

    一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...

  4. Oozie分布式任务的工作流——Sqoop篇

    Sqoop的使用应该是Oozie里面最常用的了,因为很多BI数据分析都是基于业务数据库来做的,因此需要把mysql或者oracle的数据导入到hdfs中再利用mapreduce或者spark进行ETL ...

  5. [大数据之Sqoop] —— Sqoop初探

    Sqoop是一款用于把关系型数据库中的数据导入到hdfs中或者hive中的工具,当然也支持把数据从hdfs或者hive导入到关系型数据库中. Sqoop也是基于Mapreduce来做的数据导入. 关于 ...

  6. [大数据之Sqoop] —— 什么是Sqoop?

    介绍 sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具.你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs中:也可以把数据从hdfs中导出到关系型数据 ...

  7. Sqoop切分数据的思想概况

    Sqoop通过--split-by指定切分的字段,--m设置mapper的数量.通过这两个参数分解生成m个where子句,进行分段查询.因此sqoop的split可以理解为where子句的切分. 第一 ...

  8. sqoop数据导出导入命令

    1. 将mysql中的数据导入到hive中 sqoop import --connect jdbc:mysql://localhost:3306/sqoop --direct --username r ...

  9. Apache Sqoop - Overview——Sqoop 概述

    Apache Sqoop - Overview Apache Sqoop 概述 使用Hadoop来分析和处理数据需要将数据加载到集群中并且将它和企业生产数据库中的其他数据进行结合处理.从生产系统加载大 ...

  10. sqoop使用中的小问题

    1.数据库连接异常 执行数据导出 sqoop export --connect jdbc:mysql://192.168.208.129:3306/test --username hive --P - ...

随机推荐

  1. .net使用pdfobject.js加载pdf文件

    1.下载pdfobject.js文件 2. <script type="text/javascript" src="<%= Application[" ...

  2. Date.prototype.format

    // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...

  3. lua协程一则报错解决“attempt to yield across metamethod/C-call boundary”

    问题 attempt to yield across metamethod/C-call boundary 需求跟如下帖子中描述一致: http://bbs.chinaunix.net/forum.p ...

  4. SQL Server中Rowcount与@@Rowcount的用法 和set nocount on 也会更新@@Rowcount

    rowcount的用法: rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例, set rowcount 10select * from 表A 这样的查询只会 ...

  5. 在github分支上上传空文件夹

    GIT工具是依靠文件来识别文件夹的,对于空的文件夹是不能识别的.因此如果需要在代码中增加一个空文件夹,同时需要在文件夹中增加一个空文件.gitkeep 当批量增加空文件夹时,可以在GIT库的根目录下输 ...

  6. UML基本介绍

    用例图: 概念:描述用户需求,从用户的角度描述系统的功能,是用户拨通观察到的系统功能的模型图,用例是系统中的一个功能单元. 实现:椭圆表示某个用例:人形符号表示角色. 目的:帮助开发团队以一种可视化的 ...

  7. 使用git

    原文出处: 涂根华的博客 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候 ...

  8. oracle 笔试题

    ORACLE笔试题一.单选题1.在Oracle中,以下不属于集合操作符的是( ). A. UNION B. SUM C. MINUS D. INTERSECT2.在Oracle中,执行下面的语句:SE ...

  9. Window Azure ServiceBus Messaging消息队列技术系列1-基本概念和架构

    前段时间研究了Window Azure ServiceBus Messaging消息队列技术,搞了很多技术研究和代码验证,最近准备总结一下,分享给大家. 首先,Windows Azure提供了两种类型 ...

  10. C#.NET 通用控件数据源绑定类

    using System.Data; using System.Collections; using System.Collections.Generic; using System.Web.UI; ...