一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种支持并行处理的数据转换设计方法、设备及介质与流程

2022-02-19 06:20:38 来源:中国专利 TAG:


1.本技术涉及数据转换领域,具体涉及一种支持并行处理的数据转换设计方法、设备及介质。


背景技术:

2.数据转换的目的是将一份具有一定数据结构的数据转换成另外一种数据结构的数据,即实现etl(extract

transform

load,抽取

转换

加载)过程中的数据清洗、转换。
3.由于目前的数据转换组件采用的是串行的执行方式,当数据量足够多的时候,每一个步骤都需要等待上一个步骤执行完成后才能执行当前步骤,这样会导致执行效率低下。因此,亟需一种支持并行处理的数据转换设计方法。


技术实现要素:

4.为了解决上述问题,本技术提出了一种支持并行处理的数据转换设计方法、设备及介质,其中方法包括:
5.确定数据转换任务;所述数据转换任务用于将来源数据的数据结构转换为目标数据的数据结构;确定所述数据转换任务需要执行的若干个步骤及所述若干个步骤之间的步骤顺序;将所述若干个步骤对应的代码作为热点代码进行即时编译;确定已有的线程数量,并确定所述线程的工作状态,所述线程的工作状态至少包括空闲状态及占用状态;将所述线程分配给所述若干个步骤,用以执行对应的步骤,以生成中间数据;将所述中间数据推送至队列中,以使按照所述步骤顺序的下一个步骤对应的所述线程通过调用所述中间数据,执行所述下一个步骤。
6.在一个示例中,将所述若干个步骤对应的代码作为热点代码进行即时编译,具体包括:根据所述数据转换任务中所述来源数据及所述目标数据的数据结构,以及所述数据转换任务的精度要求,确定所述数据处理规则;所述数据处理规则包括数据过滤规则、分组聚合规则、字段映射规则中的至少一种;将所述若干个步骤中分别对应的所述数据处理规则,作为所述热点代码进行即时编译;所述若干个步骤至少包括:数据输入步骤、数据处理步骤、数据输出步骤;所述数据处理步骤至少包括:数据清洗子步骤、数据分组子步骤、字段计算子步骤、字段映射子步骤中的至少一种。
7.在一个示例中,所述数据输入步骤,具体包括:根据所述来源数据的所述数据结构,提供相应所述数据结构的转换接口,以将所述来源数据在所述数据输入步骤时,转换为通用数据结构;根据所述通用数据结构配置所述数据转换任务的所述数据处理规则。
8.在一个示例中,所述方法还包括:统计执行所述数据转换任务时,除所述若干个步骤对应的代码以外,其余若干行代码分别对应的重复执行次数;根据所述重复执行次数,判断所述代码是否能够作为热点代码;若是,则对所述热点代码进行即时编译,并存储在代码缓存中。
9.在一个示例中,所述方法还包括:监测所述代码缓存的剩余存储空间,当所述剩余
存储空间小于预设空间阈值时,发出告警信息,以使工作人员扩大所述代码缓存的存储空间。
10.在一个示例中,所述方法还包括:在所述数据转换任务开始后的预设时间段内,确定所述数据输入步骤对应的线程的所述工作状态为占用状态,且存在所述线程的所述工作状态为所述空闲状态;将所述工作状态为所述空闲状态的所述线程对应的步骤改为数据输入步骤。
11.在一个示例中,所述方法还包括:确定所述线程处于所述空闲状态的持续时间,若所述持续时间超过预设时间阈值,则将所述线程设置为自由线程。
12.在一个示例中,所述方法还包括:获取所述若干个步骤分别对应的线程的工作量;确定所述工作量高于预设阈值,挑选处于空闲状态的自由线程分担所述线程的工作量。
13.本技术还提供了一种支持并行处理的数据转换设计设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:确定数据转换任务;所述数据转换任务用于将来源数据的数据结构转换为目标数据的数据结构;确定所述数据转换任务需要执行的若干个步骤及所述若干个步骤之间的步骤顺序;将所述若干个步骤对应的代码作为热点代码进行即时编译;确定已有的线程数量,并确定所述线程的工作状态,所述线程的工作状态至少包括空闲状态及占用状态;将所述线程分配给所述若干个步骤,用以执行对应的步骤,以生成中间数据;将所述中间数据推送至队列中,以使按照所述步骤顺序的下一个步骤对应的所述线程通过调用所述中间数据,执行所述下一个步骤。
14.本技术还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:确定数据转换任务;所述数据转换任务用于将来源数据的数据结构转换为目标数据的数据结构;确定所述数据转换任务需要执行的若干个步骤及所述若干个步骤之间的步骤顺序;将所述若干个步骤对应的代码作为热点代码进行即时编译;确定已有的线程数量,并确定所述线程的工作状态,所述线程的工作状态至少包括空闲状态及占用状态;将所述线程分配给所述若干个步骤,用以执行对应的步骤,以生成中间数据;将所述中间数据推送至队列中,以使按照所述步骤顺序的下一个步骤对应的所述线程通过调用所述中间数据,执行所述下一个步骤。
15.通过本技术提出的方法,在etl的数据抽取和数据加载过程中采用通用数据结构,以屏蔽数据结构和数据库类型的差异。同时采用多线程处理转换组件,将转换组件的解析分解成若干个步骤,每个步骤完成特定的功能,步骤进行流程编排之后并行执行。采用jit进行流程编排,使得代码运行时解析更专注于数据的处理,降低转换规则解析的时耗。
附图说明
16.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
17.图1为本技术实施例中一种支持并行处理的数据转换设计方法示意图;
18.图2为本技术实施例中一种支持并行处理的数据转换设计设备示意图。
具体实施方式
19.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
20.以下结合附图,详细说明本技术各实施例提供的技术方案。
21.如图1所示,本技术实施例提供一种支持并行处理的数据转换设计方法,该流程可以由相应领域的计算设备执行,流程中的某些输入参数或者中间结果允许人工干预调节,以帮助提高准确性。本技术实施例涉及的分析方法的实现可以为终端设备,也可以为服务器,本技术对此不作特殊限制。为了方便理解和描述,以下实施例均以终端设备为例进行详细描述。方法包括:
22.s101:确定数据转换任务,所述数据转换任务用于将来源数据的数据结构转换为目标数据的数据结构。
23.数据转换是将数据从一种表示形式变为另一种表现形式的过程,首先需要确定待执行的数据转换任务,尤其是确定该数据转换任务重来源数据和目标数据的数据结构,其中,来源数据指的是需要进行数据转换的数据,目标数据指的是数据转换任务想要得到的数据。
24.s102:确定所述数据转换任务需要执行的若干个步骤及所述若干个步骤之间的步骤顺序。
25.确认数据转换任务以及来源数据、目标数据的数据结构之后,需要按照数据转换任务的需求,确定数据转换任务需要执行的步骤有什么,例如有的数据转换任务中需要先分组再进行字段计算,但是有的数据转换任务就不需要分组这一步骤。确定了数据转换任务需要的各个步骤之后,还需要确定这些步骤的先后顺序,以防止转换任务出错。
26.s103:将所述若干个步骤对应的代码作为热点代码进行即时编译。
27.确定了转换任务的步骤、流程之后,需要配置数据转换任务的数据处理规则,例如数据清洗时的规则,需要筛除怎样的数据,或是保留精度的规则等。同时将确定的步骤、流程所对应的代码作为热点代码进行即时编译。其中,在部分商用虚拟机中,java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,这个过程称为即时编译。
28.s104:确定已有的线程数量,并确定所述线程的工作状态,所述线程的工作状态至少包括空闲状态及占用状态。
29.目前的数据转换组件采用的是串行的执行方式,当数据量足够多的时候,每一个步骤都需要等待上一个步骤执行完成后才能执行当前步骤,这样会导致执行效率低下。为避免这种情况发生,在对热点代码进行即时编译之后,为了能够提高数据转换任务的运行速度,可以将数据转换任务采取并行的执行方式,这就需要多个线程共同的配合,所以需要确认已有的线程数量,并确认线程的工作状态,其中,数据处理规则应该至少包括数据处理规则、分组聚合规则、字段映射规则中的至少一种,同时线程的工作状态至少应该包括空闲状态和使用中状态。此外,线程的工作状态还可以包括目前是使用中,预计半小时后使用完
毕等信息。
30.s105:将所述线程分配给所述若干个步骤,用以执行对应的步骤,以生成中间数据。
31.在运行代码时为各个步骤分配不同的线程,由于数据转换任务中可能有多个步骤,使用多个线程执行不同的步骤,并将经过不同步骤对应的线程处理后的数据称为中间数据,下一个步骤对应的线程只需要继续处理上一个步骤生成的中间数据即可。
32.s106:将所述中间数据推送至队列中,以使按照所述步骤顺序的下一个步骤对应的所述线程通过调用所述中间数据,执行所述下一个步骤。
33.上一个步骤对应的线程将数据处理后生成的中间数据推送到队列中,下一个步骤通过调用获取对列数据的方法,从队列中获取中间数据,然后继续按照若干个步骤之间的顺序执行下一个步骤,这样一来,步骤之间并行执行,避免了步骤之间的等待,从而提升了数据转换组件执行的效率。
34.在一个实施例中,配置数据转换任务的数据处理规则时,需要根据数据转换任务的来源数据和目标数据的数据结构,以及数据转换任务的精度要求,从而确定数据处理规则。而不同的数据转换任务中,数据处理规则不同,例如当来源数据较为冗余时,数据处理规则中可能会包含有不同种类的数据清洗规则。确定数据处理规则之后,将数据处理规则对应的代码作为热点代码进行即时编译。其中数据转换任务的步骤至少包括数据输入步骤、数据处理步骤、数据输出步骤,而数据处理步骤又可以按照需求分为数据清洗子步骤、数据分组子步骤、字段计算子步骤、字段映射子步骤等。
35.在一个实施例中,由于在不同的数据转换任务中,来源数据的数据结构也不相同,这就导致在解析数据处理规则时,还需要基于来源数据的不同数据模型,解析数据模型之后再进行数据转换解析,需要配置多套数据模型对应的数据转换任务代码。基于此,可以在配置数据转换任务的数据处理规则之前,将来源数据在数据输入步骤时转换为通用数据结构,并基于通用数据结构配置数据转换任务的数据处理规则,使得数据转换任务在运行时基于通用数据结构数据解析,通过分组聚合、执行条件对数据进行分组聚合和清洗,用统一的获取数据的接口和赋值接口,根据字段映射类型将来源数据转换成目标数据,并在执行过程中记录数据。
36.在一个实施例中,由于即时编译能够将热点代码编译成与本地平台相关的的机器码,从而提高代码的运行速度。因此,在数据转换任务的代码运行时,可以统计除已经进行及时编译的各个步骤代码以外的其他代码的执行次数,如果有某些代码的执行次数较高,也可以将这些代码作为热点代码,进行即时编译,从而进一步地提升任务代码的运行速度。
37.进一步地,由于对代码进行即时编译后的代码会存储在代码缓存中,如果代码缓存空间不足,可能会导致即时编译无法继续进行,从而拖慢代码的运行速度。基于此,可以每间隔预设的时间段就检测一次代码缓存的剩余存储空间,当检测到剩余存储空间小于预设空间阈值时,也即存储空间不足时,可以想工作人员发出告警信息,以使工作人员能够及时扩大代码缓存的存储空间,从而不妨碍即时编译的进行。
38.更进一步地,由于线程数量有限,当数据转换任务中包含的数据条数较多且数据处理过程较为复杂时,数据输入速度会比数据处理速度更快,此时如果其他线程等待数据输入模块进行数据输入,将会极大拖累数据转换任务的进度。基于此,可以在任务开始后的
一段时间内,实时检测除数据输入步骤对应的线程以外其他线程的工作状态,通过改变线程对应的步骤,从而使得所有线程一直处于使用中的状态。同理,等到所有数据都输入完毕后,数据输入步骤对应的线程也可以转而用去执行其他步骤。
39.基于同样思想,为防止线程出现等待的现象,可以再额外设置多个自由线程,其中,设置自由线程的规则时,首先需要确定所有线程处于空闲状态的时间,如果持续时间超过预先设置的时间阈值,就将该线程设置为自由线程。
40.进一步地,在设置自由线程之后,统计所有线程各自的任务量,如果发现某个步骤对应的线程的工作量高于预设阈值,就挑选处于空闲状态的自由线程分担该线程的工作量,以确保数据转换任务能够顺利进行。
41.如图2所示,本技术实施例还提供了一种支持并行处理的数据转换设计设备,包括:
42.至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:确定数据转换任务,所述数据转换任务用于将来源数据的数据结构转换为目标数据的数据结构;确定所述数据转换任务需要执行的若干个步骤及所述若干个步骤之间的步骤顺序;将所述若干个步骤对应的代码作为热点代码进行即时编译;确定已有的线程数量,并确定所述线程的工作状态,所述线程的工作状态至少包括空闲状态及占用状态;将所述线程分配给所述若干个步骤,用以执行对应的步骤,以生成中间数据;将所述中间数据推送至队列中,以使按照所述步骤顺序的下一个步骤对应的所述线程通过调用所述中间数据,执行所述下一个步骤。
43.本技术实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
44.确定数据转换任务,所述数据转换任务用于将来源数据的数据结构转换为目标数据的数据结构;确定所述数据转换任务需要执行的若干个步骤及所述若干个步骤之间的步骤顺序;将所述若干个步骤对应的代码作为热点代码进行即时编译;确定已有的线程数量,并确定所述线程的工作状态,所述线程的工作状态至少包括空闲状态及占用状态;将所述线程分配给所述若干个步骤,用以执行对应的步骤,以生成中间数据;将所述中间数据推送至队列中,以使按照所述步骤顺序的下一个步骤对应的所述线程通过调用所述中间数据,执行所述下一个步骤。
45.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
46.本技术实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
47.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
48.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
49.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
50.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
51.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
52.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
53.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
54.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
55.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献