美文网首页
尚硅谷大数据技术之Sqoop

尚硅谷大数据技术之Sqoop

作者: 尚硅谷教育 | 来源:发表于2018-12-17 14:19 被阅读6次

    5.2.5 命令&参数:import
    将关系型数据库中的数据导入到HDFS(包括Hive,HBase)中,如果导入的是Hive,那么当Hive中没有对应表时,则自动创建。

    1. 命令:
      如:导入数据到hive中
      $ bin/sqoop import
      --connect jdbc:mysql://hadoop102:3306/company
      --username root
      --password 000000
      --table staff
      --hive-import

    如:增量导入数据到hive中,mode=append
    append导入:
    $ bin/sqoop import
    --connect jdbc:mysql://hadoop102:3306/company
    --username root
    --password 000000
    --table staff
    --num-mappers 1
    --fields-terminated-by "\t"
    --target-dir /user/hive/warehouse/staff_hive
    --check-column id
    --incremental append
    --last-value 3
    尖叫提示:append不能与--hive-等参数同时使用(Append mode for hive imports is not yet supported. Please remove the parameter --append-mode)

    如:增量导入数据到hdfs中,mode=lastmodified
    先在mysql中建表并插入几条数据:
    mysql> create table company.staff_timestamp(id int(4), name varchar(255), sex varchar(255), last_modified timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
    mysql> insert into company.staff_timestamp (id, name, sex) values(1, 'AAA', 'female');
    mysql> insert into company.staff_timestamp (id, name, sex) values(2, 'BBB', 'female');
    先导入一部分数据:
    bin/sqoop import \ --connect jdbc:mysql://hadoop102:3306/company \ --username root \ --password 000000 \ --table staff_timestamp \ --delete-target-dir \ --m 1 再增量导入一部分数据: mysql> insert into company.staff_timestamp (id, name, sex) values(3, 'CCC', 'female'); bin/sqoop import
    --connect jdbc:mysql://hadoop102:3306/company
    --username root
    --password 000000
    --table staff_timestamp
    --check-column last_modified
    --incremental lastmodified
    --last-value "2017-09-28 22:20:38"
    --m 1
    --append
    尖叫提示:使用lastmodified方式导入数据要指定增量数据是要--append(追加)还是要--merge-key(合并)
    尖叫提示:last-value指定的值是会包含于增量导入的数据中

    1. 参数:
      序号 参数 说明
      1 --append 将数据追加到HDFS中已经存在的DataSet中,如果使用该参数,sqoop会把数据先导入到临时文件目录,再合并。
      2 --as-avrodatafile 将数据导入到一个Avro数据文件中
      3 --as-sequencefile 将数据导入到一个sequence文件中
      4 --as-textfile 将数据导入到一个普通文本文件中
      5 --boundary-query <statement> 边界查询,导入的数据为该参数的值(一条sql语句)所执行的结果区间内的数据。
      6 --columns <col1, col2, col3> 指定要导入的字段
      7 --direct 直接导入模式,使用的是关系数据库自带的导入导出工具,以便加快导入导出过程。
      8 --direct-split-size 在使用上面direct直接导入的基础上,对导入的流按字节分块,即达到该阈值就产生一个新的文件
      9 --inline-lob-limit 设定大对象数据类型的最大值
      10 --m或–num-mappers 启动N个map来并行导入数据,默认4个。
      11 --query或--e <statement> 将查询结果的数据导入,使用时必须伴随参--target-dir,--hive-table,如果查询中有where条件,则条件后必须加上$CONDITIONS关键字
      12 --split-by <column-name> 按照某一列来切分表的工作单元,不能与--autoreset-to-one-mapper连用(请参考官方文档)
      13 --table <table-name> 关系数据库的表名
      14 --target-dir <dir> 指定HDFS路径
      15 --warehouse-dir <dir> 与14参数不能同时使用,导入数据到HDFS时指定的目录
      16 --where 从关系数据库导入数据时的查询条件
      17 --z或--compress 允许压缩
      18 --compression-codec 指定hadoop压缩编码类,默认为gzip(Use Hadoop codec default gzip)
      19 --null-string <null-string> string类型的列如果null,替换为指定字符串
      20 --null-non-string <null-string> 非string类型的列如果null,替换为指定字符串
      21 --check-column <col> 作为增量导入判断的列名
      22 --incremental <mode> mode:append或lastmodified
      23 --last-value <value> 指定某一个值,用于标记增量导入的位置
      5.2.6 命令&参数:export
      从HDFS(包括Hive和HBase)中奖数据导出到关系型数据库中。

    2. 命令:
      如:
      $ bin/sqoop export
      --connect jdbc:mysql://hadoop102:3306/company
      --username root
      --password 000000
      --table staff
      --export-dir /user/company
      --input-fields-terminated-by "\t"
      --num-mappers 1

    3. 参数:
      序号 参数 说明
      1 --direct 利用数据库自带的导入导出工具,以便于提高效率
      2 --export-dir <dir> 存放数据的HDFS的源目录
      3 -m或--num-mappers <n> 启动N个map来并行导入数据,默认4个
      4 --table <table-name> 指定导出到哪个RDBMS中的表
      5 --update-key <col-name> 对某一列的字段进行更新操作
      6 --update-mode <mode> updateonly
      allowinsert(默认)
      7 --input-null-string <null-string> 请参考import该类似参数说明
      8 --input-null-non-string <null-string> 请参考import该类似参数说明
      9 --staging-table <staging-table-name> 创建一张临时表,用于存放所有事务的结果,然后将所有事务结果一次性导入到目标表中,防止错误。
      10 --clear-staging-table 如果第9个参数非空,则可以在导出操作执行前,清空临时事务结果表

    本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源,欢迎大家关注尚硅谷公众号(atguigu)了解更多。

    相关文章

      网友评论

          本文标题:尚硅谷大数据技术之Sqoop

          本文链接:https://www.haomeiwen.com/subject/eooqkqtx.html