实时数据处理方法、装置及设备与流程

文档序号:24407598发布日期:2021-03-26 17:57阅读:136来源:国知局
实时数据处理方法、装置及设备与流程

1.本公开实施例涉及金融科技(fintech)的数据处理技术领域,尤其涉及一种实时数据处理方法、装置及设备。


背景技术:

2.随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(fintech)转变,实时数据处理技术也不例外,但由于金融行业的安全性、实时性要求,也对实时数据处理技术提出了更高的要求。
3.目前,现有的实时数据处理框架,主要是采用的flink架构,其主要处理流程为:对于每一条实时数据登记对应的水位线(watermark),在后续的数据处理过程中,通过水位线进行时序判断,并将实时数据的处理数据结果状态存储到内存或本地或引入rocksdb进行存储。
4.然而,发明人发现现有技术至少存在如下技术问题:flink架构中是采用flink封装模式对数据结果状态进行封装的,该封装模型下数据结果状态是无法修改,也是无法查询的,因此现有技术中得到的数据结果状态是固定无法变更的。而当实时数据的处理出现错误时,由于数据结果状态无法变更,会造成实时数据处理存在不准确性。


技术实现要素:

5.本公开实施例提供一种实时数据处理方法、装置及设备,以克服现有技术中数据结果状态无法变更,造成实时数据处理存在不准确性的问题。
6.第一方面,本公开实施例提供一种实时数据处理方法,包括:
7.获取任一实时数据,并确定所述实时数据的数据时间;
8.根据所述数据时间确定所述实时数据所属的时间窗口,并将所述实时数据对应的明细数据保存至数据库中所述时间窗口对应的明细数据集中;
9.若所述实时数据为数据时间满足预设触发条件的实时数据,则从所述数据库中获取所述时间窗口对应的明细数据集,并调用窗口函数对所述时间窗口对应的明细数据集进行函数计算,得到计算结果数据;
10.在所述数据库中的窗口计算数据中保存所述计算结果数据;
11.若确定所述窗口计算数据中的计算结果数据为执行失败,则重新从所述数据库中获取所述时间窗口对应的明细数据集,并重新调用窗口函数对所述时间窗口对应的明细数据集进行计算,得到校正后的计算结果数据。
12.在一种可能的设计中,所述窗口计算数据包括计算结果数据表和窗口函数键值索引表,其中所述计算结果数据存储在所述计算结果数据表中;所述在所述数据库中的窗口计算数据中保存所述计算结果数据之后,还包括:接收用户端发送的状态查看请求,其中所述状态查看请求中包含窗口函数键值;根据所述窗口函数键值查询所述窗口函数键值索引表得到索引结果,并根据索引结果从所述计算结果数据表中得到对应的计算结果数据;将
所述对应的计算结果数据发送至所述用户端展示。
13.在一种可能的设计中,所述将所述实时数据对应的明细数据保存至数据库中所述时间窗口对应的明细数据集中,包括:将所述实时数据保存至数据库中的所述时间窗口对应的当前数据明细表中,并在所述时间窗口对应的窗口索引表中记录所述明细数据的索引信息。
14.在一种可能的设计中,所述将所述实时数据保存至数据库中的所述时间窗口对应的数据明细表中之后,还包括:当根据所述窗口索引表的索引信息确定所述当前数据明细表中的数据量大于设定阈值时,建立新增数据明细表作为新的的当前数据明细表;当接收到属于所述时间窗口的新的实时数据时,将所述新的实时数据对应的明细数据保存至所述新的当前数据明细表中;在所述窗口索引表中增加所述新的当前数据明细表的索引信息。
15.在一种可能的设计中,所述从所述数据库中获取所述时间窗口对应的明细数据集,并调用窗口函数对所述时间窗口对应的明细数据集进行计算,包括:确定所述时间窗口的起始水位线和结束水位线对应的分值区间;根据所述分值区间查询所述窗口索引表以获取目标索引信息;根据所述目标索引信息从所述数据明细表中获取对应的明细数据集;按照执行器数量对所述明细数据进行拆分,并通过spark工作进程以调用窗口函数对所述明细数据进行分布式窗口计算。
16.在一种可能的设计中,若所述时间窗口的窗口时间单位大于秒级;所述将所述实时数据对应的明细数据保存至数据库中所述时间窗口对应的明细数据集中之后,还包括:每隔第一预设时间间隔对所述时间窗口对应的明细数据集进行函数计算,得到计算结果数据,并将计算结果数据存储至数据库中。
17.在一种可能的设计中,还包括:在预设时刻将所述时间窗口最新计算得到的计算结果数据与所述时间窗口的所有的历史计算结果数据汇总得到汇总的计算结果数据;获取所述数据库中的汇总的计算结果数据;通过调用各窗口函数对所述汇总的计算结果数据重新计算,以对汇总的计算结果数据进行校验。
18.在一种可能的设计中,所述根据所述数据时间确定所述实时数据所属的时间窗口之后,还包括:若所述实时数据隶匹配多个时间窗口,则将所述实时数据进行拆分,将拆分后的实时数据分别保存至多个时间窗口对应的明细数据集中。
19.在一种可能的设计中,所述确定所述实时数据的数据时间:若所述实时数据包含事件时间,则将所述事件时间确定为数据时间;若所述实时数据不包含事件时间,则将当前系统时间确定所述数据时间。
20.在一种可能的设计中,还包括:每隔第二预设时间间隔将数据库中的各时间窗口对应的明细数据集转存至外部存储库中,并清理数据库中的各时间窗口对应的明细数据。
21.在一种可能的设计中,还包括:每隔第三预设时间间隔获取所述外部存储库中获取目标时间窗口的所有明细数据,其中所述目标时间窗口的窗口时间单位大于日级;通过调用各窗口函数对所述所有明细数据重新计算,以对所有明细数据的计算结果进行校验,并将得到的校验结果保存至数据库中的窗口计算数据。
22.在一种可能的设计中,所述计算结果数据中包括计算状态信息;所述确定所述窗口计算数据中的计算结果数据为执行失败,包括:若所述计算结果数据中的计算状态信息为计算错误或计算超时,则确定所述窗口计算数据中的计算结果数据为执行失败。
23.第二方面,本公开实施例提供一种实时数据处理装置,包括:
24.获取模块,用于获取任一实时数据,并确定所述实时数据的数据时间;
25.第一存储模块,用于根据所述数据时间确定所述实时数据所属的时间窗口,并将所述实时数据对应的明细数据保存至数据库中所述时间窗口对应的明细数据集中;
26.计算模块,用于若所述实时数据为数据时间满足预设触发条件的实时数据,则从所述数据库中获取所述时间窗口对应的明细数据集,并调用窗口函数对所述时间窗口对应的明细数据集进行函数计算,得到计算结果数据;
27.第二存储模块,用于在所述数据库中的窗口计算数据中保存所述计算结果数据;
28.校正模块,用于若确定所述窗口计算数据中的计算结果数据为执行失败,则重新从所述数据库中获取所述时间窗口对应的明细数据集,并重新调用窗口函数对所述时间窗口对应的明细数据集进行计算,得到校正后的计算结果数据。
29.第三方面,本公开实施例提供一种服务端设备,包括:至少一个处理器和存储器;
30.所述存储器存储计算机执行指令;
31.所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的实时数据处理方法。
32.第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的实时数据处理方法。
33.第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的实时数据处理方法。
34.本公开实施例提供的实时数据处理方法、装置及设备,由于数据库中存储有对应的明细数据和窗口计算结果数据,如果通过所述窗口计算数据确定计算结果数据为执行失败,可以重新从所述数据库中获取所述时间窗口对应的明细数据集,并重新调用窗口函数对所述时间窗口对应的明细数据集进行计算,得到重新计算的窗口计算数据,从而实现微批量地对实时数据的计算结果数据的校正修改,以保证实时数据处理的准确性。
附图说明
35.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
36.图1为本公开实施例提供的实时数据处理应用的场景示意图;
37.图2为本公开实施例提供的实时数据处理方法的流程示意图一;
38.图3为本公开实施例提供的实时数据处理方法的流程示意图二;
39.图4为本公开实施例提供的实时数据处理装置的结构示意图;
40.图5为本公开实施例提供的服务端设备的硬件结构示意图。
具体实施方式
41.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
42.目前,传统的flink实时流处理框架中,是采用flink封装模式对数据结果状态进行封装的,该封装模型下数据结果状态是无法修改,也是无法查询的。因此,现有技术中得到的数据结果状态是固定无法变更的,而当实时数据的处理出现错误时,由于数据结果状态无法变更,会造成实时数据处理存在不准确性。
43.为了解决上述技术问题,本公开提供了以下解决思路:将实时数据的明细数据存储在处理单元的明细数据集中,若所述实时数据为数据时间满足预设触发条件的实时数据,则从所述数据库中获取所述时间窗口对应的明细数据集,并调用窗口函数对所述时间窗口对应的明细数据集进行计算,得到计算结果数据;在所述数据库中保存所述计算结果数据。由于数据库中存储有对应的明细数据和计算结果数据,如果确定计算结果数据为执行失败,则重新从所述数据库中获取所述时间窗口对应的明细数据集,并重新调用窗口函数对所述时间窗口对应的明细数据集进行计算,得到重新计算的计算结果数据,从而实现微批量地对实时数据的计算结果数据的校正,以保证实时数据处理的准确性。
44.图1为本公开实施例提供的实时数据处理应用的场景示意图。如图1所示,本实施例提供的系统包括用户端101和服务端102。其中,用户端101可以为手机、平板、个人电脑等。本实施例对用户端101的实现方式不做特别限制,只要该用户端101可以查询服务端上的数据。服务端102可以一台服务器或几台服务器组成的集群。
45.在本公开实施例中,实时数据可以应用到各种需要进行数据集批处理、交互式处理和流式处理的场景中。例如,可以是金融平台用户的访问实时数据、浏览数据,也可以电商平台的订单数据、网页数据等等,这些数据是需要实时地进行处理的数据。
46.图2为本公开实施例提供的实时数据处理方法的流程示意图一,本实施例的执行主体可以为图1所示的服务端,本实施例此处不做特别限制。如图2所示,该方法包括:
47.s201:获取任一实时数据,并确定实时数据的数据时间。
48.在本公开实施例中,可以接收kafka平台或flume系统实时发送的实时数据。
49.具体地,确定实时数据的数据时间,可以包括:若所述实时数据包含事件时间,则将所述事件时间确定为数据时间;若所述实时数据不包含事件时间,则将当前系统时间确定为所述数据时间。
50.其中,事件时间指的是实时数据的事件发生于产生设备上的本地时间。
51.当前系统时间为服务端系统的系统时间。
52.s202:根据数据时间确定实时数据所属的时间窗口,并将实时数据对应的明细数据保存至数据库中时间窗口对应的明细数据集中。
53.其中,所述时间窗口是用户通过窗口函数设定窗口时间单位和窗口步长确定的。可以通过spark streaming框架提供的窗口函数(window函数),用户可以通过该窗口函数定义不同的时间窗口,包括窗口函数设定各时间窗口的窗口时间单位和窗口步长。可以通过窗口函数定义不同时间级别的时间窗口。
54.在本公开实施例中,可以根据数据时间确定该实时数据的时间级别(例如可以是时间单位),然后根据该实时数据的时间级别确定时间级别对应的时间窗口。
55.例如,时间级别可以包括:秒、分、时、日、周、月、年等统计单位。即实时数据可以是秒、分、时、日、周、月、年级别的实时数据;时间窗口可以是秒、分、时、日、周、月、年级别的时间窗口。
56.明细数据集中保存了该实时数据以及已经获取的属于该时间窗口的其他实时数据。
57.具体地,将实时数据对应的明细数据保存至数据库中时间窗口对应的明细数据集中,包括:将所述实时数据保存至数据库中的所述时间窗口对应的当前数据明细表中,并在所述时间窗口对应的窗口索引表中记录所述明细数据的索引信息。
58.其中,实时数据对应的明细数据包括实时数据本身以及该实时数据对应的数据时间、水位线等明细信息。这里,对应的当前数据明细表的表名可以是时间窗口单位+步长+水位线组合的表名。
59.这里,窗口索引表中记录所述明细数据的索引信息,用于后续进行窗口函数计算时获取对应的明细数据。
60.其中,所述数据库包括以下至少一种:hbase、rockdb、memcached db、redis。
61.需要说明的是:对于延迟的实时数据,不属于该时间窗口的数据,直接丢弃。
62.明细数据集可以对应应数据库的一个或多个的存储单元。
63.在本公开的一个实施例中,所述根据所述数据时间确定所述实时数据所属的时间窗口之后,还包括:若所述实时数据隶匹配多个时间窗口,则将所述实时数据进行拆分,将拆分后的实时数据分别保存至多个时间窗口对应的明细数据集中。其中,可以采用flatmap对数据进行拆分。通过多个时间窗口并行处理,增加数据处理的并行度,提高数据处理效率,提升实时性。
64.s203:若实时数据为数据时间满足预设触发条件的实时数据,则从数据库中获取时间窗口对应的明细数据集,并调用窗口函数对时间窗口对应的明细数据集进行函数计算,得到计算结果数据。
65.在本实施例中,实时数据为数据时间满足预设触发条件的实时数据,包括:根据实时数据的数据时间,查询所述数据时间对应的所属时间窗口的水位线;若水位线为触发当前时间窗口进行窗口计算的水位线,则确定实时数据为数据时间满足预设触发条件的实时数据。
66.其中,数据库可以是redis数据库。由于查询数redis据库可能存储多个时间窗口,可以使用redis数据库的zset(有序集合)对实时数据进行有序存储。具体地。将redis数据库的数据明细表中的水位线的值设置为分值,由小到大进行排序。
67.具体地,查询所述数据时间对应的所属时间窗口的水位线,可以包括:从最小的分值的水位线开始查询,当数据时间的超过当前查询的水位线的分值时,继续按照由小到大进行排序进行查询。如果数据时间的超过时间窗口的水位线的分值时,新建当前水位线加上窗口时间后的时间为新的水位线。当数据时间不超过水位线的分值时,确定该水位线为数据时间对应的所属时间窗口的水位线。这里,数据库可以是redis数据库时,使用setnx进行原子化更新为当前水位线加上窗口时间后的时间为新的水位线
68.其中,水位线为触发当前时间窗口进行窗口计算的水位线,指的是水位线为当前时间窗口的窗口的结束时间的水位线。
69.如果,位线为触发当前时间窗口进行窗口计算的水位线,则说明抢占锁成功,触发时间窗口进行函数计算。
70.具体地,从所述数据库中获取所述时间窗口对应的明细数据集,并调用窗口函数对所述时间窗口对应的明细数据集进行计算,包括:确定所述时间窗口的起始水位线和结束水位线对应的分值区间;根据所述分值区间查询所述窗口索引表以获取目标索引信息;根据所述目标索引信息从所述数据明细表中获取对应的明细数据集;按照执行器数量对所述明细数据进行拆分,并通过spark工作进程以调用窗口函数对所述明细数据进行分布式窗口计算。
71.其中,触发时间窗口进行函数计算时,首先建立一个spark工作进程(spark job),利用spark rdd(resilient distributed dataset,弹性的分布式数据集合计算模型)可分布式窗口计算。
72.可知,通过rdd处理过程中,按照执行器(executor)对明细数据集进行拆分,达到最大性能避免数据倾斜,提高计算效率。
73.s204:在数据库中的窗口计算数据中保存计算结果数据。
74.在本实施例中,计算结果数据可以通过数据表的形式保存在窗口计算数据。
75.其中,数据库中的窗口计算数据可以对应数据库的一个或多个的存储单元,与明细数据集的存储单元相互独立分隔,以保证数据的独立性和安全性。
76.需要说明的是:当数据库是redis数据库时,可以通过使用setnx实现计算结果数据的有序存储。
77.s205:若确定窗口计算数据中的计算结果数据为执行失败,则重新从数据库中获取时间窗口对应的明细数据集,并重新调用窗口函数对时间窗口对应的明细数据集进行计算,得到校正后的计算结果数据。
78.在本发明的一个实施例中,计算结果数据中包括计算状态信息;所述确定所述窗口计算数据中的计算结果数据为执行失败,包括:若所述计算结果数据中的计算状态信息为计算错误或计算超时,则确定所述窗口计算数据中的计算结果数据为执行失败。
79.其中,每个窗口函数完成对应的函数计算后,得到一个计算结果数据,计算结果数据中包括该窗口函数计算时的计算状态信息,该计算状态信息包括三种状态:计算错误、计算超时或计算成功。如果计算状态信息为计算错误或计算超时,则确定所述窗口计算数据中的计算结果数据为执行失败。如果如果计算状态信息为计算成功,则确定所述窗口计算数据中的计算结果数据为执行成功。
80.需要说明的是,确定窗口计算数据中的计算结果数据为执行失败,可以是用户端访问该窗口计算数据确定的,也可以是服务端自检确定的,对此本公开不作任何限制。
81.从上述描述可知,由于数据库中存储有对应的明细数据和窗口计算结果数据,如果通过所述窗口计算数据确定计算结果数据为执行失败,可以重新从所述数据库中获取所述时间窗口对应的明细数据集,并重新调用窗口函数对所述时间窗口对应的明细数据集进行计算,得到重新计算的窗口计算数据,从而实现微批量地对实时数据的计算结果数据的校正修改,以保证实时数据处理的准确性。
82.图3为本公开实施例提供的实时数据处理方法的流程示意图二,本实施例在图2实施例的基础上,本实施例中的窗口计算数据包括计算结果数据表和窗口函数键值索引表,其中所述计算结果数据存储在所述计算结果数据表中。用户可以通过查询窗口计算数据获取函数计算的计算结果数据,以得知实时数据处理过程中的计算状态。因此,本实施例对用户对计算结果数据进行查询的过程进行了详细描述。如图3所示,该方法包括:
83.s301:接收用户端发送的状态查看请求,其中状态查看请求中包含窗口函数键值。
84.在本公开实施例中,用户端为使用实时数据处理的服务端的使用者的终端。
85.s302:根据窗口函数键值查询窗口函数键值索引表得到索引结果,并根据索引结果从计算结果数据表中得到对应的计算结果数据。
86.s303:将对应的计算结果数据发送至所述用户端展示。
87.在本公开实施例中,用户可以通过状态查看请求,轮询计算结果数据,以查看当前正在计算的时间窗口的实时计算结果数据,也可以通过状态查看请求查看已经完成计算的时间窗口的计算结果数据,来获取各种实时数据处理过程中的计算状态。
88.从上述描述可知,现有的flink实时流处理框架中,是无法实现实时数据处理过程中的计算状态的查询;而本公开实施例中,对实时数据进行微批量的计算并保存对应的计算结果数据,能够实现用户对微批量的计算过程中,实时数据的状态进行查询,满足用户的状态查询的使用需求。
89.在本公开的一个实施例中,在步骤s202将所述实时数据保存至数据库中的所述时间窗口对应的数据明细表中之后,还包括:
90.当根据所述窗口索引表的索引信息确定所述当前数据明细表中的数据量大于设定阈值时,建立新增数据明细表作为新的的当前数据明细表;
91.当接收到属于所述时间窗口的新的实时数据时,将所述新的实时数据对应的明细数据保存至所述新的当前数据明细表中;
92.在所述窗口索引表中增加所述新的当前数据明细表的索引信息。
93.其中,设定阈值可以根据实际需求进行设置,可选的,设定阈值为5000。
94.例如,当数据库为redis数据库时,当前存储实时数据的当前数据明细表为表1,当通过窗口索引表的索引信息确定表1中数据量大于5000时,自动进行拆分,新增表2为新的当前数据明细表,用于存储获取的该时间窗口的实时数据。
95.从上述描述可知,通过自动对时间窗口的数据明细表进行拆分,避免存在较大的数据明细的情况,降低数据明细表维护成本,提升数据稳定性。
96.在本公开的一个实施例中,若所述时间窗口的窗口时间单位大于秒级,即时间窗口的窗口时间单位为分、时、日、周、月、年等统计单位。在上述实例的基础上,在步骤s202将所述实时数据对应的明细数据保存至数据库中所述时间窗口对应的明细数据集中之后,所述方法还包括:
97.每隔第一预设时间间隔对所述时间窗口对应的明细数据集进行函数计算,得到计算结果数据,并将计算结果数据存储至数据库中。
98.在本公开实施例中,对于窗口时间单位为分、时的时间窗口。设置定时器,第一预设时间间隔以分钟为单位对时间窗口对应的明细数据集进行函数计算,得到计算结果数据,并将计算结果数据汇总后存储至数据库中。
99.对于窗口时间单位为日、周、月、年的时间窗口。设置定时器,第一预设时间间隔以日为单位对时间窗口对应的明细数据集进行函数计算,得到计算结果数据,并将计算结果数据汇总后存储至数据库中。
100.这样,由于数据库中只保存计算结果数据,避免大量数据的堆积,节省存储空间。
101.在本公开的一个实施例中,所述方法还包括;
102.在预设时刻将所述时间窗口最新计算得到的计算结果数据与所述时间窗口的所有的历史计算结果数据汇总得到汇总的计算结果数据;
103.获取所述数据库中的汇总的计算结果数据;
104.通过调用各窗口函数对所述汇总的计算结果数据重新计算,以对汇总的计算结果数据进行校验。
105.其中,预设时刻可以是日终时刻。对于汇总的计算结果数据采用与实时数据相同的校正方式,即重新进行函数计算,实现汇总计算结果数据的校正。
106.从上述描述可知,通过对于汇总的计算结果数据采用与实时数据相同的校正方式校正,避免开发两套校正代码的工作,减低了开发的工作量。
107.在本公开的一个实施例中,上述方法还包括:
108.每隔第二预设时间间隔将数据库中的各时间窗口对应的明细数据集转存至外部存储库中,并清理数据库中的各时间窗口对应的明细数据。
109.其中,第二预设时刻可以是每日。可以在每日日终,使用批量转存工具,将数据库中的明细数据集转存至外部存储库中。数据库可以是redis数据库,外部存储库可以是hive表。
110.具体地,清理数据库中的各时间窗口对应的明细数据,可以是:在跨日完整第一个窗口计算后,触发明细数据清理,直接清理上日的所有数据,日、周、月、年窗口,日切时,在日终的上日计算结果校准完成并推送数据库计算结果表后,清理数据库中的数据。
111.从上述描述可知,定时清理数据库中的各时间窗口对应的明细数据,以保证数据库的存储空间。
112.在本公开的一个实施例中,上述方法还包括:每隔第三预设时间间隔获取所述外部存储库中获取目标时间窗口的所有明细数据,其中所述目标时间窗口的窗口时间单位大于日级;
113.通过调用各窗口函数对所述所有明细数据重新计算,以对所有明细数据的计算结果进行校验,并将得到的校验结果保存至数据库中的窗口计算数据。
114.其中,第三预设时间间隔可以是每日。在本实施例中,对于日级别以上的窗口,由于跨度较大,存在丢失的可能性,会存在不准确,定期从数据源拉取上日全量数据,并使用数据覆盖存储库中上日日期分区的明细数据进行校准,同时触发计算结果校准,复用窗口计算函数逻辑,从储库中中查询出所有数据,进行重新计算,并将计算结果推送到数据库中的窗口计算数据中。
115.从上述描述可知,对于日级别以上的时间窗口的实时数据,由于跨度较大,存在丢失的可能性,会存在不准确,本实施例能够针对这些实时数据进行批量校正,进一步保证数据准确性。
116.图4为本公开实施例提供的实时数据处理装置的结构示意图。如图4所示,该实时
数据处理装置40包括:获取模块401、第一存储模块402、计算模块403、第二存储模块404和校正模块405。
117.其中,获取模块401,用于获取任一实时数据,并确定所述实时数据的数据时间;
118.第一存储模块402,用于根据所述数据时间确定所述实时数据所属的时间窗口,并将所述实时数据对应的明细数据保存至数据库中所述时间窗口对应的明细数据集中;
119.计算模块403,用于若所述实时数据为数据时间满足预设触发条件的实时数据,则从所述数据库中获取所述时间窗口对应的明细数据集,并调用窗口函数对所述时间窗口对应的明细数据集进行函数计算,得到计算结果数据;
120.第二存储模块404,用于在所述数据库中的窗口计算数据中保存所述计算结果数据;
121.校正模块405,用于若确定所述窗口计算数据中的计算结果数据为执行失败,则重新从所述数据库中获取所述时间窗口对应的明细数据集,并重新调用窗口函数对所述时间窗口对应的明细数据集进行计算,得到校正后的计算结果数据。
122.本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
123.在本公开的一个实施例中,所述窗口计算数据包括计算结果数据表和窗口函数键值索引表,其中所述计算结果数据存储在所述计算结果数据表中,所述装置还包括:查询模块406,用于接收用户端发送的状态查看请求,其中所述状态查看请求中包含窗口函数键值;根据所述窗口函数键值查询所述窗口函数键值索引表得到索引结果,并根据索引结果从所述计算结果数据表中得到对应的计算结果数据;将所述对应的计算结果数据发送至所述用户端展示。
124.在本公开的一个实施例中,所述第一存储模块402,具体用于将所述实时数据保存至数据库中的所述时间窗口对应的当前数据明细表中,并在所述时间窗口对应的窗口索引表中记录所述明细数据的索引信息。
125.在本公开的一个实施例中,所述第一存储模块402,还具体用于当根据所述窗口索引表的索引信息确定所述当前数据明细表中的数据量大于设定阈值时,建立新增数据明细表作为新的的当前数据明细表;当接收到属于所述时间窗口的新的实时数据时,将所述新的实时数据对应的明细数据保存至所述新的当前数据明细表中;在所述窗口索引表中增加所述新的当前数据明细表的索引信息。
126.在本公开的一个实施例中,所述计算模块403,具体用于确定所述时间窗口的起始水位线和结束水位线对应的分值区间;根据所述分值区间查询所述窗口索引表以获取目标索引信息;根据所述目标索引信息从所述数据明细表中获取对应的明细数据集;按照执行器数量对所述明细数据进行拆分,并通过spark工作进程以调用窗口函数对所述明细数据进行分布式窗口计算。
127.在本公开的一个实施例中,若所述时间窗口的窗口时间单位大于秒级;所述计算模块403,还用于:每隔第一预设时间间隔对所述时间窗口对应的明细数据集进行函数计算,得到计算结果数据,并将计算结果数据存储至数据库中。
128.在本公开的一个实施例中,所述校正模块405,还用于在预设时刻将所述时间窗口最新计算得到的计算结果数据与所述时间窗口的所有的历史计算结果数据汇总得到汇总
的计算结果数据;获取所述数据库中的汇总的计算结果数据;通过调用各窗口函数对所述汇总的计算结果数据重新计算,以对汇总的计算结果数据进行校验。
129.在本公开的一个实施例中,所述第一存储模块402,还用于若所述实时数据隶匹配多个时间窗口,则将所述实时数据进行拆分,将拆分后的实时数据分别保存至多个时间窗口对应的明细数据集中。
130.在本公开的一个实施例中,所述获取模块401,具体用于若所述实时数据包含事件时间,则将所述事件时间确定为数据时间;若所述实时数据不包含事件时间,则将当前系统时间确定所述数据时间。
131.在本公开的一个实施例中,所述装置还包括:转存模块407,用于每隔第二预设时间间隔将数据库中的各时间窗口对应的明细数据集转存至外部存储库中,并清理数据库中的各时间窗口对应的明细数据。
132.在本公开的一个实施例中,所述校正模块405,还用于每隔第三预设时间间隔获取所述外部存储库中获取目标时间窗口的所有明细数据,其中所述目标时间窗口的窗口时间单位大于日级;通过调用各窗口函数对所述所有明细数据重新计算,以对所有明细数据的计算结果进行校验,并将得到的校验结果保存至数据库中的窗口计算数据。
133.在本公开的一个实施例中,所述时间窗口是用户通过窗口函数设定窗口时间单位和窗口步长确定的。
134.在本公开的一个实施例中,所述数据库包括以下至少一种:hbase、rockdb、memcached db、redis。
135.本实施例提供的装置的各模块,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
136.图5为本公开实施例提供的服务端设备的硬件结构示意图。如图5所示,本实施例的服务端设备50包括:处理器501以及存储器502;其中
137.存储器502,用于存储计算机执行指令;
138.处理器501,用于执行存储器存储的计算机执行指令,以实现上述实施例中服务端所执行的各个步骤。具体可以参见前述方法实施例中的相关描述。
139.可选地,存储器502既可以是独立的,也可以跟处理器501集成在一起。
140.当存储器502独立设置时,该服务端设备还包括总线503,用于连接所述存储器502和处理器501。
141.本公开实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的实时数据处理方法。
142.本公开实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的实时数据处理方法。
143.在本公开所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连
接,可以是电性,机械或其它的形式。
144.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案。
145.另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
146.上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务端,或者网络设备等)或处理器执行本申请各个实施例所述方法的部分步骤。
147.应理解,上述处理器可以是中央处理单元(central processing unit,简称cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
148.存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。
149.总线可以是工业标准体系结构(industry standard architecture,简称isa)总线、外部设备互连(peripheral component interconnect,简称pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
150.上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
151.一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(application specific integrated circuits,简称asic)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
152.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
153.最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术
方案的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1