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. 在shell下,用命令将U盘挂载到ubuntu上,并将文件copy到U盘里面

    首先将鼠标定位到ubuntu上,然后插上U盘,这时候先用指令: fidsk -l 查看一下U盘,(这是应该有一个盘符了) 如果没有的话,就尽享下面的步骤: 首先使用命令查看是那个分区,在U盘插入前后, ...

  2. css初始化样式代码

    为什么要初始化CSS? CSS初始化是指重设浏览器的样式.不同的浏览器默认的样式可能不尽相同,所以开发时的第一件事可能就是如何把它们统一.如果没对CSS初始化往往会出现浏览器之间的页面差异.每次新开发 ...

  3. 【搬运】systemctl 命令完全指南

    Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器. Systemd是一个系统管理守护进程.工具和库的集合,用于取代System V初始进程.Systemd的功能是 ...

  4. TensorFlow安装(Ubuntu 16.04)

    原文链接 github not support on this platform pip安装: # Ubuntu/Linux 64-bit $ sudo apt-get install python- ...

  5. ubuntu启动tomcat出错解决方案

    从终端进入tomcat的bin目录,然后执行startup.sh,出现以下异常: Cannot find ./catalina.sh The file is absent or does not ha ...

  6. 在Sublime中编辑批处理并运行

    在Sublime->Tool->Build System -> New Build System 复制如下代码名保存为 CMD.sublime-build { "cmd&q ...

  7. 总结ThinkPHP使用技巧经验分享(二)

    循环输出volist 还有别名 iterate 模版赋值:$User = D('User')$list = $User->findAll()$this->assign('list',$li ...

  8. XPath 语法

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. XML 实例文档 我们将在下面的例子中使用这个 XML 文档. & ...

  9. VMware 12 CentOS Minimal 安装VMwareTools 找不到头文件kernelheaders

    输入命令: yum install kernel-headers 安装vmware-tools时提示需要kernel headers 输入命令: yum install kernel-devel

  10. 我的SpringMVC配置

    记住所有导的包都在org.springframework.web.servlet.mvc.annotation.下而不是 org.springframework.web.protlet.mvc.ann ...