Sqoop参数使用大全

发布时间 2023-09-04 17:59:40作者: 人不疯狂枉一生

最近看了以前写的Sqoop脚本,就顺手整理一下数据导入导出的相关参数使用方法及解释。

参数 解释
--connect <jdbc-uri> 关系数据库连接地址,比如mysql的 jdbc:mysql://xx.x.35.xx:3306/mytest
--connection-manager <class-name> 连接管理者DriverManager,一般都是用默认的,不用特意设置
--driver <class-name> 驱动类,都是用默认的,不用特意设置
--hadoop-home <dir> 如果指定该参数值,则会覆盖掉sqoop-env.sh的值
--help 帮助文档
-P 从控制台读取输入的密码,在执行命令时再输入密码
--password 输入关系数据库密码
--username 输入关系数据库的账号
--verbose 打印运行的详细信息
--connection-param-file <filename> 指定存储数据库连接参数的属性文件,可不设置,指定默认值
--append 追加数据到已经存在的数据集HDFS,使用直接添加--append即可
--as-avrodatafile 导入数据到avro格式文件
--as-sequencefile 将数据导入到一个sequence文件中
--as-textfile 将数据导入到一个普通文本文件中
--boundary-query <statement> 边界查询,也就是在导入前先通过SQL查询得到一个结果集,boundary--query 'select id,name from test where id=999'
--columns <col,col,col…> 指定要导入的字段
--direct 快速模式,使用数据库自带的导入导出工具,官网介绍这样更快
--direct-split-size <n> direct导入的基础上,对导入的流按字节数分块,可实现把大文件拆分为多个小文件
--inline-lob-limit <n> 设置大对象数据类型的最大值
-m,--num-mappers <n> 设置map个数,不能大于节点个数
-e,--query <statement>

从查询结果中导入数据,该参数使用需指定--target-dir,在查询语句中一定要有where条件且在where条件中需要包含$CONDITIONS,示例:--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \

  --split-by a.id --target-dir /user/foo/joinresults

--split-by <column-name> 设置切分数据的字段,一般为主键
--table <table-name> 关系数据库表名
--target-dir <dir> 指定的hdfs路径
--warehouse-dir <dir> --target-dir不能同时使用,指定数据导入的hdfs目录
--where <where clause> 过滤条件
-z/--compress 设置压缩算法,比如gzip
--compression-codec <c> 压缩编码,默认为gzip
--null-string <null-string> 不指定null字符串会被使用
--null-non-string <null-string> 不指定null字符串会被使用
--map-column-java <mapping> 重写SQL到java类型的映射,--map-column-java id=String,value=Integer
--map-column-hive 重写Hive到java类型的映射
--check-column (col) 用来判断增量导入的字段
--incremental (mode) append追加模式和lastmodified最后修改时间两种模式,比如指定大于last-value的值
--last-value (value) 上次导入的最大值
--enclosed-by 给字段值前加上指定的字符
--escaped-by <char> 对字段中的双引号加转义符
--fields-terminated-by <char> 设定每个字段是以什么符号作为结束,默认为逗号
--lines-terminated-by <char> 设定每行记录之间的分隔符,默认是\n
--mysql-delimiters Mysql默认的分隔符设置,字段之间以逗号分隔,行之间以\n分隔,默认转义符是\
--optionally-enclosed-by <char> 给带有双引号或单引号的字段值前后加上指定字符
--input-enclosed-by <char> 对字段值前后加上指定字符
--input-escaped-by <char> 对含有转移符的字段做转义处理
--input-fields-terminated-by <char> 字段之间的分隔符
--input-lines-terminated-by <char> 行之间的分隔符
--input-optionally-enclosed-by <char> 给带有双引号或单引号的字段前后加上指定字符
--hive-delims-replacement <arg> 用自定义的字符串替换掉数据中的\r\n等
--hive-drop-import-delims 在导入数据到hive时,去掉数据中的\r\n等字符
--hive-partition-key 分区字段,默认为string
--hive-partition-value 指定分区字段的值
--hive-home hive安装目录,该参数覆盖之前默认配置的目录
--hive-overwrite 覆盖Hive中存在的数据
--create-hive-table 默认为false,如果目标表存在,创建表会失败
--hive-table hive表名,默认为mysql的表名
--table 指定关系数据库的表名
--hbase-create-table 创建Hbase表
--hbase-row-key 指定字段作为rowkey,复合键用逗号隔开
--hbase-table 指定hbase表名
--column-family 设置hbase的列族
--bindir 指定生成的java文件和jar包的输出路径
--class-name 设置生成的java文件的名称
--jar-file Codegen工具置为不可用,使用指定的jar包
--outdir 生成的java文件存放路径
--package-name 报名,比如com.test会生成com和test两级目录
--update-key 更新的列名称,多个用逗号隔开
--update-mode 指定更新策略,包括:updateonly(默认)、allowinsert
--staging-table 在数据导出到数据库之前,数据临时存放的表名称
--clear-staging-table 清除工作区中临时存放的数据
--batch 使用批量模式导出
--input-optionally-enclosed-by 给带有双引号或单引号的字段前后加上指定字符