Sqoop参数使用大全
最近看了以前写的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 | 给带有双引号或单引号的字段前后加上指定字符 |