sqoop跑数模板保存

本文介绍了如何使用Sqoop通过Oracle连接,将数据从V45HRXT.T_D_AC_TRADE_ZYW表导出到Hive仓库,包括参数设置、表选择和文件格式定义等关键步骤。
kinit -kt /var/lib/hue/hue.keytab hue 
sqoop import \
-D mapred.job.queue.name=root.etl.ld \
-D org.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:oracle:thin:@$1:$2:$3 \
--username $4 \
--password $5 \
--query "SELECT 
            C_IDEN,
            C_IDEN_RELA,
            C_SEC_CODE,
            C_SEC_CODE_TAG,
            N_TD_AMOUNT,
            C_TD_TYPE,
            D_UPDATE_INFO
            FROM V45HRXT.T_D_AC_TRADE_ZYW
            WHERE \$CONDITIONS" \
--target-dir /user/hive/warehouse/ld.db/fa45_t_d_ac_trade_zyw \
--split-by C_IDEN \
--fields-terminated-by '\001' \
--delete-target-dir \
--hive-drop-import-delims \
--mapreduce-job-name sqoop_fa45_t_d_ac_trade_zyw \
--num-mappers 1 \
--null-string '\\N' \
--null-non-string '\\N' \
--as-textfile


<think> 嗯,用户想了解Sqoop据抽取的方法、流程和注意事项。从对话历史看,用户之前没有直接问过Sqoop相关问题,但系统提供了四个相关引用文档,需要重点参考这些内容。 用户可能正在搭建据仓库或需要做异构据库同步,属于中高级开发者。ta明确要求方法、流程和注意事项三部分,说明需要实操指导而非概念科普。 梳理引用内容的关键点: 引用[1][3]提到Sqoop核心功能是在关系据库和Hadoop生态之间传输据,主要支持全量和增量两种模式。引用[4]详细展示了全量导入的完整命令及参说明,特别是--query条件抽取、-m控制并发度这些实用技巧。引用[2]则提醒了项目现状——虽然Sqoop在老旧系统常用,但新项目建议考虑NiFi等替代方案。 准备这样组织回答: 方法部分要区分全量和增量两种模式,引用[4]的代码示例很实用,但需简化避免冗余。流程部分从配置驱动开始到据校验结束,结合引用[3]的架构图说明MapReduce任务调度机制。注意事项要强调引用[2]提到的归档状态风险,以及引用[4]遇到的空值处理等典型问题。 特别要注意用户要求"尽可能多参考上次回答",但历史记录显示这是首次讨论Sqoop,所以会重点结合所有引用内容而非依赖过往对话。中文表述需保持专业但避免术语堆砌,学表达式如一致性校验公式要用$$独立成段。 </think> 以下是 Sqoop 进行据抽取的方法、核心流程及注意事项,综合参考多篇技术文档整理: --- ### **一、据抽取方法** 1. **全量导入(Full Import)** - 适用场景:首次导入或小规模表 - 语法示例: ```bash sqoop import \ --connect jdbc:mysql://host:port/db \ --username user --password pass \ --table source_table \ --target-dir /hdfs/path \ --delete-target-dir \ # 覆盖目标目录 -m 4 # 并发任务 ``` 2. **增量导入(Incremental Import)** - **追加模式(Append)**:基于自增主键(如 `id`) ```bash sqoop import \ --incremental append \ --check-column id \ # 增量字段 --last-value 1000 \ # 上次导入的最大值 ...其他参 ``` - **日期模式(LastModified)**:基于时间戳字段 ```bash sqoop import \ --incremental lastmodified \ --check-column update_time \ --last-value "2023-10-01 00:00:00" \ --merge-key id # 合并重复记录 ``` 3. **条件抽取(Query Import)** 使用自定义 SQL 筛选据: ```bash sqoop import \ --query 'SELECT * FROM table WHERE $CONDITIONS' \ --split-by id \ # 切片字段(必须) ...其他参 ``` --- ### **二、核心流程** 1. **配置驱动** - 将据库驱动(如 `mysql-connector-java.jar`)放入 `$SQOOP_HOME/lib`。 2. **定义连接参** - JDBC URL、认证信息、目标存储路径(HDFS/Hive/HBase)。 3. **选择导入模式** - 全量/增量/条件查询,指定并发度(`-m`)和切片字段(`--split-by`)。 4. **执行 MapReduce 任务** - Sqoop 将任务分解为 Map 任务并行拉取据,默认每个 Map 处理一个据分片。 5. **据格式转换与写入** - 自动转换为 HDFS 文件(如文本、Avro)或直接导入 Hive/HBase。 6. **校验与日志分析** - 检查作业日志中的计器(如 `Bytes Written`)验证据完整性。 --- ### **三、关键注意事项** 1. **并发控制** - **切片字段必选**:若 `-m >1` 必须指定 `--split-by`(如主键或索引列),避免据倾斜[^4]。 - **事务表风险**:高并发读取可能阻塞源据库,建议在低峰期操作。 2. **空值处理** - 使用 `--null-string '\\N' --null-non-string '\\N'` 统一替换 NULL 值,避免 Hive 解析错误[^4]。 3. **特殊字符转义** - 添加 `--hive-drop-import-delims` 删除字段中的 `\n`、`\r` 等分隔符,防止 Hive 行错位[^4]。 4. **增量导入限制** - LastModified 模式需配合 `--merge-key` 合并更新记录,否则生成重复文件。 5. **替代方案评估** - Sqoop 已归档至 Apache Attic,新项目建议使用 **Flink CDC**(流式同步)、**DataX**(多源支持)或 **NiFi**(可视化流)[^2]。 6. **性能优化** - **压缩传输**:添加 `--compression-codec lzo` 减少网络开销。 - **批量提交**:调整 `--batch` 参启用 JDBC 批量拉取。 --- ### **四、典型问题解决方案** - **问题:`--query` 条件导入失败** 原因:缺少 `$CONDITIONS` 占位符或 `--split-by`。 修复:确保 SQL 中包含 `WHERE $CONDITIONS` 并指定切片字段[^4]。 - **问题:Hive 表字段错位** 原因:源据含换行符。 修复:启用 `--hive-drop-import-delims` 或自定义分隔符 `--fields-terminated-by '\t'`[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值