一种计算引擎从分布式数据库加载数据的方法及装置制造方法及图纸

技术编号:33248334 阅读:80 留言:0更新日期:2022-04-27 18:05
本说明书实施例提供了一种计算引擎从分布式数据库加载数据的方法及装置,分布式数据库包括多个存储节点,该方法包括:获取分布式数据库中第一数据表的分区信息,其中,分区信息包括第一数据表的各个分区所在的存储节点的标识;根据分区信息执行分区调度,生成针对若干存储节点的若干加载任务;分区调度优先将各个分区分配给所在的存储节点对应的加载任务;将若干加载任务分别分配给若干存储节点中的任务执行器,使其并行执行若干加载任务。使其并行执行若干加载任务。使其并行执行若干加载任务。

【技术实现步骤摘要】
一种计算引擎从分布式数据库加载数据的方法及装置


[0001]本说明书一个或多个实施例涉及分布式计算领域和分布式数据库领域,尤其涉及一种计算引擎从分布式数据库加载数据的方法及装置。

技术介绍

[0002]随着技术的发展,数据收集和运用的规模不断增长,传统的单机关系型数据库越来越不能处理与日俱增的大规模数据。由此,涌现出处理大规模数据的分布式数据库。然而,分布式数据库主要擅长于处理事务型负载。当应用场景中需要执行分析型负载时,分布式数据库可以处理的负载有限。例如,分布式数据库常常不擅长处理流计算、机器学习、图计算等负载。所以,当数据存储在分布式数据库中,且用户需要使用这些数据来执行分析型负载时,常见的解决方案是将数据从分布式数据库加载到分布式计算引擎,借助计算引擎来执行各种分析型计算。但是,在这种情况下,尤其是在加载数据量较大的情况下,数据从分布式数据库加载到计算引擎消耗的时间可能成为整个计算任务的性能瓶颈。

技术实现思路

