一种基于Spark框架的关系型数据库分布式读取方法及装置制造方法及图纸

技术编号:31574477 阅读:17 留言:0更新日期:2021-12-25 11:15
本发明专利技术实施例涉及分布式计算技术领域,公开了一种基于Spark框架的关系型数据库分布式读取方法及装置。该方法包括:获取待读取的数据表中的数据总量S以及分区数量n;S、n分别为正整数;根据数据总量S以及分区数量n得到每个分区对应的数据量m;对待读取的数据表中的数据的分区用字段的字段值进行排序之后,根据各个分区的数据量m查找得到各个分区对应的分区用字段的字段值;其中,分区用字段的数据类型为非数值型;根据各个分区对应的分区用字段的字段值组装成查询语句并分发到n个节点进行读取计算。本发明专利技术实施例可实现字符型分区字段的数据的并行处理,提高数据处理效率以及迁移速度。度。度。

【技术实现步骤摘要】
一种基于Spark框架的关系型数据库分布式读取方法及装置


[0001]本专利技术涉及分布式计算
,特别涉及一种基于Spark框架的关系型数据库分布式读取方法及装置。

技术介绍

[0002]伴随着经济的飞速发展,各大企业业务量猛增,企业所留存的数据也迎来了爆发式的增长,数据量由原来的GB级别向着TB、PB级别发展,为最大程度地发掘数据价值,企业会采用各种算法对数据进行分析。面对单日TB、PB级别的数据增长,传统的数据库或者单机进程无法支撑如此大规模的数据计算,各种分布式计算框架如雨后春笋涌现出来,Spark是当前离线批处理中炙手可热的框架,具有高可用、高并发、高性能等的特性,很大程度上提升了数据处理的性能。Spark支持的数据源种类繁多,包括FileSystem、关系型数据库、非关系型数据库等。
[0003]Spark能够提高处理性能的一个关键点在于能够将一个大的任务切分成n个小的任务分发到不同的机器并行执行,这种并行是从数据读取阶段就开始的。当前很多企业数据还是存储在关系型数据库中,如Mysql、Oracle中,Spark自然也实现了对其的支持,但是当前Spark版本中,若要并行读取关系型数据库,则需要使用到分区字段,该字段要求表中必须存在一个数值类型的字段,且字段的值要尽量不重复,大部分场景下会使用主键。而很多企业的数据库中是不存在类似字段的,他们的表字段是字符串类型的,因此在此场景下,Spark任务便无法并行读取数据,后续的数据处理自然无法并行。
[0004]应当理解的是,以上的描述仅是对相关技术的示例性解释,并不表示属于本公开的现有技术。

技术实现思路

