活动介绍

sqoop1.x 导入数据

preview
需积分: 0 1 下载量 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 生态系统的高效传输。根据具体需求选择合适的导入策略,可以有效提高数据处理效率并确保数据质量。
身份认证 购VIP最低享 7 折!
30元优惠券
weixin_42754171
  • 粉丝: 15
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