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> |
指定某一个值,用于标记增量导入的位置 |
想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷大数据培训,尚硅谷除了这些技术文章外还有免费的高质量大数据培训课程视频供广大学员下载学习
上一篇: Java培训学习条件查询之等号操作符
下一篇: 大数据培训学习命令&参数-export