一种基于Sqoop程序的数据处理方法及装置与流程

文档序号:30947386发布日期:2022-07-30 05:51阅读:180来源:国知局
一种基于Sqoop程序的数据处理方法及装置与流程
一种基于sqoop程序的数据处理方法及装置
技术领域
1.本技术涉及数据处理领域,尤其涉及一种基于sqoop程序的数据处理方法及装置。


背景技术:

2.sqoop,是一种在hadoop大数据技术与关系型数据库之间传输数据的工具。sqoop启用多个map任务将数据从关系型数据库管理系统(rdbms)导入hadoop分布式文件系统(hdfs),或者从hadoop分布式文件系统导出数据到关系型数据库。
3.由于hadoop与关系型数据库之间传递的数据量大,为缩短数据流转时间,需要提升sqoop的数据流传效率。在现有技术中,通常在使用sqoop进行数据抽取时,对map任务并发数设置为某一固定值,数据抽取效率受到很大限制。因此,如何有效提升hadoop分布式文件系统和关系型数据库之间数据流传效率是一项亟待解决的问题。


技术实现要素:

4.有鉴于此,本技术提供了一种基于sqoop程序的数据处理方法及装置,用以实现对map任务并发数进行调优,缩短了sqoop程序抽取数据的时间,从而提升了sqoop程序的抽取数据的效率。
5.其技术方案如下:
6.第一方面,本技术提供了一种基于sqoop程序的数据处理方法,包括:
7.获取源数据表的参数以及系统参数;其中,所述源数据表的参数包括:源数据表记录数、源数据表字段数;所述系统参数用于指示调用所述sqoop程序的系统能力;
8.根据所述源数据表的参数和所述系统参数,确定抽取所述源数据表时需要配置的map任务并发数;
9.根据所述map任务并发数确定用于抽取所述源数据表的map任务,通过所述map任务以并发的方式将所述源数据表中的数据抽取至目标数据表中。
10.优选地,所述系统参数,包括:yarn集群cpu内核总数、sqoop程序的并行执行数、yarn集群节点总数。
11.优选地,所述根据所述源数据表的参数和所述系统参数,确定抽取所述源数据表时需要配置的map任务并发数,包括:
12.通过如下公式,计算得到抽取所述源数据表时需要配置的map任务并发数:
[0013][0014]
其中,符号表示向下取整数,a为源数据表记录数,b为源数据表字段数,x1为单个map任务的数据处理能力,c为yarn集群cpu内核总数,x2为yarn集群运行的组件的并行度,d为sqoop程序的并行执行数,e为yarn集群节点总数,f为map任务并发数。
[0015]
优选地,所述根据所述map任务并发数确定用于抽取所述源数据表的map任务,包括:
[0016]
将所述map任务并发数输入至所述sqoop程序的参数配置中;
[0017]
所述sqoop程序通过所述参数配置确定用于抽取所述源数据表的map任务。
[0018]
第二方面,本技术提供了一种基于sqoop程序的数据处理装置,包括:
[0019]
所述通过所述map任务以并发的方式将所述源数据表中的数据抽取至目标数据表中之前,所述方法还包括:
[0020]
将所述map任务并发数输入至所述sqoop程序的参数配置中。
[0021]
优选地,所述系统参数,包括:yarn集群cpu内核总数、sqoop程序的并行执行数、yarn集群节点总数。
[0022]
优选地,所述map任务并发数计算模块,具体用于通过如下公式,计算得到抽取所述源数据表时需要配置的map任务并发数:
[0023][0024]
其中,符号表示向下取整数,a为源数据表记录数,b为源数据表字段数,x1为单个map任务的数据处理能力,c为yarn集群cpu内核总数,x2为yarn集群运行的组件的并行度,d为sqoop程序的并行执行数,e为yarn集群节点总数。
[0025]
优选地,所述sqoop数据抽取模块,具体用于将所述map任务并发数输入至所述sqoop程序的参数配置中;所述sqoop程序通过所述参数配置确定用于抽取所述源数据表的map任务。
[0026]
第三方面,本技术提供了一种电子设备,包括:
[0027]
存储器,用于存储一个或多个程序;
[0028]
处理器;当所述一个或多个程序被所述处理器执行时,实现以上任意一项所述方法。
[0029]
第四方面,本技术提供了一种存储介质,所述存储介质上存储有程序,所述程序被处理器执行时实现以上任意一项所述方法。
[0030]
上述技术方案具有如下有益效果:
[0031]
本技术实施例提供的一种基于sqoop程序的数据处理方法及装置,所述方法包括:获取源数据表的参数以及系统参数;其中,所述源数据表的参数包括:源数据表记录数、源数据表字段数;所述系统参数用于指示调用所述sqoop程序的系统能力;根据所述源数据表的参数和所述系统参数,确定抽取所述源数据表时需要配置的map任务并发数;根据所述map任务并发数确定用于抽取所述源数据表的map任务,通过所述map任务以并发的方式将所述源数据表中的数据抽取至目标数据表中。
[0032]
可见,本技术实施例中通过对map任务并发数进行调优,缩短了sqoop程序抽取数据的时间,从而提升了sqoop程序的抽取数据的效率。
附图说明
[0033]
为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0034]
图1为本发明实施例提供的一种基于sqoop程序的数据处理方法的流程图;
[0035]
图2为本发明实施例提供的sqoop程序数据抽取语句示例示意图;
[0036]
图3为本发明实施例提供的一种基于sqoop程序的数据处理装置的结构示意图。
具体实施方式
[0037]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038]
首先,申请人对本技术实施例中的sqoop程序和hadoop分布式文件系统进行描述。
[0039]
hadoop:hadoop是一个由apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的性能进行高速运算和存储。
[0040]
hive(数据仓库工具):hive是基于hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop中的大规模数据的机制。
[0041]
hdfs(分布式文件系统):hadoop分布式文件系统(hdfs)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(distributed file system)。
[0042]
sqoop:是一种在hadoop大数据技术与关系型数据库之间传输数据的工具,可以将一个关系型数据库中的数据导进到hadoop的hdfs中,也可以将hdfs的数据导进到关系型数据库中。
[0043]
在现有技术中,对于拟抽取的数据表,map任务并发数均设置为同一静态值,并不考虑该数据表的记录数和字段数,例如,将map任务并发数固定设置为12,小型数据表进行数据抽取时,数据抽取并未有明显缩短,大型数据表进行数据抽取时,资源相对较长,因此数据抽取时间明显变长,hadoop资源整体利用率不高,即在现有技术中,通常在使用sqoop进行数据抽取时,对map任务并发数设置为某一固定值,数据抽取效率受到很大限制,而且,在实际应用中,map任务并发数并不是设置的越大越好,这是因为map任务的启动和销毁也会消耗资源,从而对hadoop本身也会造成压力。
[0044]
为了克服上述技术问题,本技术实施例提供了一种基于sqoop程序的数据处理方法,请参阅图1,为本技术实施例提供的一种基于sqoop程序的数据处理方法的流程图,该方法可以包括:
[0045]
步骤s101:获取源数据表的参数以及系统参数;其中,所述源数据表的参数包括:源数据表记录数、源数据表字段数;所述系统参数用于指示调用所述sqoop程序的系统能力。
[0046]
本技术实施例中,由sqoop程序获取源数据表的参数以及系统参数;其中,源数据表的参数可以包括:源数据表记录数、源数据表字段数;系统参数用于指示调用所述sqoop程序的系统能力。
[0047]
需要说明的是,本技术实施例中源数据表可以来自关系型数据库,也可以来自hadoop的hdfs。
[0048]
作为一种优选的实施方式,所述系统参数可以包括:yarn集群cpu内核总数、sqoop
程序的并行执行数、yarn集群节点总数。
[0049]
需要说明的是,sqoop程序的并行执行数与关系型数据库所在的服务器的cpu内核数保持一致。例如,在8c 16g的服务器组成的关系型数据库中,sqoop程序的并行执行数设定为8;在16c 32g的服务器组成的关系型数据库中,sqoop程序的并行执行数设定为16。
[0050]
步骤s102:根据所述源数据表的参数和所述系统参数,确定抽取所述源数据表时需要配置的map任务并发数。
[0051]
本技术实施例中,根据步骤s101获取的源数据表的参数以及系统参数,从而确定出抽取源数据表时所需要配置的map任务并发数。
[0052]
作为一种优选的实施方式,根据所述源数据表的参数和所述系统参数,确定抽取所述源数据表时需要配置的map任务并发数,可以包括:通过如下公式,计算得到抽取所述源数据表时需要配置的map任务并发数:
[0053]
(1)
[0054]
(2)其中,符号表示向下取整数,a为源数据表记录数,b为源数据表字段数,x1为单个map任务的数据处理能力,c为yarn集群cpu内核总数,x2为yarn集群运行的组件的并行度,d为sqoop程序的并行执行数,e为yarn集群节点总数,f为map任务并发数。
[0055]
本技术实施例中,首先根据第一个公式计算得出map任务并发数初始值,然后根据第二个公式对map任务并发数进行修正。
[0056]
例如:当源数据表为小型数据表时,假设源数据表记录数为50万,源数据字段表为15,通过公式(1)计算得出map任务并发数初始值为0.15,然后根据公式(2)将map任务并发数修正为2。
[0057]
当源数据表为中型数据表时,假设源数据表记录数为500万,源数据字段表为30,通过公式(1)计算得出map任务并发数初始值为3,yarn集群cpu内核总数为483,sqoop程序的并行执行数为16,yarn集群节点总数为23,通过公式(2),计算得到map任务并发数为15,此时,map任务并发数初始值3满足大于等于2小于等于15,map任务并发数最后结果为3。
[0058]
当源数据表为大型数据表时,假设源数据表记录数为5000万,源数据字段表为30,通过公式(1)计算得出map任务并发数初始值为30,yarn集群cpu内核总数为483,sqoop程序的并行执行数为16,yarn集群节点总数为23,通过公式(2),计算得到map任务并发数为15,此时map任务并发数初值需要满足大于等于2小于等于15,map任务并发数最后结果为15。
[0059]
本技术实施例中,通过对map任务并发数进行调优,从而避免出现map任务并发数过低或者过高的情况,缩短了sqoop程序抽取数据的时间,从而提升了sqoop程序的抽取数据的效率。
[0060]
步骤s103:根据所述map任务并发数确定用于抽取所述源数据表的map任务,通过所述map任务以并发的方式将所述源数据表中的数据抽取至目标数据表中。
[0061]
本技术实施例中,根据map任务并发数确定出sqoop程序抽取源数据表的map任务,通过该map任务以并发的方式将源数据表中的数据抽取至目标数据表中。
[0062]
需要说明的是,目标数据表中可以来自关系型数据库,也可以来自hadoop的hdfs。
当源数据表来自关系型数据库,则目标数据表来自hadoop的hdfs,当源数据表来自hadoop的hdfs,则目标数据表来自关系型数据库。
[0063]
作为一种优选的实施方式,所述根据所述map任务并发数确定用于抽取所述源数据表的map任务,可以包括:将所述map任务并发数输入至所述sqoop程序的参数配置中;所述sqoop程序通过所述参数配置确定用于抽取所述源数据表的map任务。
[0064]
本技术实施例中,将计算得到的map任务并发数输入到sqoop程序的参数配置中,并通过该参数配置确定出抽取源数据表的map任务。
[0065]
如图2所示,为sqoop程序数据抽取语句示例示意图。
[0066]
从上述技术方案可以看出,本技术实施例提供的一种基于sqoop程序的数据处理方法及装置,所述方法包括:获取源数据表的参数以及系统参数;其中,所述源数据表的参数包括:源数据表记录数、源数据表字段数;所述系统参数用于指示调用所述sqoop程序的系统能力;根据所述源数据表的参数和所述系统参数,确定抽取所述源数据表时需要配置的map任务并发数;根据所述map任务并发数确定用于抽取所述源数据表的map任务,通过所述map任务以并发的方式将所述源数据表中的数据抽取至目标数据表中。
[0067]
可见,本技术实施例通过对map任务并发数进行调优,缩短了sqoop程序抽取数据的时间,从而提升了sqoop程序的抽取数据的效率。
[0068]
与上述方法相对应,本发明实施例还提供了一种基于sqoop程序的数据处理装置,请参阅图3,示出了该装置的结构示意图,可以包括:参数获取模块100,map任务并发数计算模块200,sqoop数据抽取模块300。
[0069]
参数获取模块100,用于获取源数据表的参数以及系统参数;其中,所述源数据表的参数包括:源数据表记录数、源数据表字段数;所述系统参数用于指示调用所述sqoop程序的系统能力;
[0070]
map任务并发数计算模块200,用于根据所述源数据表的参数和所述系统参数,确定抽取所述源数据表时需要配置的map任务并发数;
[0071]
sqoop数据抽取模块300,用于根据所述map任务并发数确定用于抽取所述源数据表的map任务,通过所述map任务以并发的方式将所述源数据表中的数据抽取至目标数据表中。
[0072]
可选地,所述系统参数,可以包括:yarn集群cpu内核总数、sqoop程序的并行执行数、yarn集群节点总数。
[0073]
可选地,在上述任一实施例的基础上,所述map任务并发数计算模块,具体用于通过如下公式,计算得到抽取所述源数据表时需要配置的map任务并发数:
[0074][0075]
其中,符号表示向下取整数,a为源数据表记录数,b为源数据表字段数,x1为单个map任务的数据处理能力,c为yarn集群cpu内核总数,x2为yarn集群运行的组件的并行度,d为sqoop程序的并行执行数,e为yarn集群节点总数,f为map任务并发数。
[0076]
可选地,在上述任一实施例的基础上,所述sqoop数据抽取模块,具体用于将所述map任务并发数输入至所述sqoop程序的参数配置中;所述sqoop程序通过所述参数配置确定用于抽取所述源数据表的map任务。
[0077]
本技术实施例提供了一种电子设备,包括:
[0078]
存储器,用于存储一个或多个程序;
[0079]
处理器;当所述一个或多个程序被所述处理器执行时,实现上述实施例中所述的基于sqoop程序的数据处理方法。
[0080]
本技术实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现上述实施例中所述的基于sqoop程序的数据处理方法。
[0081]
从上述技术方案可以看出,本技术实施例提供的一种基于sqoop程序的数据处理方法及装置,所述方法包括:获取源数据表的参数以及系统参数;其中,所述源数据表的参数包括:源数据表记录数、源数据表字段数;所述系统参数用于指示调用所述sqoop程序的系统能力;根据所述源数据表的参数和所述系统参数,确定抽取所述源数据表时需要配置的map任务并发数;根据所述map任务并发数确定用于抽取所述源数据表的map任务,通过所述map任务以并发的方式将所述源数据表中的数据抽取至目标数据表中。
[0082]
可见,本技术实施例通过对map任务并发数进行调优,缩短了sqoop程序抽取数据的时间,从而提升了sqoop程序的抽取数据的效率。
[0083]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0084]
本领域技术人员可以理解,图所示的流程图仅是本技术的实施方式可以在其中得以实现的一个示例,本技术实施方式的适用范围不受到该流程图任何方面的限制。
[0085]
在本技术所提供的几个实施例中,应该理解到,所揭露的方法、装置和设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0086]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0087]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0088]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明
将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1