Sqoop导入导出原理

2 篇文章 0 订阅
1 篇文章 0 订阅

一、Sqoop导入原理

从下面的的演示例子中,我们大致能得出一个结论,sqoop 工具是通过 MapReduce 进行导入 作业的。总体来说,是把关系型数据库中的某张表的一行行记录都写入到 hdfs
在这里插入图片描述
上面这张图大致解释了 sqoop 在进行数据导入工作的大致流程,下面我们用文字来详细描述 一下:

1、第一步,Sqoop 会通过 JDBC 来获取所需要的数据库元数据,例如,导入表的列名,数据 类型等。

2、第二步,这些数据库的数据类型(varchar, number 等)会被映射成 Java 的数据类型(String, int 等),根据这些信息,Sqoop 会生成一个与表名同名的类用来完成序列化工作,保存表中的每一行记录。

3、第三步,Sqoop 启动 MapReducer 作业

4、第四步,启动的作业在 input 的过程中,会通过 JDBC 读取数据表中的内容,这时,会使 用 Sqoop 生成的类进行反序列化操作

5、第五步,最后将这些记录写到 HDFS 中,在写入到 HDFS 的过程中,同样会使用 Sqoop 生 成的类进行反序列化

二、Sqoop 导出原理

Sqoop 进行数据导出,总体也是基于 mapreduce 任务。

在这里插入图片描述
详细文字描述:

1、 第一步,sqoop 依然会通过 JDBC 访问关系型数据库,得到需要导出数据的元数据信息

2、 第二步,根据获取到的元数据的信息,sqoop 生成一个 Java 类,用来进行数据的传输载 体。该类必须实现序列化和反序列化

3、 第三步,启动 mapreduce 作业

4、 第四步,sqoop 利用生成的这个 java 类,并行的从 hdfs 中读取数据

5、 第五步,每个 map 作业都会根据读取到的导出表的元数据信息和读取到的数据,生成一 批 insert 语句,然后多个 map 作业会并行的向数据库 mysql 中插入数据

所以,数据是从 hdfs 中并行的进行读取,也是并行的进入写入,那并行的读取是依赖 hdfs 的性能,而并行的写入到 mysql 中,那就要依赖于 mysql 的写入性能。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值