Sqoop 导入导出参数总结

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最常用的功能选项,实际使用时可以根据具体需求组合这些参数来实现复杂的数据迁移任务。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值