尚硅谷大数据技术之Sqoop第5章 Sqoop一些常用命令及参数

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指定的值是会包含于增量导入的数据中

2) 参数:

序号

参数

说明

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>

指定某一个值,用于标记增量导入的位置


上一篇:
下一篇:
关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园综合楼6层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)