一种数据处理方法、装置、电子设备及存储介质与流程

专利2023-02-17  114



1.本技术涉及大数据处理技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。


背景技术:

2.随着信息化时代的到来,大数据在各个领域得到了广泛运用。数据处理过程很多都需要使用spark,spark是一种安全的、经正式定义的编程语言,提供了一个全面、统一的框架用于满足各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。
3.但是spark在处理数据过程中存在执行效率低,需要大量物理机来分布式处理的过程,这样会消耗大量的物理资源。
4.因此,如何提高数据处理的效率,是目前急需解决的问题。


技术实现要素:

5.本技术提供一种数据处理方法,用以提高数据处理效率。
6.第一方面,提供一种数据处理方法,包括:
7.获取第一数据集,其中,所述第一数据集包括待处理的n个任务数据,n为大于0的整数,所述第一数据集设置有至少一个弹性式分布式数据集,以及各rdd之间用于存储任务数据的依赖关系;根据所述各rdd之间的依赖关系,将所述第一数据集划分成m个阶段,其中,所述m为大于0的整数;
8.根据所述m个阶段中的分区信息,生成所述m个阶段对应的m个任务集,其中,一个任务集为所述第一数据集的一个子集,且所述m个任务集中各自包括的任务数据不同;将所述m个任务集,分发给各executor,并行执行所述m个任务集中的任务数据。
9.可选的,所述依赖关系包括宽依赖和窄依赖,所述宽依赖用于表征:父rdd的分区被多个子rdd的分区依赖,所述窄依赖用于表征:父rdd的分区至多被一个子rdd的分区依赖。
10.可选的,所述m个任务集中各自包括的任务数据的数量是根据各自对应阶段中rdd的分区数量确定的。
11.可选的,所述将所述m个任务集中的任务数据,分发到各executor中,并行执行所述m个任务集中的任务数据,包括:判断各executor是否存在空闲executor,若是,则从所述m个任务集中选择p个任务集分发到所述空闲executor,并行执行所述p个任务集中的任务数据;其中,所述p的取值与所述空闲executor的数量相同;若否,则将所述m个任务集缓存到任务队列。
12.第二方面,提供一种数据处理装置,包括:
13.获取模块,用于获取第一数据集,其中,所述第一数据集包括待处理的n个任务数据,n为大于0的整数,所述第一数据集设置有至少一个弹性式分布式数据集,以及各rdd之
间用于存储任务数据的依赖关系;划分模块,用于根据所述各rdd之间的依赖关系,将所述第一数据集划分成m个阶段,其中,所述m为大于0的整数;生成模块,用于根据所述m个阶段中的分区信息,生成所述m个阶段对应的m个任务集,其中,一个任务集为所述第一数据集的一个子集,且所述m个任务集中各自包括的任务数据不同;数据处理模块,用于将所述m个任务集,分发给各executor,并行执行所述m个任务集中的任务数据。
14.可选的,所述依赖关系包括宽依赖和窄依赖,所述宽依赖用于表征:父rdd的分区被多个子rdd的分区依赖,所述窄依赖用于表征:父rdd的分区至多被一个子rdd的分区依赖。
15.可选的,所述m个任务集中各自包括的任务数据的数量是根据各自对应阶段中rdd的分区数量确定的。
16.可选的,数据处理模块,具体用于:判断各executor是否存在空闲executor,若是,则从所述m个任务集中选择p个任务集分发到所述空闲executor,并行执行所述p个任务集中的任务数据;其中,所述p的取值与所述空闲executor的数量相同;若否,则将所述m个任务集缓存到任务队列。
17.第三方面,提供一种电子设备,包括:
18.存储器,用于存放计算机程序;处理器,用于执行所述存储器上所存放的计算机程序时,执行如第一方面任一项所述的方法。
19.第四方面,提供一种可读计算机存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一项所述的方法。
20.本技术实施例中,由于将获取到的第一数据集,基于各rdd之间的依赖关系进行划分,得到m个阶段,因此对第一数据集中的任务数据进行了归纳划分、存储等,防止了零散数据的丢失,不占用内存,提高了任务数据的安全性与准确性;再由于根据上述m个阶段各自对应的分区信息,生成m个阶段对应的m个任务集,将m个任务集,分发给各executor,并行执行m个任务集中的任务数据,因此在多线程情况下,可以并行执行多个任务,在单线程情况下,也可并行执行多个任务,减少了等待时间,提高了数据处理效率,减少物理机器的投入。
附图说明
21.图1为本技术实施例提供的一种数据处理系统;
22.图2为本技术实施例提供的一种数据处理方法的流程图;
23.图3为本技术实施例提供的一种数据处理逻辑示意图;
24.图4为本技术实施例提供的一种数据处理装置的结构示意图;
25.图5为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
26.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
27.以下对本技术实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
28.(1)本技术实施例中,名词“网络”和“系统”经常交替使用,但本领域的技术人员可以理解其含义。
29.(2)本技术实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
30.(3)“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
31.(4)弹性分布式数据集(resilient distributed dataset,rdd)是spark中的抽象数据结构类型,spark中最基本的数据抽象,实现了以操作本地集合的方式来操作分布式数据集的抽象实现,它代表一个不可变、可分区(partition)、里面的元素可并行计算的集合。rdd具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。rdd允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,提升了查询速度。rdd是spark最核心的东西,rdd是可序列化的。rdd可以cache到内存中,省去了mapreduce大量的磁盘io操作,任何数据在spark中都被表示为rdd。从编程的角度来看,rdd可以简单看成是一个数组。和普通数组的区别是,rdd中的数据是分区存储的可以分布在不同的机器上,同时可以被并行处理。作用:spark应用程序把需要处理的数据转换为rdd,然后对rdd进行一系列的变换和操作从而得到结果。
32.(5)task(任务):指单个分区数据集上的最小处理流程单元。
33.(6)taskset(任务集):由一组关联的,但互相之间没有shuffle依赖(宽依赖)关系的任务(任务数据)组成的集合。
34.(7)stage(阶段):一个任务集的调度阶段。
35.(8)job(作业):由rdd action操作生成的一个或多个stage组成的一次计算作业。
36.(9)application(应用程序):由一个或多个job组成。
37.(10)有向无环图(directed acyclic graph,dag):简单的来说,就是一个由顶点和有方向性的边构成的图,从任意一个顶点出发,没有任何一条路径会将其带回到出发的顶点。
38.图1为本技术实施例提供的一种数据处理系统。如图1所示,该数据处理系统100可包括:sparkcontext模块101、高层调度(dagscheduler)模块102、底层调度(taskscheduler)模块103。进一步的,底层调度模块103还可包括任务调度管理器(tasksetmanager)104。其中,sparkcontext模块101与dagschedule模块102可进行无线通信,dagscheduler模块102和taskscheduler模块103可进行无线通信,taskscheduler模块103和任务调度管理器(tasksetmanager)104可进行无线通信。需要说明的是,任务调度管理器的数量与任务集的个数相关,图1仅以一个任务调度管理器进行描述。
39.sparkcontext模块101可用于将待处理的作业(任务数据集)提交给高层调度器模块102。
40.高层调度模块102可用于接收来自于sparkcontext模块101的任务数据集,将该任务数据集拆分成不同的stage,每个stage上存在一组任务数据,形成一个任务集;然后提交给底层调度模块103进行具体处理。
41.底层调度模块103可用于将接收来自于高层调度模块102的任务集,给该任务集创建一个任务调度管理器104。
42.任务调度管理器104可用于管理stage中的任务集,例如跟踪每个任务数据的执行状况。
43.在一些实施例中,该系统还可包括schedulerbackend模块,向当前等待分配计算资源的task分配计算资源(即executors),并在executors上启动task,完成资源调度过程。
44.图2为本技术实施例提供的一种数据处理方法,该流程可由数据处理装置所执行。该装置可通过软件方式实现,也可通过硬件方式实现,和可通过软件和硬件结合的方式实现。如图所示,该流程包括如下步骤:
45.201:获取第一数据集。其中,该第一数据集包括待处理的n个任务数据,n为大于0的整数,该第一数据集设置有至少一个rdd,以及各rdd之间用于存储任务数据的依赖关系。
46.该步骤中,第一数据集可从图1中的sparkcontext模块101获取。
47.202:根据上述各rdd之间的依赖关系,将该第一数据集划分成m个阶段。其中,m为大于0的整数。
48.可选的,依赖关系可包括宽依赖和窄依赖,宽依赖用于表征:父rdd的分区被多个子rdd的分区依赖,窄依赖用于表征:父rdd的分区至多被一个子rdd的分区依赖。
49.可选的,阶段的划分可通过如下方式:根据各rdd之间的依赖关系,生成一个dag,并根据各rdd之间的宽依赖,对该dag进行划分,得到该第一数据集的m个阶段(stage)。其中,一个stage可包含多个任务数据,可选的该任务数据的个数由于该stage中的rdd确定。具体的,从dag末端链的rdd开始,调用递归,进行遍历,找该rdd和父rdd之间的依赖关系,如果是窄依赖,则继续找父rdd的父rdd,如果是宽依赖,则从该rdd开始到前面所有的rdd划分为一个stage,递归的出口,是直到找不到父rdd,依次类推,得到该第一数据集的m个阶段(stage)。
50.203:根据m个阶段中的分区信息,生成m个阶段对应的m个任务集。
51.其中,一个任务集为第一数据集的一个子集,且m个任务集中各自包括的任务数据不同。
52.可选的,m个任务集中各自包括的任务数据的数量是根据各自对应阶段中rdd的分区数量确定的,一个分区对应一个任务数据。
53.举例来说,第一阶段中有2个rdd,其中一个rdd有2个分区,另外一个有3个分区。根据第一阶段中5个分区各自对应的分区信息(分区地址、分区名称、分区id等),获取到各自对应的任务数据,将该5个任务数据打包成一个任务集,便于后续并行执行该5个任务数据。
54.在一些实施例中,还可为各任务集分别创建一个任务调度管理器,便于管理各任务集资源的调配等。
55.204:将上述m个任务集,分发给各executor,并行执行该m个任务集中的任务数据。
56.该m个任务集具体可由图1中的底层调度模块103,分发给executor。
57.可选的,对m个任务集中数据进行处理,可通过以下方式:判断各executor是否存在空闲executor,若是,则从m个任务集中选择p个任务集分发到空闲executor,并行执行p个任务集中的任务数据。其中,p的取值与空闲executor的数量相同;若否,则将m个任务集缓存到任务队列。
58.举例来说,一共有5个executor,空闲的executor为2,一共有8个任务集,从8个任务集中选择2个任务集分发到空闲executor,并行执行该2个任务集中的任务数据。
59.本技术实施例中,由于将获取到的第一数据集,基于各rdd之间的依赖关系进行划分,得到m个阶段,因此对第一数据集中的任务数据进行了归纳划分、存储等,防止了零散数据的丢失,不占用内存,提高了任务数据的安全性与准确性;再由于根据上述m个阶段各自对应的分区信息,生成m个阶段对应的m个任务集,将m个任务集,分发给各executor,并行执行m个任务集中的任务数据,因此在多线程情况下,可以并行执行多个任务,在单线程情况下,也可并行执行多个任务,减少了等待时间,提高了数据处理效率,减少物理机器的投入。
60.图3为本技术实施例提供的一种数据处理逻辑示意图。如图所示:
61.sparkcontext(如图1中的sparkcontext模块101)的向dagscheduler(如图1中的高层调度模块101)提交一个job(第一数据集),dagscheduler收到该job后,划分成m个stage,并将该m个stage上各自对应的任务数据打包成m个taskset,然后为该m个taskset发送给taskscheduler(如图1中的taskscheduler模块103),taskscheduler接收到该m个taskset后,为该m个taskset,创建m个tasksetmanager,并缓存至任务队列中,schedulerbackend负责executor状态与资源的管理,当发现空闲executor时,例如,图3中有3个空闲executor,就会通过taskscheduler从任务队列中选择3个taskset,分发给3个空闲executor,便可并行执行该3个taskset中的任务数据。
62.基于相同的技术构思,本技术实施例还提供了一种数据处理装置,该装置可实现本技术实施例中上述数据处理方法的流程。
63.图4为本技术实施例提供的一种数据处理装置。
64.如图所示,该装置包括:获取模块401、划分模块402、生成模块403、数据处理模块404。
65.获取模块401,用于获取第一数据集,其中,所述第一数据集包括待处理的n个任务数据,n为大于0的整数,所述第一数据集设置有至少一个弹性式分布式数据集,以及各rdd之间用于存储任务数据的依赖关系。
66.划分模块402,用于根据所述各rdd之间的依赖关系,将所述第一数据集划分成m个阶段,其中,所述m为大于0的整数。
67.生成模块403,用于根据所述m个阶段中的分区信息,生成所述m个阶段对应的m个任务集,其中,一个任务集为所述第一数据集的一个子集,且所述m个任务集中各自包括的任务数据不同。
68.数据处理模块404,用于将所述m个任务集,分发给各executor,并行执行所述m个任务集中的任务数据。
69.可选的,数据处理模块404具体用于判断各executor是否存在空闲executor,若是,则从所述m个任务集中选择p个任务集分发到所述空闲executor,并行执行所述p个任务集中的任务数据;其中,所述p的取值与所述空闲executor的数量相同;若否,则将所述m个任务集缓存到任务队列。
70.在此需要说明的是,本技术实施例提供的上述装置,能够实现上述数据处理方法实施例中的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
71.基于相同的技术构思,本技术实施例中还提供了一种电子设备,所述电子设备可以实现前述一种数据处理装置的功能。
72.图5为本技术实施例提供的电子设备的结构示意图。
73.至少一个处理器501,以及与至少一个处理器501连接的存储器502,本技术实施例中不限定处理器501与存储器502之间的具体连接介质,图5中是以处理器501和存储器502之间通过总线500连接为例。总线500在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线500可以分为地址总线、数据总线、控制总线等,为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器501也可以称为控制器,对于名称不做限制。
74.在本技术实施例中,存储器502存储有可被至少一个处理器501执行的指令,至少一个处理器501通过执行存储器502存储的指令,可以执行前文论述的一种数据处理方法。处理器501可以实现图5所示的装置中各个模块的功能。
75.其中,处理器501是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器502内的指令以及调用存储在存储器502内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。
76.在一种可能的设计中,处理器501可包括一个或多个处理单元,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、驾驶人员界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。在一些实施例中,处理器501和存储器502可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
77.处理器501可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的一种数据处理方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
78.存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器502可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性存储器、磁盘、光盘等等。存储器502是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器502还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
79.通过对处理器501进行设计编程,可以将前述实施例中介绍的一种数据处理方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图1所示的实施例的一种数据处理方法。如何对处理器501进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
80.在此需要说明的是,本技术实施例提供的上述通电子设备,能够实现上述方法实
施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
81.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行上述实施例中的一种数据处理方法。
82.本技术实施例还提供了一种计算机程序产品,所述计算机程序产品在被计算机调用时,使得所述计算机执行上述实施例中的一种数据处理方法。
83.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
84.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
85.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
86.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

