sqoop1.x 导入数据
需积分: 0 44 浏览量
更新于2021-01-11
收藏 2KB MD 举报
### Sqoop 1.x 数据导入详解
#### 一、Sqoop 概述
Sqoop 是一款开源工具,用于高效地在 Hadoop 和关系型数据库之间传输数据。它通过 JDBC 连接到关系型数据库,并利用 MapReduce 作业并行化数据传输过程。本文将详细介绍 Sqoop 1.x 版本中的数据导入操作,包括全量导入、增量导入以及更新和变更数据处理。
#### 二、Sqoop 1.x 导入配置与脚本实现
##### 1. 基本配置命令解析
在给定的部分内容中,`import_data` 函数用于配置 Sqoop 导入数据的基本命令,主要包括以下几个方面:
- **连接配置**:通过 `--connect jdbc:mysql://hadoop102:3306/gmall` 配置连接到 MySQL 数据库 `gmall`。
- **认证信息**:使用 `--username root --password 123456` 指定用户名和密码。
- **目标路径**:`--target-dir /origin_data/gmall/db/$1/$do_date` 设置导入数据的目标 HDFS 路径。
- **删除目标目录**:`--delete-target-dir` 表示在导入前删除目标目录。
- **SQL 查询**:`--query "$2 and $CONDITIONS"` 定义了 SQL 查询语句,其中 `$2` 代表具体的查询条件。
- **Map 数量**:`--num-mappers 1` 设置映射器数量。
- **字段分隔符**:`--fields-terminated-by '\t'` 指定字段之间的分隔符。
- **压缩设置**:`--compress --compression-codec lzo` 开启压缩功能,并选择 LZO 作为压缩编码。
- **NULL 值处理**:`--null-string '\\N' --null-non-string '\\N'` 指定 NULL 字符串和非字符串的表示方式。
- **LZO 压缩索引**:`hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /origin_data/gmall/db/$1/$do_date` 创建 LZO 压缩文件的索引。
##### 2. 参数解释
- **$1**:表示导入到 HDFS 的目录表名称,最终会被加载到 Hive 中。
- **$2**:代表 SQL 查询语句,根据实际需求(如是否包含时间列)进行调整。
##### 3. 时间列处理
根据时间列的不同情况,可采取以下几种导入策略:
- **全量导入**:使用 `where 1=1;` 来实现全量导入所有数据。
- **增量导入**:当数据表包含时间列时,可通过 `where '$do_date' = 'date_format(create_time, '%Y-%m-%d')'` 实现基于特定日期的数据增量导入。
- **更新及变更数据处理**:类似于增量导入,但可能需要根据实际情况调整时间条件,例如使用不同的日期范围。
#### 三、特殊场景处理
##### 1. CDH 平台与 Hue 导入
在 CDH 平台上,可以使用 Hue 界面进行 Sqoop 操作。需要注意的是,由于界面限制,无法直接使用换行符 `/` 进行多行命令输入,因此需要确保命令能够一次性完整输入。
##### 2. 密码安全性考虑
为了保护密码安全,可以创建一个 `.password` 文件来存储密码,并使用 `echo -n "secret" > .password` 命令将其写入文件中。
##### 3. 不包含时间列的情况
对于不包含时间列的数据表,可以通过添加以下参数来进行增量或全量导入:
- **增量导入**:
- 基于自增列:使用 `--incremental append --check-column order_id --last-value 521` 进行增量导入,其中 `521` 为上次导入的最后值。
- 基于时间列:使用 `--incremental lastmodified --check-column order_id --last-value '时间'` 进行增量导入,时间格式应与数据表中的时间字段一致。
- **全量导入**:在不包含时间列的情况下,可以直接进行全量导入。
通过 Sqoop 1.x 可以实现数据从关系型数据库到 Hadoop 生态系统的高效传输。根据具体需求选择合适的导入策略,可以有效提高数据处理效率并确保数据质量。

weixin_42754171
- 粉丝: 15
最新资源
- 5种ceemdan组合时间序列预测模型Python代码(包括ceemdan-lstm、ceemdan-cnn-lstm等)
- 江苏移动通信有限责任公司员工绩效考核实施细则精.doc
- 最新国家开放大学电大《优秀广告作品评析答案》网络核心课形考网考作业.docx
- 工程项目管理计划书.doc
- 基于PLC双轴位置控制.docx
- 基于复矢量PI控制器的模型参考自适应三相永磁同步电机高速低载波比无速度传感器控制仿真研究 - MATLAB 宝典
- 第8章-网络营销的策略组合.ppt
- (源码)基于NodeMCU的可视化通知提醒系统.zip
- 系统集成测试(SIT)报告.docx
- 基于MATLAB的GMSK系统的设计仿真.doc
- 离心风机辐射噪声仿真分析:从结构模态到声源辐射噪声的全流程解析 · 辐射噪声 深度版
- 专题讲座资料(2021-2022年)大工秋Java程序设计在线作业.docx
- (源码)基于Arduino的EDeliveryRobot.zip
- Comsol光子晶体仿真技术:拓扑荷、偏振态、三维能带及Q因子计算
- 基于非支配排序的多目标鱼鹰优化算法求解柔性作业车间调度问题的MATLAB实现
- (源码)基于多种编程语言和框架的物联网服务器与客户端.zip