sqoop导出
Sqoop 导出:从 HDFS 推回 MySQL,全量覆盖、增量更新,两种策略怎么选
Sqoop 导出,就是把 HDFS 上的数据写回关系型数据库。
HDFS(分析结果) → Sqoop Export → MySQL(业务系统查询)
什么时候需要导出?
- Hive 算完报表,要推回 MySQL 供业务系统查询
- 数据清洗后的结果,要写回业务库
- 跨系统数据同步
导出前准备:目标表要先建好
Sqoop 导出不会自动建表,目标表必须在 MySQL 里提前建好。
CREATE TABLE staff (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
sex TINYINT
);
关键: 表的字段数、顺序、类型必须跟 HDFS 数据对得上。对不上就报错。
基础导出:从 HDFS 到 MySQL
sqoop export \
--connect jdbc:mysql://localhost:3306/company \
--username root \
--password 123456 \
--table staff \
--export-dir /user/hive/warehouse/staff_hive \
--input-fields-terminated-by "\t" \
--num-mappers 1 \
--batch
关键参数:
| 参数 | 说明 |
|---|---|
--export-dir |
HDFS 数据目录(Hive 表对应的目录) |
--table |
MySQL 目标表 |
--input-fields-terminated-by |
HDFS 文件的分隔符,必须跟数据一致 |
--num-mappers |
并行度,默认 4,根据数据库负载调整 |
--batch |
批量提交,提升效率 |