请说明使用 Apache Sqoop 将关系型数据库中的数据导入到 HDFS 的具体操作步骤和常用参数配置。
考察说明
考查对 Sqoop 导入数据到 HDFS 的基本流程与关键机制的掌握程度。
回答思路
- 【回答框架 1】Sqoop 是 Apache 提供的工具,用于在关系型数据库与 Hadoop 生态(HDFS、Hive、HBase)之间高效传输批量数据。其导入核心机制是把导入命令翻译为 MapReduce 作业,利用并行度加速数据迁移。
- 【回答框架 2】基本操作是执行 sqoop import 命令,通过 --connect 指定 JDBC 连接串,--username 和 --password 提供数据库认证,--table 指定源表,--target-dir 指定 HDFS 目标目录。默认情况下数据以文本文件存储,字段间以逗号分隔。
- 【回答框架 3】常用参数包括 --split-by 指定切分列,以决定 Map 任务并行切片的依据;--num-mappers 控制并行度;--fields-terminated-by 设置字段分隔符;--where 添加条件过滤;--columns 选择部分列导入。
- 【回答框架 4】执行流程是 Sqoop 首先获取数据库元数据,生成对应的 Java 类,然后创建 MapReduce 作业,每个 Map 任务根据 split-by 的值范围并行读取数据并写入 HDFS,最终完成导入。
- 【回答框架 5】关于主键与切分:若表有主键,默认以主键作为切分列;若无主键或主键分布不均,需用 --split-by 指定合适列,避免数据倾斜或空值导致任务异常。
- 【关键点 1】使用 sqoop import 命令,配合 --connect、--username、--password、--table、--target-dir 等核心参数。
- 【关键点 2】传输基于 MapReduce 作业,通过 --split-by 和 --num-mappers 控制并行度与数据分布。
- 【关键点 3】默认输出为文本文件,逗号分隔,可通过 --fields-terminated-by 等调整格式。