技术特征:
1.一种数据处理方法,其特征在于,包括:获取第一数据集,其中,所述第一数据集包括待处理的n个任务数据,n为大于0的整数,所述第一数据集设置有至少一个弹性式分布式数据集rdd,以及各rdd之间用于存储任务数据的依赖关系;根据所述各rdd之间的依赖关系,将所述第一数据集划分成m个阶段,其中,所述m为大于0的整数;根据所述m个阶段中的分区信息,生成所述m个阶段对应的m个任务集,其中,一个任务集中的任务数据为所述第一数据集的一个子集,且所述m个任务集中各自包括的任务数据不同;将所述m个任务集,分发给各executor,并行执行所述m个任务集中的任务数据。2.如权利要求1所述的方法,其特征在于,所述依赖关系包括宽依赖和窄依赖,所述宽依赖用于表征:父rdd的分区被多个子rdd的分区依赖,所述窄依赖用于表征:父rdd的分区至多被一个子rdd的分区依赖。3.如权利要求1所述的方法,其特征在于,所述m个任务集中各自包括的任务数据的数量是根据各自对应阶段中rdd的分区数量确定的。4.如权利要求1-3任一项所述的方法,其特征在于,所述将所述m个任务集中的任务数据,分发到各executor中,并行执行所述m个任务集中的任务数据,包括:判断各executor是否存在空闲executor,若是,则从所述m个任务集中选择p个任务集分发到所述空闲executor,并行执行所述p个任务集中的任务数据;其中,所述p的取值与所述空闲executor的数量相同;若否,则将所述m个任务集缓存到任务队列。5.一种数据处理装置,其特征在于,包括:获取模块,用于获取第一数据集,其中,所述第一数据集包括待处理的n个任务数据,n为大于0的整数,所述第一数据集设置有至少一个弹性式分布式数据集rdd,以及各rdd之间用于存储任务数据的依赖关系;划分模块,用于根据所述各rdd之间的依赖关系,将所述第一数据集划分成m个阶段,其中,所述m为大于0的整数;生成模块,用于根据所述m个阶段中的分区信息,生成所述m个阶段对应的m个任务集,其中,一个任务集为所述第一数据集的一个子集,且所述m个任务集中各自包括的任务数据不同;数据处理模块,用于将所述m个任务集,分发给各executor,并行执行所述m个任务集中的任务数据。6.如权利要求5所述的装置,其特征在于,所述依赖关系包括宽依赖和窄依赖,所述宽依赖用于表征:父rdd的分区被多个子rdd的分区依赖,所述窄依赖用于表征:父rdd的分区至多被一个子rdd的分区依赖。7.如权利要求5所述的装置,其特征在于,所述m个任务集中各自包括的任务数据的数量是根据各自对应阶段中rdd的分区数量确定的。8.如权利要求5-7任一项所述的装置,其特征在于,数据处理模块,具体用于:判断各executor是否存在空闲executor,若是,则从所述m个任务集中选择p个任务集分发到所述空闲executor,并行执行所述p个任务集中的任务数据;其中,所述p的取值与所
述空闲executor的数量相同;若否,则将所述m个任务集缓存到任务队列。9.一种电子设备,其特征在于,包括:处理器、存储器;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的计算机程序时,执行如权利要求1-4任一项所述的方法。10.一种可读计算机存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-4任一项所述的方法。

技术总结
本申请公开一种数据处理方法、装置、电子设备及存储介质,涉及大数据处理技术领域。该方法包括:获取第一数据集,其中,所述第一数据集包括待处理的N个任务数据,N为大于0的整数,所述第一数据集设置有至少一个弹性式分布式数据集RDD,以及各RDD之间用于存储任务数据的依赖关系;根据所述各RDD之间的依赖关系,将所述第一数据集划分成M个阶段,其中,所述M为大于0的整数;根据所述M个阶段中的分区信息,生成所述M个阶段对应的M个任务集,其中,一个任务集为所述第一数据集的一个子集,且所述M个任务集中各自包括的任务数据不同;将所述M个任务集,分发给各Executor,并行执行所述M个任务集中的任务数据。务集中的任务数据。务集中的任务数据。


技术研发人员:刘芳 凌国辉 陈孟琪
受保护的技术使用者:天翼云科技有限公司
技术研发日:2022.07.21
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-1001.html

最新回复(0)