[0003]本说明书中的实施例旨在提供一种新的计算引擎从分布式数据库加载数据的方法。该方法根据表数据的分区,建立在分布式数据库的存储节点上并行执行的加载任务,并将各个存储节点上的表分区优先分配给本地执行的加载任务,然后在各个节点上并行执行其本地加载任务。利用该方法,可以保证各个数据加载任务的加载的数据量的均衡,可以有效减少了跨节点分布式访问的开销、以及节点内非连续性访问的开销,进而提高数据加载的效率。
[0004]根据第一方面,提供了一种计算引擎从分布式数据库加载数据的方法,所述分布式数据库包括多个存储节点,所述方法包括:
[0005]获取分布式数据库中第一数据表的分区信息,其中,所述分区信息包括第一数据表的各个分区所在的存储节点的标识;
[0006]根据所述分区信息执行分区调度,生成针对若干存储节点的若干加载任务;所述分区调度优先将所述各个分区分配给所在的存储节点对应的加载任务;
[0007]将所述若干加载任务分别分配给所述若干存储节点中的任务执行器,使其并行执行所述若干加载任务。
[0008]在一种可能的实施方式中,所述计算引擎为Spark计算引擎,所述分布式数据库为OceanBase数据库。
[0009]在一种可能的实施方式中,所述存储节点的标识为存储节点的IP地址。
[0010]在一种可能的实施方式中,所述存储节点基于物理节点、虚拟机节点或容器节点中的一种或多种。
[0011]在一种可能的实施方式中,所述存储节点具有对应的分配上限阈值;
[0012]所述分区调度优先将所述各个分区分配给所在的存储节点对应的加载任务,包
括:
[0013]对于任意存储节点,
[0014]若其本地分区的数量不超过所述分配上限阈值,将其全部本地分区分配给该存储节点对应的加载任务。
[0015]在一种可能的实施方式中,所述分配上限阈值为所述存储节点的处理器内核数量。
[0016]在一种可能的实施方式中,所述分区调度优先将所述各个分区分配给所在的存储节点对应的加载任务,包括:
[0017]若其本地分区的数量超过所述分配上限阈值,将其中所述分配上限阈值数量的本地分区分配给该存储节点对应的加载任务;
[0018]将其余的本地分区分配给其他存储节点的加载任务。
[0019]在一种可能的实施方式中,所述方法还包括:
[0020]在获取分布式数据库中第一数据表的分区信息之前,
[0021]获取客户端提交的应用代码,所述应用代码包括针对第一数据表的加载指示。
[0022]根据第二方面,提供了一种计算引擎从分布式数据库加载数据的装置,所述分布式数据库包括多个存储节点,所述装置包括:
[0023]分区信息获取单元,配置为,获取分布式数据库中第一数据表的分区信息,其中,所述分区信息包括第一数据表的各个分区所在的存储节点的标识;
[0024]任务确定单元,配置为,根据所述分区信息执行分区调度,生成针对若干存储节点的若干加载任务;所述分区调度优先将所述各个分区分配给所在的存储节点对应的加载任务;
[0025]任务分配单元,配置为,将所述若干加载任务分别分配给所述若干存储节点中的任务执行器,使其并行执行所述若干加载任务。
[0026]在一种可能的实施方式中,所述计算引擎为Spark计算引擎,所述分布式数据库为OceanBase数据库。
[0027]在一种可能的实施方式中,所述存储节点的标识为存储节点的IP地址。
[0028]在一种可能的实施方式中,所述存储节点基于物理节点、虚拟机节点或容器节点中的一种或多种。
[0029]在一种可能的实施方式中,所述存储节点具有对应的分配上限阈值;
[0030]任务确定单元,进一步配置为:
[0031]对于任意存储节点,
[0032]若其本地分区的数量不超过所述分配上限阈值,将其全部本地分区分配给该存储节点对应的加载任务。
[0033]在一种可能的实施方式中,所述分配上限阈值为所述存储节点的处理器内核数量。
[0034]在一种可能的实施方式中,任务确定单元,进一步配置为:
[0035]若其本地分区的数量超过所述分配上限阈值,将其中所述分配上限阈值数量的本地分区分配给该存储节点对应的加载任务;
[0036]将其余的本地分区分配给其他存储节点的加载任务。
[0037]在一种可能的实施方式中,所述装置还包括,表加载指示获取单元,配置为:
[0038]在获取分布式数据库中第一数据表的分区信息之前,
[0039]获取客户端提交的应用代码,所述应用代码中包括针对第一数据表的加载指示。
[0040]根据第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
[0041]根据第四方面,提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
[0042]利用以上各个方面中的方法、装置、存储介质和计算设备中的一个或多个,可以保证各个加载任务的数据加载量的均衡,有效减少了跨节点分布式访问的开销、以及节点内非连续性访问的开销,提高计算引擎数据加载的效率。
附图说明
[0043]为了更清楚说明本专利技术实施例的技术方案,下面将对实施例描述中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044]图1示出根据本说明书实施例的一种计算引擎从分布式数据库加载数据的方法的原理示意图;
[0045]图2示出根据本说明书实施例的一种计算引擎从分布式数据库加载数据的方法的时序流程图;
[0046]图3示出通过常规轮询调度按分区加载表数据的原理示意图;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种计算引擎从分布式数据库加载数据的方法,所述分布式数据库包括多个存储节点,所述方法包括:获取分布式数据库中第一数据表的分区信息,其中,所述分区信息包括第一数据表的各个分区所在的存储节点的标识;根据所述分区信息执行分区调度,生成针对若干存储节点的若干加载任务;所述分区调度优先将所述各个分区分配给所在的存储节点对应的加载任务;将所述若干加载任务分别分配给所述若干存储节点中的任务执行器,使其并行执行所述若干加载任务。2.根据权利要求1所述的方法,其中,所述计算引擎为Spark计算引擎,所述分布式数据库为OceanBase数据库。3.根据权利要求1所述的方法,其中,所述存储节点的标识为存储节点的IP地址。4.根据权利要求1所述的方法,其中,所述存储节点基于物理节点、虚拟机节点或容器节点中的一种或多种。5.根据权利要求1所述的方法,其中,所述存储节点具有对应的分配上限阈值;所述分区调度优先将所述各个分区分配给所在的存储节点对应的加载任务,包括:对于任意存储节点,若其本地分区的数量不超过所述分配上限阈值,将其全部本地分区分配给该存储节点对应的加载任务。6.根据权利要求5所述的方法,其中,所述分配上限阈值为所述存储节点的处理器内核数量。7.根据权利要求5所述的方法,其中,所述分区调度优先将所述各个分区分配给所在的存储节点对应的加载任务,包括:若其本地分区的数量超过所述分配上限阈值,将其中所述分配上限阈值数量的本地分区分配给该存储节点对应的加载任务;将其余的本地分区分配给其他存储节点的加载任务。8.根据权利要求1所述的方法,还包括:在获取分布式数据库中第一数据表的分区信息之前,获取客户端提交的应用代码,所述应用代码包括针对第一数据表的加载指示。9.一种计算引擎从分布式数据库加载数据的装置,所述分布式数据库包括多个存储节点,所述装置包括:分区信息获取单元,配置为,获取分布式数据库中第一数据表的分区信息,其中,所述分区信息包括第一数据...

【专利技术属性】
技术研发人员:韩冰徐泉清徐辰杨传辉
申请(专利权)人:华东师范大学
类型:发明
国别省市:

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

1