Sqoop知识点总结

Sqoop简介

Sqoop主要用于在Hadoop和关系数据库或大型机之间传输数据,可以使用Sqoop工具将数据从关系数据库管理系统导入(import)到Hadoop分布式文件系统中,或者将Hadoop中的数据转换导出(export)到关系数据库管理系统,其底层利用MapReduce并行计算模型以批处理方式加快了数据传输速度(只有Map阶段,没有Reduce阶段的任务,默认是4个MapTask),并且具有较好的容错性功能。

Sqoop参数

/opt/module/sqoop/bin/sqoop import \

--connect \

--username \

--password \

--target-dir \

--delete-target-dir \

--num-mappers \

--fields-terminated-by   \

--query

Sqoop常见问题

Sqoop导入导出Null存储一致性问题

Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,为了保证数据两端的一致性。

在导出数据时采用--input-null-string和--input-null-non-string两个参数。

导入数据时采用--null-string和--null-non-string。

Sqoop数据导出一致性问题

由于Sqoop将导出过程分解为多个事务,因此失败的导出作业可能会导致将部分数据提交到数据库。

在某些情况下,这可能进一步导致后续作业因插入冲突而失败,而在其他情况下,则可能导致数据重复。

您可以通过--staging-table选项指定暂存表来解决此问题,该选项用作用于暂存导出数据的辅助表。

最后,已分阶段处理的数据将在单个事务中移至目标表。

--clear-staging-table 清理暂存表

Sqoop在导入数据的时候数据倾斜

通过ROWNUM()生成一个严格均匀分布的字段,然后指定为分割字段

split-by:按照自增主键来切分表的工作单元

num-mappers:启动N个map来并行导入数据,默认4个

posted @ 2022-04-25 21:34  1243741754  阅读(184)  评论(0编辑  收藏  举报