主页 > 新闻资讯 > 大数据开发:如何使用Sqoop进行数据导入

大数据开发:如何使用Sqoop进行数据导入

作者:张老师 浏览次数: 2021-06-02 17:01
在大数据处理的诸多环节当中,数据的引入是前期的重要一环,尤其是很多传统的数据存储,多以关系型数据库为主,而这些数据要导入到分布式存储体系当中,往往需要用到Sqoop。今天的大数据开发学习分享,我们主要来讲讲如何使用Sqoop进行数据导入。

大数据开发:如何使用Sqoop进行数据导入

Sqoop 是连接传统关系型数据库(支持JDBC的Connector)和 Hadoop 生态系统的桥梁。采用批处理的方式,利用MR 来加快数据传输速度,完成数据传输。

Sqoop 是一个客户端工具,它的架构非常简单的,主要由三个部分组成:Sqoop client、HDFS/HBase/Hive、Database 。

如何使用Sqoop将数据导入HDFS

将数据从传统数据库导入HDFS分为两步:

步骤1: Gather Metadata

Sqoop与数据库server通信 ,获取数据库表元数据信息;完成并发数设定,字段类型如何映射,如何转化等任务。

步骤2: Submit Map-Only Job

Sqoop启动Map-Only 的MR作业,并行导入元数据。

全量数据导入

全量导入适合一次性导入做离线分析。

sqoop import \
--connect jdbc:mysql://ip:port/db \
--username root \
--password pass \
--table users \
--target-dir /user/root/ users_all \
--null-string "\\N" \
--null-non-string "\\N" \

重要参数说明:

--query <statement>

导入的查询语句,不能和--table 同时使用。

select * from table where \$CONDITIONS” \

--table <table-name>

导入的源表表名

--target-dir <dir>

导入HDFS的目标路径

--null-string <null-string>

string类型空值的替换符

--null-non-string<null-string> 

非string类型空值的替换符

-m <n>

map 任务数量,默认为4。

--split-by <column-name>

若map任务数>1, 需要指定根据哪一列来实现哈希分片,从而将不同分片的数据分发到不同map 任务上去跑,避免数据倾斜。

增量数据导入

在实际生产环境中,系统可能会定期从与业务相关的关系型数据库向Hadoop导入数据,导入数仓后进行后续离线分析。故我们此时不可能再将所有数据重新导一遍,此时就需要增量数据导入这一模式了。

增量数据导入分两种:1.基于递增列的增量数据导入。2.基于时间列的增量数据导入。

基于递增列的增量数据导入

将递增列值大于阈值的所有数据增量导入Hadoop。采用append 方式,每次运行增量导入到表之前,都要修改--last-value的值,否则出现重复记录。同时也要求源表中ID为递增且不重复。

重要参数说明:

--incremental append  

基于递增列的增量导入

--check-column <col> 

指定递增列,int类型

--last-value <value> 

起始导入的阈值,int类型

用户表中有一个自增列ID,之前已将ID号为0~999的用户数据导入到HDFS,后续只需要只从ID大于999后开始导入即可。

基于时间列的增量数据导入

将时间列值大于阈值的数据增量导入Hadoop。该方式要求原来表中存在time 字段。

重要参数说明:

--incemental lastmodified 

给予时间列的增量导入

--check-column <col>   

时间列,int 类型

--last-value <value>   

起始导入的阈值,如'2020-01-01 10:00:00' 

--merge-key  <col> 

合并列,合并键值相同记录,一般指主键

用户的常住地发生变化,修改用户信息表,update_time 字段也随之改变,Sqoop依然会将相同状态更改后的用户信息导入HDFS。此时HDFS将出现两条同一用户的数据,我们可以指定merge-key参数为user_id,将新的记录与原有记录合并。

关于大数据开发,如何使用Sqoop进行数据导入,以上就为大家做了简单的介绍了。Sqoop作为一个数据导入工具来说,需要结合到具体的场景选择使用。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及试学视频可联系客服获取!
热点排行
推荐文章
立即申请>>