sqoop详细导入导出数据步骤

您所在的位置:网站首页 oracle导出数据库对应关系 sqoop详细导入导出数据步骤

sqoop详细导入导出数据步骤

2023-11-12 04:19| 来源: 网络整理| 查看: 265

前面已经给大家讲过sqoop的安装,如果还没有安装的可以再去看看详细安装流程:

sqoop详细安装与环境配置

sqoop的作用前面也说过主要用于做数据迁移,它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库的互相导入。

Sqoop功能 将关系型数据库数据导入HDFS,解决HDFS的数据来源问题,使数据能够方便地进入HDFS。 支持HDFS数据导出到关系型数据库,Hadoop计算出的数据可以方便地写回到数据库中。 支持关系型数据库直接将数据导入到Hive。 Sqoop是批处理类型的任务,不是常驻服务,不需要像WEB服务一样常驻运行,在需要的时候提交任务就可以完成数据的导入导出。 Sqoop是使用命令行进行任务的提交,提供类似于Shell的脚本的Sqopp命令,提交方式很简便。 Sqoop支持各种存储类型,包括行存、列存以及各种数压缩算法。 Sqoop架构

如果是你设计一个数据库数据导入导出工具的话,会怎么实现呢?首先比较简单而且也容易想到的方式是使用JDBC,将数据从数据库中拉取出来然后写入HDFS,这种方法简单易行,但是缺点也很明显,数据量较大时,效率不高。

Sqoop是怎么做的呢,它其实是依赖MapReduce的计算框架,将数据导入并行化,采用分而治之的思想,每个Map只处理一部分数据,然后由Reduce将Map的中间结果聚合起来。

其实并不需要Reduce,只是用Map就可以完成数据的并行导入导出工作了,每个Map使用JDBC将数据从数据库抽取出来,写入到HDFS,就可以完成数据的导入任务。

由于使用了MapReduce并发计算的特性,Sqoop可以显著提高数据导入导出的效率。在实际使用中,Sqoop一般不会称为性能的瓶颈,在磁盘读写和宽带都不是瓶颈的前提下,数据的导入导出效率往往取决于DB的性能。

上面的框架中Sqoop和数据库之间使用的是JDBC,所以逻辑上讲,所有支持JDBC操作的数据库都支持使用Sqoop将数据导入到HDFS中,当然各个数据库之间会存在差异,目前在不改造Sqoop的前提下,Sqoop支持的数据库有:MySQL,Oracle,SqlServer, postgreSQL,DB2等,基本涵盖了所有主流的数据库。

数据导入Hive流程

如果命令指定要新建HIVE Table,Sqoop会先生成HIVE table的定义语句,Hive table的column和数据库的column建立一一映射的关系,然后Sqoop会生成一个rawData语句,rawdata语句会在Hive MateStore中注册元数据,并进行数迁移。

上面的Hive的建表语句和rawdata语句都会被写入到一个script脚本中,最后会sqoop启动.hive命令执行刚刚生成的script脚本,提交Hive任务,完成Hive导出。

数据导入HDFS原理

Sqoop在解析完命令参数后会查找参数指定的分片字段的数据范围,假设用户指定的分片字段为id,通过jdbc接口可以找到id的最大值和最小值,分别是5000和1。 数据范围除以map数量可以得到每个Map传输的数据id范围,假设map数是5个,那么每个map的范围就是5000/5=1000。每个map使用SQL语句进行筛选,筛选方法就是在SQL中添加where条件,比如第一个map的where条件就可以写为id >= 1 and id



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3