[0005]本专利技术实施例的目的在于提供一种基于Spark框架的关系型数据库分布式读取方法及装置,解决当前Spark任务无法对关系型数据库中缺少数值型分区字段的数据进行并行读取的问题。
[0006]为解决上述技术问题,第一方面,本专利技术实施例提供了一种基于Spark框架的关系型数据库分布式读取方法,包括:
[0007]获取待读取的数据表中的数据总量S以及分区数量n;S、n均为正整数;
[0008]根据所述数据总量S以及分区数量n得到每个分区对应的数据量m;
[0009]对所述待读取的数据表中的数据的分区用字段的字段值进行排序之后,根据各个分区的数据量m查找得到各个分区对应的分区用字段的字段值;其中,所述分区用字段的数据类型为非数值型;
[0010]根据所述各个分区对应的分区用字段的字段值组装成查询语句并分发到n个节点进行读取计算。
[0011]另外,所述根据所述数据总量S以及分区数量n得到每个分区对应的数据量m,包
括:
[0012]若S/n的余数r不为0,则将r条数据平均分配给n个分区中的r个分区。
[0013]另外,所述根据所述数据总量S以及分区数量n得到每个分区对应的数据量m,包括:
[0014]若S/n的余数r不为0,则将r条数据分配给n个分区中的任意一个分区。
[0015]另外,所述根据所述各个分区对应的分区用字段的字段值组装成查询语句并分发到n个节点进行读取计算,包括:
[0016]将包含(s/n+r)条数据的分区的计算任务轮流分配给不同的计算节点。
[0017]另外,所述方法还包括:
[0018]检测所述待读取的数据表中是否存在数值型分区用字段,若否,则执行上述对非数值型分区用字段的待读取数据进行并行计算的方法。
[0019]第二方面,本专利技术实施例还提供了一种基于Spark框架的关系型数据库分布式读取装置,包括:
[0020]获取模块,用于获取待读取的数据表中的数据总量S以及分区数量n;S、n均为正整数;
[0021]分区数据量计算模块,用于根据所述数据总量S以及分区数量n得到每个分区对应的数据量m;
[0022]分区字段值提取模块,用于对所述待读取的数据表中的数据的分区用字段的字段值进行排序之后,根据各个分区的数据量m查找得到各个分区对应的分区用字段的字段值;其中,所述分区用字段的数据类型为非数值型;
[0023]组装发送模块,用于根据所述各个分区对应的分区用字段的字段值组装成查询语句并分发到n个节点进行读取计算。
[0024]第三方面,本专利技术实施例还提供了一种计算设备,包括:存储器和处理器,存储器存储计算机程序,处理器运行所述计算机程序以实现如第一方面所述的基于Spark框架的关系型数据库分布式读取方法。
[0025]第四方面,本专利技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本专利技术任意实施例所述的基于Spark框架的关系型数据库分布式读取方法。
[0026]本公开的实施例通过获取待读取的数据表中的数据总量S以及分区数量n,根据数据总量S以及分区数量n得到每个分区对应的数据量m,对待读取的数据表中的数据的分区用字段的字段值进行排序之后,根据各个分区的数据量m查找得到各个分区对应的分区用字段的字段值,根据各个分区对应的分区用字段的字段值组装成查询语句并分发到n个节点进行读取计算,从而可以对分区用字段的数据类型为非数值型的数据进行并行读取和并行计算,显著提高数据处理效率。
附图说明
[0027]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,可以理解地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
[0028]图1是相关技术中分区用字段为数值型的数据读取方法的流程示意图;
[0029]图2是本专利技术实施例一提供的基于Spark框架的关系型数据库分布式读取方法的流程示意图;
[0030]图3是本专利技术实施例一提供的基于Spark框架的关系型数据库分布式读取方法的流程示例图;
[0031]图4是本专利技术实施例二提供的基于Spark框架的关系型数据库分布式读取装置的结构示意图;
[0032]图5是本专利技术实施例三提供的计算设备的结构示意图。
具体实施方式
[0033]为使本专利技术的目的、技术方案和优点更加清楚,以下将参照本专利技术实施例中的附图,通过实施方式清楚、完整地描述本专利技术的技术方案,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0034]为了更好地理解本专利技术相对于相关技术所做出的改进,在对本专利技术的实施方式进行详细说明之前,先对Spark框架支持的分区用字段为数值型的数据的并行读取方法加以说明。
[0035]图1是相关技术中Spark框架采用的分区用字段为数值型的数据的并行读取方法的流程图,相关方案可应用于分布式计算系统中的控制节点。该方法具体包括以下步骤:
[003本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spark框架的关系型数据库分布式读取方法,其特征在于,包括:获取待读取的数据表中的数据总量S以及分区数量n;S、n均为正整数;根据所述数据总量S以及分区数量n得到每个分区对应的数据量m;对所述待读取的数据表中的数据的分区用字段的字段值进行排序之后,根据各个分区的数据量m查找得到各个分区对应的分区用字段的字段值;其中,所述分区用字段的数据类型为非数值型;根据所述各个分区对应的分区用字段的字段值组装成查询语句并分发到n个节点进行读取计算。2.根据权利要求1所述的方法,其特征在于,所述根据所述数据总量S以及分区数量n得到每个分区对应的数据量m,包括:若S/n的余数r不为0,则将r条数据平均分配给n个分区中的r个分区。3.根据权利要求1所述的方法,其特征在于,所述根据所述数据总量S以及分区数量n得到每个分区对应的数据量m,包括:若S/n的余数r不为0,则将r条数据分配给n个分区中的任意一个分区。4.根据权利要求3所述的方法,其特征在于,所述根据所述各个分区对应的分区用字段的字段值组装成查询语句并分发到n个节点进行读取计算,包括:将包含(s/n+r)条数据的分区的计算任务轮流分配给不同的计算节点。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:检测所述待读取的数据表中是否存在数值型分区用字段,若否,则执行上述对非数值型分区用字段...

【专利技术属性】
技术研发人员:吴珉杰赵凡举李垚朱亮陈国润钱栋军马文斌
申请(专利权)人:上海理想信息产业集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1