4.2.5 命令&参数:import
将关系型数据库中的数据导入到HDFS(包括Hive,HBase)中,如果导入的是Hive,那么当Hive中没有对应表时,则自动创建。
导入数据到hive中
sqoop import \
--connect jdbc:mysql://hadoop201:3306/company \
--username root \
--password aaa \
--table staff \
--hive-import
如:增量导入数据到hive中,mode=append
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
如:增量导入数据到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 | --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> |
指定某一个值,用于标记增量导入的位置 |