1.本发明实施例涉及大数据技术领域,具体而言,涉及一种数据的加载方法、装置、存储介质及电子装置。
背景技术:
2.随着信息时代的到来,数据的规模也越来越大,对内存的依赖也越来越强烈,集群的规模也是越来越大。spark作为大数据处理引擎,是大数据应用领域流行的计算框架,其中以图搜图,以车搜车,同行人等绝大部分大数据应用场景的特点,是时间与数据价值强相关,即越新的数据价值越高。在人流量、车流量改变、摄像头路数增减等情况下,容易造成内存溢出的问题,程序容易出现性能下降,任务结果不准,甚至功能异常等各种情况,针对各种突发情况,程序的稳定性和性能受到极大考验。即相关技术中存在着数据较大时容易造成内存溢出及程序性能下降的问题。
3.针对相关技术中存在的数据较大时容易造成内存溢出从而导致程序性能下降的问题,目前尚未提出有效的解决方案。
技术实现要素:
4.本发明实施例提供了一种数据的加载方法、装置、存储介质及电子装置,以至少解决相关技术中存在的数据较大时容易造成内存溢出从而导致程序性能下降的问题。
5.根据本发明的一个实施例,提供了一种数据的加载方法,包括:在接收到启动指令的情况下,对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作,其中,所述启动指令用于指示将目标数据加载到目标内存中,所述目标数据包括所述第一目标数据;在确定完成所述第一加载操作的情况下,基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作,其中,所述第二目标数据包括当前所述目标存储器中存储的数据相对于在执行所述第一加载操作之前所述目标存储器中所存储的数据的增量数据。
6.在一个示例性实施例中,基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作包括:确定所述第二目标数据所需占用的目标容量;判断所述目标容量与所述目标内存当前剩余的容量之间是否满足第一预设条件;在确定所述目标容量与所述目标内存当前剩余的容量之间满足所述第一预设条件的情况下,对所述第二目标数据执行所述第二加载操作。
7.在一个示例性实施例中,在判断所述目标容量与所述目标内存当前剩余的容量之间是否满足第一预设条件之后,所述方法还包括:在确定所述目标容量与所述目标内存当前剩余的容量之间不满足所述第一预设条件的情况下,按照预设方式持续清理所述目标内存;在确定所述目标容量与所述目标内存清理后所剩余的容量之间满足所述第一预设条件的情况下,对所述第二目标数据执行所述第二加载操作。
8.在一个示例性实施例中,按照预设方式持续清理所述目标内存包括以下至少之一:按照预定时间跨度粒度持续清理所述目标内存;按照预定时间顺序持续清理所述目标
内存。
9.在一个示例性实施例中,基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作包括:基于所述目标内存当前剩余的容量按照预设周期对第二目标数据执行第二加载操作。
10.在一个示例性实施例中,在对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作之后,所述方法还包括:记录对所述第一目标数据执行所述第一加载操作的第一时间跨度信息,其中,所述第一时间跨度信息中包括的截止时间为开始执行所述第一加载操作的时间;在基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作之后,所述方法还包括:记录对所述第二目标数据执行所述第二加载操作的第二时间跨度信息,其中,所述第二时间跨度信息中包括的起始时间为所述第一时间跨度信息中所包括的所述截止时间。
11.在一个示例性实施例中,对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作包括:获取时间跨度配置信息,其中,所述时间跨度配置信息用于指示生成所述目标数据的时间跨度信息;基于所述时间跨度配置信息,确定所述第一加载操作的时间跨度粒度;按照所述时间跨度粒度将所述第一目标数据划分为一个或多个子目标数据;以所述时间跨度粒度为单位按照从后到先的顺序依次对一个或多个所述子目标数据执行所述第一加载操作,以将所述第一目标数据加载至所述目标内存中。
12.在一个示例性实施例中,所述方法还包括:针对所述第一目标数据中包括的每个所述子目标数据,均执行以下操作:在加载所述子目标数据之前,预估所述子目标数据的子目标容量;判断所述子目标容量与所述目标内存当前剩余的容量之间是否满足第二预设条件;在确定所述子目标容量与所述目标内存当前剩余的容量之间满足所述第二预设条件的情况下,将所述子目标数据加载到所述目标内存中;在确定所述子目标容量与所述目标内存当前剩余的容量之间不满足所述第二预设条件的情况下,停止执行所述第一加载操作,并将已加载到所述目标内存中的数据确定为所述第一目标数据。
13.在一个示例性实施例中,在基于目标内存容量对第二目标数据执行第二加载操作之后,所述方法还包括:合并所述目标内存中包括的多个弹性分布式数据集rdd,所述第二目标数据中包括多个所述rdd。
14.在一个示例性实施例中,在基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作之后,所述方法还包括:在确定所述目标存储器中的数据存在更新的情况下,按照第二预设规则将所述目标存储器中包括的更新后的时间跨度与所述第一目标数据的时间跨度相同的数据加载到所述目标内存中。
15.在一个示例性实施例中,在基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作之后,所述方法还包括:在接收到目标指令的情况下,对所述目标存储器中存储的第三目标数据按照所述第一预设规则执行所述第一加载操作,其中,所述目标指令是对时间跨度配置信息进行重置后所触发的指令。
16.根据本发明的另一个实施例,还提供了一种数据的加载装置,包括:第一加载模块,用于在接收到启动指令的情况下,对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作,其中,所述启动指令用于指示将目标数据加载到目标内存中,所述目标数据包括所述第一目标数据;第二加载模块,用于在确定完成所述第一加载操作的情
况下,基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作,其中,所述第二目标数据包括当前所述目标存储器中存储的数据相对于在执行所述第一加载操作之前所述目标存储器中所存储的数据的增量数据。
17.根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
18.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
19.通过本发明,通过对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作,以及在完成第一加载操作后,基于目标内存当前剩余的容量对目标存储器中在开始执行第一加载操作之后所产生的增量数据执行第二加载操作。实现了基于内存空间的余量加载数据以规避内存溢出的风险的目的。因此,解决了相关技术中存在的数据较大时容易造成内存溢出从而导致程序性能下降的问题,达到了提高程序性能稳定性的效果。
附图说明
20.图1是本发明实施例的数据的加载方法的移动终端硬件结构框图;
21.图2是根据本发明实施例的数据的加载方法的流程图;
22.图3是根据本发明具体实施例的数据的加载方法的流程图;
23.图4是根据本发明实施例的数据的加载装置的结构框图。
具体实施方式
24.下文中将参考附图并结合实施例来详细说明本发明的实施例。
25.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
26.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的数据的加载方法的移动终端硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
27.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据的加载方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不
限于互联网、企业内部网、局域网、移动通信网及其组合。
28.传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
29.在本实施例中提供了一种数据的加载方法,图2是根据本发明实施例的数据的加载方法的流程图,如图2所示,该流程包括如下步骤:
30.步骤s202,在接收到启动指令的情况下,对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作,其中,所述启动指令用于指示将目标数据加载到目标内存中,所述目标数据包括所述第一目标数据;
31.步骤s204,在确定完成所述第一加载操作的情况下,基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作,其中,所述第二目标数据包括当前所述目标存储器中存储的数据相对于在执行所述第一加载操作之前所述目标存储器中所存储的数据的增量数据。
32.通过上述步骤,通过对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作,以及在完成第一加载操作后,基于目标内存当前剩余的容量对目标存储器中在开始执行第一加载操作之后所产生的增量数据执行第二加载操作。实现了基于内存空间的余量加载数据以规避内存溢出的风险的目的。因此,解决了相关技术中存在的数据较大时容易造成内存溢出从而导致程序性能下降的问题,达到了提高程序性能稳定性的效果。
33.其中,上述步骤的执行主体可以为终端,或服务端,或后台处理系统,例如,后台处理设备,或后台管理设备、或后台处理模块等,或者为配置在存储设备上的具备人机交互能力的处理器,或者为具备类似处理能力的处理设备或处理单元等,但不限于此。下面以服务端执行上述操作为例(仅是一种示例性说明,在实际操作中还可以是其他的设备或模块来执行上述操作)进行说明:
34.在上述实施例中,服务端在接收到启动指令的情况下,对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作,以大数据应用场景为例,例如,用户希望将目标存储器中存储的预定时间跨度(如7天,或30天,或其它时间跨度)的数据进行对比或计算,例如,第一目标数据可以是前端摄像设备采集的音视频或图像数据等,上述启动指令可以是用户在终端或app端或web端执行操作所触发的指令,在接收到启动指令的情况下,服务端将第一目标数据加载到目标内存中,目标内存可以是spark内存或其它内存,即在接收到启动指令后,将第一目标数据(如接收到启动指令时刻之前的7天数据);当确定完成第一加载操作后,基于目标内存当前剩余的容量对第二目标数据执行第二加载操作,第二目标数据包括当前目标存储器中存储的在开始执行上述第一加载操作之后所产生的增量数据,即对新产生的增量数据执行第二加载操作,以将新产生的增量数据加载至目标内存中(如上述spark内存),在确定完成加载第一目标数据的基础上,还可实现加载最新的数据的目的,本实施例适用于大数据应用场景,尤其适用于时间维度强相关的大数据场景,实现了基于内存剩余的容量对大数据进行动态缓存的目的,以及进一步实现对缓存的大数据进行
处理的目的,避免了相关技术中存在的数据较大时容易造成内存溢出从而导致程序性能下降的问题,达到了提高程序性能稳定性的效果。
35.在一个可选的实施例中,基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作包括:确定所述第二目标数据所需占用的目标容量;判断所述目标容量与所述目标内存当前剩余的容量之间是否满足第一预设条件;在确定所述目标容量与所述目标内存当前剩余的容量之间满足所述第一预设条件的情况下,对所述第二目标数据执行所述第二加载操作。在本实施例中,在对第二目标数据执行第二加载操作时,先确定第二目标数据占用的目标容量,即预估第二目标数据所占用的内存资源,再判断目标容量与目标内存(如上述spark内存)当前剩余的容量之间是否满足第一预设条件,例如,第一预设条件为目标内存当前剩余的容量与目标容量之差(即加载后的剩余容量)不低于预设阈值,例如,预设阈值为目标内存最大容量的预定比例(如10%,或5%,或其它值),在确定目标容量与目标内存当前剩余的容量之间满足第一预设条件的情况下,对第二目标数据执行第二加载操作。通过本实施例,实现了基于目标内存当前剩余的容量对增量数据进行加载的目的,在确定不会造成内存溢出从而导致程序性能下降的同时,还实现了加载最新数据的目的。
36.在一个可选的实施例中,在判断所述目标容量与所述目标内存当前剩余的容量之间是否满足第一预设条件之后,所述方法还包括:在确定所述目标容量与所述目标内存当前剩余的容量之间不满足所述第一预设条件的情况下,按照预设方式持续清理所述目标内存;在确定所述目标容量与所述目标内存清理后所剩余的容量之间满足所述第一预设条件的情况下,对所述第二目标数据执行所述第二加载操作。在本实施例中,当确定目标容量与目标内存当前剩余的容量之间不满足第一预设条件的情况下,按照预设方式对目标内存(如上述spark内存)进行清理,直到确定目标容量与目标内存清理后所剩余的容量之间满足上述第一预设条件的情况下,才对第二目标数据执行第二加载操作,即在目标内存的剩余容量不够充足的情况下,对目标内存进行清理,以腾出足够的内存空间以实现加载最新数据的目的,例如,可按时间顺序先清理最早的数据,直至内存充足,或者,可按时间粒度对目标内存进行清理,例如,以天或月份为单位进行清理,可选地,在实际应用中,可以以天为单位并按时间顺序从早到晚(或从旧到新)清理数据,直至内存充足。通过本实施例实现了在内存空间不足的情况下对内存进行清理,以实现缓存时间强相关的大数据的目的。
37.在一个可选的实施例中,按照预设方式持续清理所述目标内存包括以下至少之一:按照预定时间跨度粒度持续清理所述目标内存;按照预定时间顺序持续清理所述目标内存。在本实施例中,可按时间跨度粒度对目标内存进行清理,例如,以天或月份为单位对目标内存进行清理,即清理整天的数据或清理整月的数据,直至内存充足;还可按照时间顺序对目标内存进行清理,例如,按照从早到晚(或从旧到新)的顺序清理目标内存中的数据,即将最旧的数据清理掉,保留下相对较新的数据;可选地,在实际应用中,在目标内存的剩余容量不足的情况下,可同时按照时间跨度粒度及时间顺序来清理目标内存。通过本实施例,实现了灵活对目标内存进行清理以实现存储新增数据的目的。
38.在一个可选的实施例中,基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作包括:基于所述目标内存当前剩余的容量按照预设周期对第二目标数据执行第二加载操作。在本实施例中,可按照预定周期对第二目标数据执行第二加载操作,例如,按照每隔5分钟或10分钟或其他时间周期性对第二目标数据(或增量数据,或新增数据)执
行第二加载操作,以实现将最新数据及时加载至目标内存(如上述spark内存)的目的,从而可利用最新数据及历史数据进行对比或计算的目的,对于时间与数据价值强相关的应用场景,越新的数据价值越高,本实施例对应的技术方案可实现最大程度满足用户需求的目的。
39.在一个可选的实施例中,在对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作之后,所述方法还包括:记录对所述第一目标数据执行所述第一加载操作的第一时间跨度信息,其中,所述第一时间跨度信息中包括的截止时间为开始执行所述第一加载操作的时间;在基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作之后,所述方法还包括:记录对所述第二目标数据执行所述第二加载操作的第二时间跨度信息,其中,所述第二时间跨度信息中包括的起始时间为所述第一时间跨度信息中所包括的所述截止时间。在本实施例中,在对第一目标数据执行第一加载操作之后,记录对第一目标数据执行第一加载操作的第一时间跨度信息,在实际应用中,服务端在接收到启动指令的情况下,例如,启动指令为用户在客户端或app端或web端执行操作所触发的指令,启动指令中包括用户设置的需要加载到内存的数据的时间跨度配置信息(如7天,或30天,或其它时间跨度),该配置表示从当前时间往前推,需要加载数据的时间跨度,即上述第一时间跨度信息中的截止时间为接收到启动指令开始执行第一加载操作的时间,而第一时间跨度信息中的起始时间为截止时间往前推时间跨度配置信息中所指示的时间(如上述7天),同理,在对第二目标数据执行第二加载操作之后,也记录对第二目标数据执行第二加载操作的第二时间跨度信息,第二时间跨度信息中的起始时间为上述第一时间跨度信息中的截止时间。通过本实施例,实现了在执行完第一加载操作、第二加载操作后记录数据加载的时间跨度信息的目的。
40.在一个可选的实施例中,对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作包括:获取时间跨度配置信息,其中,所述时间跨度配置信息用于指示生成所述目标数据的时间跨度信息;基于所述时间跨度配置信息,确定所述第一加载操作的时间跨度粒度;按照所述时间跨度粒度将所述第一目标数据划分为一个或多个子目标数据;以所述时间跨度粒度为单位按照从后到先的顺序依次对一个或多个所述子目标数据执行所述第一加载操作,以将所述第一目标数据加载至所述目标内存中。在本实施例中,对第一目标数据按照第一预设规则执行第一加载操作包括:基于时间跨度配置信息确定时间跨度粒度,例如,时间跨度配置信息为用户设置的要求加载7天或30天或其它天数的数据,此时可确定时间跨度粒度为1天,当然,在实际应用中,如果时间跨度配置所指示的时间跨度更长的话,例如要求加载1年或半年的数据,则可确定时间跨度粒度为1个月,再按照时间跨度粒度(如上述1天)将第一目标数据(例如,时间跨度配置为7天的数据)划分为多个子目标数据(即7个子目标数据),再按照从后到先的顺序(即倒序)循环加载该7个子目标数据,即将距离当前时间最近的数据先加载至目标内存,再以天为单位往前循环加载其它天的数据,直至数据全部加载完成,在实际应用中,若数据未加载完目标内存已达到预设阈值,预设阈值为目标内存最大容量的预定比例,例如,加载完6天的数据后,目标内存的剩余容量已不足目标内存最大容量的预定比例(如10%,或5%,或其它值),此时,可确保将较新的数据加载至目标内存中,以体现出越新的数据价值越高的应用目的,当然,在实际应用中,可通过清理内存的方式以实现将第一目标数据全部加载至目标内存的目的。通过本实施例,实现了基于时间跨度配置信息将第一目标数据加载至目标内存的目的。
41.在一个可选的实施例中,所述方法还包括:针对所述第一目标数据中包括的每个所述子目标数据,均执行以下操作:在加载所述子目标数据之前,预估所述子目标数据的子目标容量;判断所述子目标容量与所述目标内存当前剩余的容量之间是否满足第二预设条件;在确定所述子目标容量与所述目标内存当前剩余的容量之间满足所述第二预设条件的情况下,将所述子目标数据加载到所述目标内存中;在确定所述子目标容量与所述目标内存当前剩余的容量之间不满足所述第二预设条件的情况下,停止执行所述第一加载操作,并将已加载到所述目标内存中的数据确定为所述第一目标数据。在本实施例中,在对第一目标数据中包括的每个子目标数据(如前述7个子目标数据)均基于目标内存的剩余容量执行加载操作,具体操作如下:先确定子目标数据(或称为最小时间粒度的数据块)的子目标容量,即预估子目标数据需要占用的内存资源,再判断子目标容量与目标内存(如前述spark内存)当前剩余的容量之间是否满足第二预设条件,例如,第二预设条件为目标内存当前剩余的容量与目标容量之差(即加载后的剩余容量)不低于预设阈值,例如,预设阈值为目标内存最大容量的预定比例(如10%,或5%,或其它值),在确定子目标容量与目标内存当前剩余的容量之间满足第二预设条件的情况下,将子目标数据加载到目标内存中,在确定子目标容量与目标内存当前剩余的容量之间不满足第二预设条件的情况下,停止执行加载操作。通过本实施例,实现了基于目标内存当前剩余的容量依次对第一目标数据中所包括的每个子目标数据进行加载的目的,避免了相关技术中存在的数据较大时容易造成内存溢出从而导致程序性能下降的问题。
42.在一个可选的实施例中,在基于目标内存容量对第二目标数据执行第二加载操作之后,所述方法还包括:合并所述目标内存中包括的多个弹性分布式数据集rdd,所述第二目标数据中包括多个所述rdd。在本实施例中,可对目标内存中包括的多个rdd进行合并,在实际应用中,可定时对多个rdd进行合并,例如,每隔5小时或3小时对内存中存储数据的rdd进行合并,rdd为开始执行第一加载操作后所产生的增量数据,在对增量数据按照预定周期(例如5分钟)执行第二加载操作时,会产生很多个rdd,通过本实施例,可实现减少rdd数量以提升检索性能的效果。
43.在一个可选的实施例中,在基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作之后,所述方法还包括:在确定所述目标存储器中的数据存在更新的情况下,按照第二预设规则将所述目标存储器中包括的更新后的时间跨度与所述第一目标数据的时间跨度相同的数据加载到所述目标内存中。在本实施例中,当存储的数据存在修改或删除的操作的情况下,可将更新后的数据加载到目标内存中,例如,可通过全量加载的方式(对应于前述第一加载操作)将更新后的时间跨度与前述第一目标数据的时间跨度相同的数据(如前述7天的数据)加载到目标内存中,在实际应用中,还可定时在业务比较少的时间段执行全量加载,以更新目标内存中的数据,或者,还可通过主动触发的方式执行全量加载,以更新目标内存中的数据。通过本实施例,实现了在数据存在更新的情况下对更新后的数据执行全量加载以更新目标内存中的缓存数据的目的。
44.在一个可选的实施例中,在基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作之后,所述方法还包括:在接收到目标指令的情况下,对所述目标存储器中存储的第三目标数据按照所述第一预设规则执行所述第一加载操作,其中,所述目标指令是对时间跨度配置信息进行重置后所触发的指令。在本实施例中,在接收到目标指令时,例
如,目标指令为用户重新设置的数据加载时间跨度配置,例如,原来的时间跨度配置为7天,现在将时间跨度配置改为21天,此时可主动触发第一加载操作(例如全量加载的方式),将目标存储器中存储的第三目标数据加载到目标内存中,在实际应用中,此时,将阻塞增量加载流程(如前述第二加载操作),对第三目标数据执行加载操作,例如,将从当前时间往前推的第8天至第21天的数据通过全量加载的方式加载至目标内存中,全量加载完后,再将增量数据加载至目标内存中。
45.显然,上述所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。下面结合实施例对本发明进行具体说明。
46.本发明考虑到大数据的场景,时间的积累导致的数据量持续增长是一个很重要的方面,越新的数据,具有越高的使用价值,本发明实施例适用于时间维度强相关的大数据场景。按分配的内存资源,决定加载的数据量,其中包括全量流程和增量流程。
47.图3是根据本发明具体实施例的数据的加载方法的流程图,如图3所示,该流程包括以下步骤:
48.s302,程序启动,读取需要加载到内存的时间跨度配置,该配置表示从当前时间往前推,需要加载的数据的时间跨度;
49.s304,获取全量加载(对应于前述第一加载操作)最小时间跨度粒度(例如1天),在数据首次全量加载到内存(对应于前述目标内存,或前述spark内存)过程中,预估数据占用内存资源,内存足够则按时间倒序循环加载最小时间粒度的数据块(对应于前述子目标数据),即分段进行全量加载,更新剩余内存大小记录;
50.s306,如发现数据加载完,则结束加载;
51.s308,如内存使用达到阈值,或内存不够,则停止加载;
52.s310,记录数据加载时间跨度,更新剩余内存大小记录,程序启动完成;
53.需要说明的是,上述步骤s306、s308不分先后顺序,满足任意一个条件,则结束加载,进入步骤s310,程序启动完成;
54.s312,增量加载(对应于前述第二加载操作)为定时加载(例如5分钟),即通过定时触发增量加载流程,在上述程序启动完成后开始执行;
55.s314,预估数据占用内存资源,在剩余内存(对应于前述目标内存当前剩余的容量)不足的情况下循环清理最早最小时间粒度(例如1天)的数据,直到腾出足够内存空间后,加载该部分数据,即清理掉足够量的最老数据,继续加载,直至增量加载完成;
56.s316,内存充足时则直接加载,直至增量加载完成,更新记录的数据加载时间跨度,更新剩余内存大小记录;
57.s318,增量加载完成后,可执行内存计算任务。
58.进一步地,在完成上述步骤后,还可定时合并(例如5小时)内存中存储数据的rdd,更新剩余内存大小记录,减少rdd数量可提升检索性能。
59.进一步地,在完成上述步骤后,如存在数据修改或删除的操作,可定时(例如1天)在业务比较少的时间段执行全量加载,更新缓存数据。
60.进一步地,在完成上述步骤后,还可主动触发全量加载,主要解决在程序不重启的情况下,支持重新设置数据加载时间跨度,阻塞增量加载流程,进行全量加载,全量加载流程完成后,加载全量加载过程中阻塞的增量数据,然后启动增量流程。
61.通过本发明实施例,基于剩余内存决定加载的数据,一方面保证了资源的充分利用,另一方面保证了程序的稳定运行;通过分别执行全量流程和增量流程,使得新增的数据可以在分钟时间尺度内参与内存计算;在越新的数据价值越高的场景下,基本不降低结果有效性的同时,可达到有效提升程序性能的效果。
62.在上述实施例中,基于时间敏感的大数据场景,在优先保证功能的情况下(基于内存空间加载数据规避内存溢出风险),性能不打折扣(纯内存计算),基于时间维度的优先级设定,实现智能内存动态管理,可达到有效提升系统稳定性的效果,在现有资源情况下最大程度满足用户需求。
63.与现有技术相比,本发明实施例可达到如下效果:用户不用担心因数据量增加导致的服务异常问题;服务器的缓存资源使用情况是实时监控的,在保证程序运行正常的情况下,可以保证资源的充分利用;全量加载数据按时间新旧顺序加载数据,当内存不够加载全部数据时,保证了内存中是最新的数据,本发明实施例中认为越新的数据价值量越大,在程序保证功能提供的前提下,提供最大的数据价值;在数据突然增加的情况下,在保证程序正常运行的情况下,可以充分使用内存资源,程序的稳定性不应该预设用户知晓摄像头路数增加、人流量、车流量激增等场景,需人为调整加载数据时间跨度,本发明实施例中增加了程序应对多种场景的稳定性;在增量加载数据而内存不足的情况下,删除最老的数据,腾出足够内存空间后加载数据,在程序保证功能提供的前提下,提供最大的数据价值;在越新的数据价值越高的场景下,只选择已加载到内存的数据进行计算(不压缩,也不读取磁盘),一方面基于更有价值的数据返回更有价值的结果,另一方面提高了程序性能。
64.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
65.在本实施例中还提供了一种数据的加载装置,图4是根据本发明实施例的数据的加载装置的结构框图,如图4所示,该装置包括:
66.第一加载模块402,用于在接收到启动指令的情况下,对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作,其中,所述启动指令用于指示将目标数据加载到目标内存中,所述目标数据包括所述第一目标数据;
67.第二加载模块404,用于在确定完成所述第一加载操作的情况下,基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作,其中,所述第二目标数据包括当前所述目标存储器中存储的数据相对于在执行所述第一加载操作之前所述目标存储器中所存储的数据的增量数据。
68.在一个可选的实施例中,上述第二加载模块404包括:第一确定单元,用于确定所述第二目标数据所需占用的目标容量;第一判断单元,用于判断所述目标容量与所述目标内存当前剩余的容量之间是否满足第一预设条件;第一执行单元,用于在确定所述目标容量与所述目标内存当前剩余的容量之间满足所述第一预设条件的情况下,对所述第二目标数据执行所述第二加载操作。
69.在一个可选的实施例中,上述装置还包括:清理模块,用于在判断所述目标容量与所述目标内存当前剩余的容量之间是否满足第一预设条件之后,且在确定所述目标容量与所述目标内存当前剩余的容量之间不满足所述第一预设条件的情况下,按照预设方式持续清理所述目标内存;第一执行模块,用于在确定所述目标容量与所述目标内存清理后所剩余的容量之间满足所述第一预设条件的情况下,对所述第二目标数据执行所述第二加载操作。
70.在一个可选的实施例中,上述清理模块可按以下方式至少之一清理所述目标内存:按照预定时间跨度粒度持续清理所述目标内存;按照预定时间顺序持续清理所述目标内存。
71.在一个可选的实施例中,上述第二加载模块404包括:第二执行单元,用于基于所述目标内存当前剩余的容量按照预设周期对第二目标数据执行第二加载操作。
72.在一个可选的实施例中,上述装置还包括:第一记录模块,用于在对目标存储器中存储的第一目标数据按照第一预设规则执行第一加载操作之后,记录对所述第一目标数据执行所述第一加载操作的第一时间跨度信息,其中,所述第一时间跨度信息中包括的截止时间为开始执行所述第一加载操作的时间;第二记录模块,用于在基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作之后,记录对所述第二目标数据执行所述第二加载操作的第二时间跨度信息,其中,所述第二时间跨度信息中包括的起始时间为所述第一时间跨度信息中所包括的所述截止时间。
73.在一个可选的实施例中,上述第一加载模块402包括:获取单元,用于获取时间跨度配置信息,其中,所述时间跨度配置信息用于指示生成所述目标数据的时间跨度信息;第二确定单元,用于基于所述时间跨度配置信息,确定所述第一加载操作的时间跨度粒度;划分单元,用于按照所述时间跨度粒度将所述第一目标数据划分为一个或多个子目标数据;第三执行单元,用于以所述时间跨度粒度为单位按照从后到先的顺序依次对一个或多个所述子目标数据执行所述第一加载操作,以将所述第一目标数据加载至所述目标内存中。
74.在一个可选的实施例中,上述装置还包括:第二执行模块,用于针对所述第一目标数据中包括的每个所述子目标数据,均执行以下操作:在加载所述子目标数据之前,预估所述子目标数据的子目标容量;判断所述子目标容量与所述目标内存当前剩余的容量之间是否满足第二预设条件;在确定所述子目标容量与所述目标内存当前剩余的容量之间满足所述第二预设条件的情况下,将所述子目标数据加载到所述目标内存中;在确定所述子目标容量与所述目标内存当前剩余的容量之间不满足所述第二预设条件的情况下,停止执行所述第一加载操作,并将已加载到所述目标内存中的数据确定为所述第一目标数据。
75.在一个可选的实施例中,上述装置还包括:合并模块,用于在基于目标内存容量对第二目标数据执行第二加载操作之后,合并所述目标内存中包括的多个弹性分布式数据集rdd,所述第二目标数据中包括多个所述rdd。
76.在一个可选的实施例中,上述装置还包括:第三加载模块,用于在基于所述目标内存当前剩余的容量对第二目标数据执行第二加载操作之后,且在确定所述目标存储器中的数据存在更新的情况下,按照第二预设规则将所述目标存储器中包括的更新后的时间跨度与所述第一目标数据的时间跨度相同的数据加载到所述目标内存中。
77.在一个可选的实施例中,上述装置还包括:第三执行模块,用于在基于所述目标内
存当前剩余的容量对第二目标数据执行第二加载操作之后,且在接收到目标指令的情况下,对所述目标存储器中存储的第三目标数据按照所述第一预设规则执行所述第一加载操作,其中,所述目标指令是对时间跨度配置信息进行重置后所触发的指令。
78.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
79.本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
80.在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
81.本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
82.在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
83.本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
84.显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
85.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
转载请注明原文地址:https://tc.8miu.com/read-2445.html