Sqoop 导入导出参数详解
一、Sqoop 通用参数
1. 连接参数
| 参数 | 说明 |
|---|
--connect <jdbc-uri> | 指定JDBC连接字符串 |
--connection-manager <class> | 指定连接管理器类 |
--driver <class> | 指定JDBC驱动类 |
--username <username> | 数据库用户名 |
--password <password> | 数据库密码 |
--password-file <file-path> | 包含密码的文件路径 |
--password-alias <alias> | 密码别名(从credential provider获取) |
--connection-param-file <file> | 包含连接参数的文件 |
2. 并行控制参数
| 参数 | 说明 |
|---|
--num-mappers <n> | 设置并行任务数(默认为4) |
--split-by <column> | 指定用于分割工作单元的列 |
--boundary-query <query> | 用于分割的边界查询 |
--autoreset-to-one-mapper | 无主键或分割列时自动设置为1个mapper |
3. 输出控制参数
| 参数 | 说明 |
|---|
--enclosed-by <char> | 字段包围字符 |
--escaped-by <char> | 转义字符 |
--fields-terminated-by <char> | 字段分隔符 |
--lines-terminated-by <char> | 行分隔符 |
--optionally-enclosed-by <char> | 可选字段包围字符 |
--mysql-delimiters | 使用MySQL默认分隔符集 |
二、Sqoop 导入(Import)专用参数
1. 表选择参数
| 参数 | 说明 |
|---|
--table <table-name> | 要导入的表名 |
--columns <col,col,col...> | 要导入的列 |
--where <where clause> | WHERE条件子句 |
--query <query> | 自定义查询语句 |
--call <stored-proc> | 调用存储过程 |
2. 导入目标参数
| 参数 | 说明 |
|---|
--target-dir <dir> | HDFS目标目录 |
--warehouse-dir <dir> | 仓库基础目录 |
--append | 追加模式(不覆盖现有数据) |
--delete-target-dir | 删除目标目录如果存在 |
--hive-import | 导入到Hive表 |
--hive-table <table-name> | Hive表名 |
--hive-overwrite | 覆盖Hive表中的数据 |
--hive-partition-key <key> | Hive分区键 |
--hive-partition-value <value> | Hive分区值 |
--hbase-table <table-name> | HBase表名 |
--hbase-row-key <col> | HBase行键列 |
--column-family <family> | HBase列族 |
3. 增量导入参数
| 参数 | 说明 |
|---|
--incremental <mode> | 增量模式(append/lastmodified) |
--check-column <column> | 检查增量变化的列 |
--last-value <value> | 上次导入的最后一个值 |
--merge-key <column> | 合并增量数据的键列 |
4. 性能优化参数
| 参数 | 说明 |
|---|
--direct | 使用直接连接器(如mysql的mysqldump) |
--batch | 使用批处理模式 |
--fetch-size <n> | 每次读取的行数 |
--compress | 启用压缩 |
--compression-codec <codec> | 指定压缩编解码器 |
--outdir <dir> | 生成的代码输出目录 |
三、Sqoop 导出(Export)专用参数
1. 导出控制参数
| 参数 | 说明 |
|---|
--export-dir <dir> | HDFS源数据目录 |
--input-null-string <str> | NULL字符串表示 |
--input-null-non-string <str> | 非字符串NULL表示 |
--staging-table <table> | 暂存表名 |
--clear-staging-table | 清空暂存表 |
--batch | 使用批处理模式 |
--update-key <col> | 更新键列 |
--update-mode <mode> | 更新模式(updateonly/allowinsert) |
2. 输入格式参数
| 参数 | 说明 |
|---|
--input-fields-terminated-by <char> | 输入字段分隔符 |
--input-lines-terminated-by <char> | 输入行分隔符 |
--input-optionally-enclosed-by <char> | 输入可选字段包围符 |
--input-enclosed-by <char> | 输入字段包围符 |
--input-escaped-by <char> | 输入转义字符 |
四、高级参数
1. 验证参数
| 参数 | 说明 |
|---|
--validate | 启用数据验证 |
--validator <class> | 验证器类 |
--validation-threshold <class> | 验证阈值类 |
--validation-failurehandler <class> | 验证失败处理器类 |
2. 其他高级参数
| 参数 | 说明 |
|---|
--map-column-java <mapping> | 列到Java类型的映射 |
--map-column-hive <mapping> | 列到Hive类型的映射 |
--schema <name> | 数据库schema名 |
--relaxed-isolation | 使用读未提交隔离级别 |
--skip-dist-cache | 跳过分布式缓存 |
--class-name <name> | 类名(用于自由格式导入) |
--jar-file <file> | JAR文件(用于自由格式导入) |
五、常用参数组合示例
1. 基本导入示例
sqoop import \
--connect jdbc:mysql://localhost/mydb \
--username user \
--password pass \
--table employees \
--target-dir /data/employees \
--fields-terminated-by ',' \
--num-mappers 8
2. 增量导入示例
sqoop import \
--connect jdbc:oracle:thin:@//dbhost:1521/ORCL \
--username scott \
--password tiger \
--table sales \
--warehouse-dir /data/warehouse \
--incremental lastmodified \
--check-column sale_date \
--last-value "2023-01-01" \
--merge-key sale_id
3. 导出示例
sqoop export \
--connect jdbc:postgresql://pgserver/mydb \
--username pguser \
--password pgpass \
--table customers \
--export-dir /data/customers \
--input-fields-terminated-by '\t' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--update-key cust_id \
--update-mode allowinsert
4. 复杂导入到Hive示例
sqoop import \
--connect jdbc:mysql://mysql-server:3306/salesdb \
--username etluser \
--password-file hdfs:///user/etl/.password \
--query "SELECT * FROM transactions WHERE \$CONDITIONS AND region='APAC'" \
--split-by transaction_id \
--hive-import \
--hive-table apac_transactions \
--hive-partition-key dt \
--hive-partition-value "2023-05" \
--create-hive-table \
--compress \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \
--num-mappers 10
以上参数覆盖了Sqoop最常用的功能选项,实际使用时可以根据具体需求组合这些参数来实现复杂的数据迁移任务。