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

     

     

        

    

    

    

posted on 2016-09-10 11:34  YL10000  阅读(422)  评论(0编辑  收藏  举报