CN110471944A - 指标统计方法、系统、设备及存储介质 - Google Patents
指标统计方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN110471944A CN110471944A CN201810450749.4A CN201810450749A CN110471944A CN 110471944 A CN110471944 A CN 110471944A CN 201810450749 A CN201810450749 A CN 201810450749A CN 110471944 A CN110471944 A CN 110471944A
- Authority
- CN
- China
- Prior art keywords
- data
- value
- timestamp
- module
- indicator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000003860 storage Methods 0.000 title claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 159
- 238000004590 computer program Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 7
- 238000007619 statistical method Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 11
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 230000007547 defect Effects 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 241000208340 Araliaceae Species 0.000 description 2
- 241001269238 Data Species 0.000 description 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 2
- 235000003140 Panax quinquefolius Nutrition 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 235000008434 ginseng Nutrition 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 206010000234 Abortion spontaneous Diseases 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 208000015994 miscarriage Diseases 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 208000000995 spontaneous abortion Diseases 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于大数据处理框架的滑动窗口的指标统计方法、系统、设备及存储介质,指标统计方法使用mapWithState算子中的State对象存储若干参数,参数包括时间链表、时间链表的最小值、时间链表的最大值和指标统计值;指标统计方法包括以下步骤:大数据处理框架接收数据,每条数据包括待统计指标字段和对应的时间戳,时间链表用于按时间顺序存储数据的时间戳;将接收的最新的一条数据作为当前数据;根据当前数据的时间戳、当前数据的待统计指标字段及预设的时间窗口值更新时间链表、最小值、最大值和指标统计值,指标统计值通过复用计算得到。本发明通过复用已经计算过的统计值进而减少计算量、提高计算速度、减小延迟,能够更快地响应业务的统计需求。
Description
技术领域
本发明涉及大数据的指标统计领域,特别涉及一种基于大数据处理框架的滑动窗口的指标统计方法、系统、设备及存储介质。
背景技术
随着大数据处理技术的快速发展,业务对数据的时效性要求越来越高,传统的离线指标计算已经无法满足业务要求,需求的快速增长促进了技术的更新迭代,各种大数据实时处理框架不断涌现,Flink(一种大数据处理框架)以超短的处理延迟和较高的吞吐量得到广泛的关注,并在生产环境中得到了应用。
在指标统计领域,基于时间窗口的统计型指标是最常见的形式,在各种不同类型的时间窗口中,滑动时间窗口是最符合人类认知的方式,每次滑动的时间越小,指标的时效性越高,统计结果越精确,如果能做到逐条滑动计算,则实现了指标的实时统计及更新。Flink虽然支持时间窗口统计,但是其默认窗口机制不支持时间窗口的逐条更新,即使通过继承API(应用程序编程接口)方式开发,仍然会造成长时间窗口和大数据量时内存溢出的严重后果。另外,Flink也不支持指标回溯。还有,每次采用Flink支持的滑动窗口机制进行计算都要计算整个窗口的数据,在长时间窗口时计算量较大,延迟较高。
发明内容
本发明要解决的技术问题是为了克服现有技术中大数据实时处理框架的默认窗口机制不支持时间窗口的逐条更新,继承API方式开发计算量大、延迟较高的缺陷,提供一种能够充分复用已经计算过的统计值进而减少计算量、延迟较小的基于大数据处理框架的滑动窗口的指标统计方法、系统、设备及存储介质。
本发明是通过下述技术方案来解决上述技术问题:
本发明提供了一种基于大数据处理框架的滑动窗口的指标统计方法,其特点在于,使用mapWithState(大数据处理框架中的一种算子)算子中的State(大数据处理框架中的一种对象)对象存储若干参数,所述参数包括时间链表、所述时间链表的最小值、所述时间链表的最大值和指标统计值;
所述指标统计方法包括以下步骤:
所述大数据处理框架接收数据,每条所述数据包括待统计指标字段和对应的时间戳,所述时间链表用于按时间顺序存储所述数据的时间戳;
将接收的最新的一条所述数据作为当前数据;
根据所述当前数据的时间戳、所述当前数据的待统计指标字段及预设的时间窗口值更新所述时间链表、所述最小值、所述最大值和所述指标统计值,所述指标统计值通过复用计算得到。
本方案中,待统计指标字段根据业务需求不同而不同。大数据处理框架提供的状态存储及计算算子具有状态信息存储功能,可存储用户指定的数据。在本方案中,使用State对象存储时间链表、时间链表的最小值、时间链表的最大值和指标统计值。其中,时间链表用于按时间顺序存储数据的时间戳,该时间戳用于实现数据的乱序处理和逐条过期处理。最小值和最大值用于实现时间开关机制,具体用于确定当前到达的数据的类型,用最合适的流程来处理当前数据,大大减少了指标统计过程中数据的计算量,提升了响应速度。State对象还存储了指标统计值,该指标统计值即为最终的统计结果,每次仅针对一个时间窗口内的数据进行指标统计,避免了现有技术中每次计算都要计算整个窗口的数据所造成的计算量大、延迟高的缺陷,本方案通过复用已经计算过的指标统计值进而减少计算量、提高计算速度、减小延迟。
较佳地,根据所述当前数据的时间戳、所述当前数据的待统计指标字段及预设的时间窗口值更新所述时间链表、所述最小值、所述最大值和所述指标统计值,具体包括以下步骤:
S1、判断所述当前数据是否为接收的第一条数据,若是,则执行步骤S2,若否执行步骤S3;
S2、初始化所述State对象,执行步骤S8;
S3、判断所述当前数据的时间戳是否小于或等于所述最小值,若是则执行步骤S4,若否则执行步骤S5;
S4、将所述当前数据的时间戳置于所述时间链表的表头,设置所述最小值为所述当前数据的时间戳,执行步骤S8;
S5、判断所述当前数据的时间戳是否大于所述最小值并且小于所述最大值,若是则执行步骤S6,若否则执行步骤S7;
S6、遍历所述时间链表,将所述当前数据的时间戳按照时间顺序插入所述时间链表相应的位置,执行步骤S8;
S7、根据所述当前数据的时间戳与第一窗口值及第二窗口值的大小关系更新所述时间链表、所述最小值和所述最大值,执行步骤S8;所述第一窗口值为所述预设的时间窗口值和所述最小值的和,所述第二窗口值为所述预设的时间窗口值和所述最大值的和;
S8、更新所述指标统计值。
本方案中,当接收到的当前数据为第一条到达的数据时,此时State对象为空,需要对State对象进行初始化。当其它数据到达时,需要根据具体情况进行相应更新。具体为,当当前数据的时间戳小于或等于最小值时将当前数据的时间戳置于时间链表的表头,设置最小值为当前数据的时间戳,同时还需要更新指标统计值;当当前数据的时间戳大于最小值并且小于最大值时说明当前数据属于乱序数据,需要将其插入到时间链表中合适的位置,可从链表尾部向头遍历,寻找合适的位置插入该元素,同时更新各个参数;当当前数据的时间戳大于等于最大值时属于正常到达的数据,此时需要根据时间戳和第一窗口值及第二窗口值的大小关系更新各个参数。
较佳地,步骤S7包括以下步骤:
S71、判断所述当前数据的时间戳是否大于或等于所述第二窗口值,若是则执行步骤S2,若否则执行步骤S72;
S72、判断所述当前数据的时间戳是否小于所述第一窗口值,若是则执行步骤S73,若否则执行步骤S74;
S73、将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,执行步骤S8;
S74、遍历所述时间链表以找到未过期的所述数据,并设置所述未过期的所述数据的时间戳为所述最小值,将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,执行步骤S8。
本方案中,对于正常到达的数据,分为三种情况处理,具体为:当当前数据的时间戳大于或等于第二窗口值时,表示所有数据全部过期,此时重新初始化State对象;当当前数据的时间戳小于第一窗口值时,表示没有数据过期,将当前数据的时间戳添加至时间链表的尾部,设置最大值为当前数据的时间戳,并更新指标统计值;当当前数据的时间戳处于第一窗口值和第二窗口值之间时,表示有数据过期,时间链表是按时间存储的所有数据的时间戳,因此从头部遍历链表直到找到未过期的数据,设置此数据的时间戳为最小值,然后添加当前数据的时间戳到链表尾部,设置最大值为当前数据的时间戳,并更新指标统计值,该指标统计值即为最终的统计结果。
较佳地,步骤S2中初始化所述State对象包括以下步骤:
清空所述时间链表,将所述当前数据的时间戳添加至所述时间链表,设置所述最大值和所述最小值为所述当前数据的时间戳,预置所述指标统计值。
本方案中,根据对应的业务的具体含义将指标统计值预置为相应的初始值。
较佳地,其中,将接收的最新的一条所述数据作为当前数据,具体包括以下步骤:
T1、将接收的最新的一条所述数据作为第一数据;
T2、使用map(大数据处理框架中的一种算子)算子将所述第一数据转换为Tuple(一种数据结构)类型的第二数据;
T3、将所述第二数据作为所述当前数据。
本方案中,当接收的数据来自不同的数据源时,数据的格式和内容都有很多的区别,为了能被实时高效地处理,本方案对数据的格式进行了统一的规范,通过map算子将不同的数据内容转换成统一的Tuple数据格式,便于数据的高效计算。
较佳地,每条所述数据包括若干个待统计指标字段;
其中,将接收的最新的一条所述数据作为当前数据,具体包括以下步骤:
U1、将接收的最新的一条所述数据作为第三数据;
U2、使用KeyBy(大数据处理框架中的一种算子)算子将所述第三数据按照所述待统计指标字段的维度分流至不同的节点,分流至所述节点的数据为第四数据;
U3、将所述第四数据作为所述当前数据。
本方案中,常见的统计指标都是基于某个业务维度进行统计的,本方案中根据业务需求不同,扩展到不同的维度,针对每条数据可以包括若干个待统计指标字段,采用大数据处理框架提供的KeyBy算子将数据分流至不同的节点进行统计,将数据按照待统计指标字段的维度进行分流,以形成哈希数据流。将相同维度的数据分发到同一节点,采用多节点执行数据处理能够提升整体的性能和吞吐量。
本方案中,State对象存储了历史数据的明细信息,扩展实现多种待统计指标字段的指标统计,并且多种指标可同时统计,能够提升效率,同时因为State对象存储了历史数据的明细信息,所以能够实现指标统计值的回溯。
较佳地,所述大数据处理框架采用并行的方式接收所述数据。
本方案中,大数据处理框架接收来自不同管道的外部实时数据,采用并行方式接收数据能够提升整体的吞吐量。
较佳地,所述大数据处理框架为Flink。
较佳地,所述时间链表为双向链表。
本方案中,State对象中存储历史数据的时间戳采用双向链表,该双向链表是按时间顺序存储数据的,每次查找时能选择最快的方向定位到乱序数据和过期数据位置,时间链表的插入和删除操作复杂度是O(1)(一种算法复杂度的表示方式),能够提升处理速度,提高效率。
本发明还提供一种基于大数据处理框架的滑动窗口的指标统计系统,其特点在于,包括参数存储模块、数据处理模块、实时处理模块;
所述大数据处理框架包括数据接收器;
所述参数存储模块使用mapWithState算子中的State对象存储若干参数,所述参数包括时间链表、所述时间链表的最小值、所述时间链表的最大值和指标统计值;
所述数据接收器用于接收数据,每条所述数据包括待统计指标字段和对应的时间戳,所述时间链表用于按时间顺序存储所述数据的时间戳;
所述实时处理模块用于将接收的最新的一条所述数据作为当前数据;
所述数据处理模块用于根据所述当前数据的时间戳、所述当前数据的待统计指标字段及预设的时间窗口值更新所述时间链表、所述最小值、所述最大值和所述指标统计值,所述指标统计值通过复用计算得到。
较佳地,所述数据处理模块包括第一判断模块、初始化模块、第二判断模块、第一处理模块、第三判断模块、第二处理模块和正常数据处理模块;
所述第一判断模块,用于判断所述当前数据是否为所述数据接收器接收的第一条数据,若是,则调用所述初始化模块,若否调用所述第二判断模块;
所述初始化模块,用于初始化所述State对象,调用所述更新模块;
所述第二判断模块,用于判断所述当前数据的时间戳是否小于或等于所述最小值,若是则调用所述第一处理模块,若否则调用所述第三判断模块;
所述第一处理模块,用于将所述当前数据的时间戳置于所述时间链表的表头,设置所述最小值为所述当前数据的时间戳,调用所述更新模块;
所述第三判断模块,用于判断所述当前数据的时间戳是否大于所述最小值并且小于所述最大值,若是则调用所述第二处理模块,若否则调用所述正常数据处理模块;
所述第二处理模块,用于遍历所述时间链表,将所述当前数据的时间戳按照时间顺序插入所述时间链表相应的位置,调用所述更新模块;
所述正常数据处理模块,用于根据所述当前数据的时间戳与第一窗口值及第二窗口值的大小关系更新所述时间链表、所述最小值和所述最大值,调用所述更新模块;所述第一窗口值为所述预设的时间窗口值和所述最小值的和,所述第二窗口值为所述预设的时间窗口值和所述最大值的和;
所述更新模块,用于更新所述指标统计值。
较佳地,所述正常数据处理模块包括第四判断模块、第五判断模块、第三处理模块和第四处理模块;
所述第四判断模块,用于判断所述当前数据的时间戳是否大于或等于所述第二窗口值,若是则调用所述初始化模块,若否则调用所述第五判断模块;
所述第五判断模块,用于判断所述当前数据的时间戳是否小于所述第一窗口值,若是则调用所述第三处理模块,若否则调用所述第四处理模块;
所述第三处理模块,用于将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,调用所述更新模块;
所述第四处理模块,用于遍历所述时间链表以找到未过期的所述数据,并设置所述未过期的所述数据的时间戳为所述最小值,将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,调用所述更新模块。
较佳地,所述初始化模块包括初始化执行模块,所述初始化执行模块用于初始化所述State对象;
所述初始化执行模块包括链表初始化模块和数值初始化模块;
所述链表初始化模块用于清空所述时间链表,将所述当前数据的时间戳添加至所述时间链表;
所述数值初始化模块用于设置所述最大值和所述最小值为所述当前数据的时间戳,预置所述指标统计值。
较佳地,所述实时处理模块包括第一数据生成模块、第二数据生成模块和第一当前数据生成模块;
所述第一数据生成模块,用于将接收的最新的一条所述数据作为第一数据;
所述第二数据生成模块,用于使用map算子将所述第一数据转换为Tuple类型的第二数据;
所述第一当前数据生成模块,用于将所述第二数据作为所述当前数据。
较佳地,每条所述数据包括若干个待统计指标字段;
所述实时处理模块包括第三数据生成模块、第四数据生成模块和第二当前数据生成模块;
所述第三数据生成模块,用于将接收的最新的一条所述数据作为第三数据;
所述第四数据生成模块,用于使用KeyBy算子将所述第三数据按照所述待统计指标字段的维度分流至不同的节点,分流至所述节点的数据为第四数据;
所述第二当前数据生成模块,用于将所述第四数据作为所述当前数据。
较佳地,所述指标统计系统包括多个所述数据接收器,多个所述数据接收器并行接收所述数据。
较佳地,所述大数据处理框架为Flink。
较佳地,所述时间链表为双向链表。
本发明还提供了一种基于大数据处理框架的滑动窗口的指标统计的设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特点在于,所述处理器执行所述计算机程序时实现前述的基于大数据处理框架的滑动窗口的指标统计方法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特点在于,所述程序被处理器执行时实现前述的基于大数据处理框架的滑动窗口的指标统计方法的步骤。
本发明的积极进步效果在于:本发明提供的基于大数据处理框架的滑动窗口的指标统计方法、系统、设备及存储介质采用State对象存储关键参数,关键参数包括时间链表、时间链表的最小值、时间链表的最大值和指标统计值,指标统计值即为最终的统计结果,每次仅针对一个时间窗口内的数据进行指标统计,避免了现有技术中每次计算都要计算整个窗口的数据所造成的计算量大、延迟高的缺陷,本发明通过复用已经计算过的统计值进而减少计算量、提高计算速度、减小延迟,能够更快地响应业务的统计需求。进一步地,能够精确识别数据是否过期,对于已经过期的数据不会用于指标统计值的计算;通过扩展State对象所存储的历史数据的明细信息,能够实现指标统计值的回溯。
附图说明
图1为本发明实施例1的基于大数据处理框架的滑动窗口的指标统计方法的流程图。
图2为本发明实施例2的基于大数据处理框架的滑动窗口的指标统计系统的模块示意图。
图3为图2中数据处理模块的模块示意图。
图4为图3中正常数据处理模块的模块示意图。
图5为图3中初始化模块的模块示意图。
图6为图2中实时处理模块的模块示意图。
图7为本发明实施例3的基于大数据处理框架的滑动窗口的指标统计系统的实时处理模块的模块示意图。
图8为本发明实施例4的基于大数据处理框架的滑动窗口的指标统计的设备的硬件结构示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
如图1所示,本实施例提供了一种基于大数据处理框架的滑动窗口的指标统计方法,其中,大数据处理框架为Flink,该方法使用Flink提供的mapWithState算子中的State对象存储以下几个关键参数,分别为时间链表、时间链表的最小值、时间链表的最大值和指标统计值;其中,时间链表为双向链表,该双向链表是按时间顺序存储数据的,每次查找时能选择最快的方向定位到乱序数据和过期数据位置,时间链表的插入和删除操作复杂度是O(1),能够提升处理速度,提高效率。
本实施例提供的指标统计方法包括以下步骤:
步骤101、Flink采用多个接收器并行地接收外部的数据;其中,每条数据包括待统计指标字段和对应的时间戳,时间链表用于按时间顺序存储数据的时间戳;
步骤102、将接收的最新的一条数据作为第一数据,使用map算子将第一数据转换为Tuple类型的第二数据;
步骤103、使用KeyBy算子将第二数据按照待统计指标字段的维度分流至不同的节点,分流至节点的数据为第四数据,将第四数据作为当前数据;
步骤104、判断当前数据是否为接收的第一条数据,若是,则执行步骤105,若否执行步骤106;
步骤105、初始化State对象,具体包括清空时间链表,将当前数据的时间戳添加至时间链表,设置最大值和最小值为当前数据的时间戳,预置指标统计值,本条当前数据处理流程结束,继续等待下一条接收到的数据;
步骤106、判断当前数据的时间戳是否小于或等于最小值,若是则执行步骤107,若否则执行步骤108;
步骤107、将当前数据的时间戳置于时间链表的表头,设置最小值为当前数据的时间戳,执行步骤114;
步骤108、判断当前数据的时间戳是否大于最小值并且小于最大值,若是则执行步骤109,若否则执行步骤110;
步骤109、遍历时间链表,将当前数据的时间戳按照时间顺序插入时间链表相应的位置,执行步骤114;
步骤110、判断当前数据的时间戳是否大于或等于第二窗口值,若是则执行步骤105,若否则执行步骤111;
步骤111、判断当前数据的时间戳是否小于第一窗口值,若是则执行步骤112,若否则执行步骤113;
步骤112、将当前数据的时间戳添加至时间链表的尾部,设置最大值为当前数据的时间戳,执行步骤114;
步骤113、遍历时间链表以找到未过期的数据,并设置未过期的数据的时间戳为最小值,将当前数据的时间戳添加至时间链表的尾部,设置最大值为当前数据的时间戳;
步骤114、更新指标统计值,指标统计值通过复用计算得到。本条当前数据处理流程结束,继续等待下一条接收到的数据。
本实施例中,待统计指标字段根据业务需求不同而不同。Flink提供的状态存储及计算算子具有状态信息存储功能,可存储用户指定的数据。在本实施例中,使用State对象存储时间链表、时间链表的最小值、时间链表的最大值和指标统计值。其中,时间链表用于按时间顺序存储数据的时间戳,该时间戳用于实现数据的乱序处理和逐条过期处理。最小值和最大值用于实现时间开关机制,具体用于确定当前到达的数据的类型,用最合适的流程来处理当前数据,大大减少了指标统计过程中数据的计算量,提升了响应速度。State对象还存储了指标统计值,该指标统计值即为最终的统计结果,每次仅针对一个时间窗口内的数据进行指标统计,避免了现有技术中每次计算都要计算整个窗口的数据所造成的计算量大、延迟高的缺陷,本实施例通过复用已经计算过的统计值进而减少计算量、提高计算速度、减小延迟。
本实施例中,当接收到的当前数据为第一条到达的数据时,此时State对象为空,需要对State对象进行初始化,根据对应的业务的具体含义将指标统计值预置为相应的初始值。当其它数据到达时,需要根据具体情况进行相应更新。具体为,当当前数据的时间戳小于或等于最小值时将当前数据的时间戳置于时间链表的表头,设置最小值为当前数据的时间戳,同时还需要更新指标统计值;当当前数据的时间戳大于最小值并且小于最大值时说明当前数据属于乱序数据,需要将其插入到时间链表中合适的位置,可从链表尾部向头遍历,寻找合适的位置插入该元素,同时更新各个参数;当当前数据的时间戳大于等于最大值时属于正常到达的数据,此时需要根据时间戳和第一窗口值及第二窗口值的大小关系更新各个参数。对于正常到达的数据,分为三种情况处理,具体为:当当前数据的时间戳大于或等于第二窗口值时,表示所有数据全部过期,此时重新初始化State对象;当当前数据的时间戳小于第一窗口值时,表示没有数据过期,将当前数据的时间戳添加至时间链表的尾部,设置最大值为当前数据的时间戳,并更新指标统计值;当当前数据的时间戳处于第一窗口值和第二窗口值之间时,表示有数据过期,时间链表是按时间存储的所有数据的时间戳,因此从头部遍历链表直到找到未过期的数据,设置此数据的时间戳为最小值,然后添加当前数据时间戳到链表尾部,设置最大值为当前数据的时间戳,并更新指标统计值,该指标统计值即为最终的统计结果。
本实施例中,大数据处理框架接收来自不同管道的外部实时数据,采用并行方式接收数据能够提升整体的吞吐量。由于接收的数据来自不同的数据源,数据的格式和内容都有很多的区别,为了能被实时高效地处理,本实施例对数据的格式进行了统一的规范,通过map算子将不同的数据内容转换成统一的Tuple数据格式,便于数据的高效计算。
本实施例中,常见的统计指标都是基于某个业务维度进行统计的,本实施例中根据业务需求不同,扩展到不同的维度,针对每条数据可以包括若干个待统计指标字段,采用大数据处理框架提供的KeyBy算子将数据分流至不同的节点进行统计,将数据按照待统计指标字段的维度进行分流,以形成哈希数据流。将相同维度的数据分发到同一节点,采用多节点执行数据处理能够提升整体的性能和吞吐量。
本实施例中,State对象存储了历史数据的明细信息,扩展实现多种待统计指标字段的指标统计,并且多种指标可同时统计,能够提升效率,同时因为State对象存储了历史数据的明细信息,所以能够实现指标统计值的回溯。
实施例2
如图2所示,本实施例的基于大数据处理框架的滑动窗口的指标统计系统,包括参数存储模块1、数据处理模块2和实时处理模块3。
大数据处理框架为Flink,其包括多个数据接收器。
参数存储模块1使用mapWithState算子中的State对象存储若干参数,参数包括时间链表、时间链表的最小值、时间链表的最大值和指标统计值。其中,时间链表为双向链表,该双向链表是按时间顺序存储数据的,每次查找时能选择最快的方向定位到乱序数据和过期数据位置,时间链表的插入和删除操作复杂度是O(1),能够提升处理速度,提高效率。
多个所述数据接收器用于并行接收数据,每条数据包括待统计指标字段和对应的时间戳,时间链表用于按时间顺序存储所述数据的时间戳。
实时处理模块3用于将接收的最新的一条数据作为当前数据。
数据处理模块2用于根据当前数据的时间戳、当前数据的待统计指标字段及预设的时间窗口值更新时间链表、最小值、最大值和指标统计值,指标统计值通过复用计算得到。
本实施例中,待统计指标字段根据业务需求不同而不同。大数据处理框架提供的状态存储及计算算子具有状态信息存储功能,可存储用户指定的数据。在本方案中,使用State对象存储时间链表、时间链表的最小值、时间链表的最大值和指标统计值。其中,时间链表用于按时间顺序存储数据的时间戳,该时间戳用于实现数据的乱序处理和逐条过期处理。最小值和最大值用于实现时间开关机制,具体用于确定当前到达的数据的类型,用最合适的流程来处理当前数据,大大减少了指标统计过程中数据的计算量,提升了响应速度。State对象还存储了指标统计值,该指标统计值即为最终的统计结果,每次仅针对一个时间窗口内的数据进行指标统计,且可以通过复用已经计算过的统计值进而减少计算量、提高计算速度、减小延迟。
如图3所示,本实施例中所述数据处理模块2包括第一判断模块201、初始化模块202、第二判断模块203、第一处理模块204、第三判断模块205、第二处理模块206、正常数据处理模块207和更新模块208。
所述第一判断模块201,用于判断所述当前数据是否为所述数据接收器接收的第一条数据,若是,则调用所述初始化模块202,若否调用所述第二判断模块203。
所述初始化模块202,用于初始化所述State对象,调用所述更新模块208。
所述第二判断模块203,用于判断所述当前数据的时间戳是否小于或等于所述最小值,若是则调用所述第一处理模块204,若否则调用所述第三判断模块205。
所述第一处理模块204,用于将所述当前数据的时间戳置于所述时间链表的表头,设置所述最小值为所述当前数据的时间戳,调用所述更新模块208。
所述第三判断模块205,用于判断所述当前数据的时间戳是否大于所述最小值并且小于所述最大值,若是则调用所述第二处理模块206,若否则调用所述正常数据处理模块207。
所述第二处理模块206,用于遍历所述时间链表,将所述当前数据的时间戳按照时间顺序插入所述时间链表相应的位置,调用所述更新模块208。
所述正常数据处理模块207,用于根据所述当前数据的时间戳与第一窗口值及第二窗口值的大小关系更新所述时间链表、所述最小值和所述最大值,调用所述更新模块208;所述第一窗口值为所述预设的时间窗口值和所述最小值的和,所述第二窗口值为所述预设的时间窗口值和所述最大值的和。
所述更新模块208,用于更新所述指标统计值。
本实施例中,数据处理模块根据接收到的数据的不同采用不同的模块实现不同的处理。当接收到的当前数据为第一条到达的数据时,此时State对象为空,需要采用初始化模块对State对象进行初始化。当其它数据到达时,需要根据具体情况进行相应更新。具体为,当当前数据的时间戳小于或等于最小值时采用第一处理模块将当前数据的时间戳置于时间链表的表头,设置最小值为当前数据的时间戳,同时还需要更新指标统计值;当当前数据的时间戳大于最小值并且小于最大值时说明当前数据属于乱序数据,需要采用第二处理模块将其插入到时间链表中合适的位置,可从链表尾部向头遍历,寻找合适的位置插入该元素,同时更新各个参数;当当前数据的时间戳大于等于最大值时属于正常到达的数据,此时需要采用正常数据处理模块根据时间戳和第一窗口值及第二窗口值的大小关系更新各个参数。
如图4所示,本实施例中,所述正常数据处理模块207包括第四判断模块2071、第五判断模块2072、第三处理模块2073和第四处理模块2074。
所述第四判断模块2071,用于判断所述当前数据的时间戳是否大于或等于所述第二窗口值,若是则调用所述初始化模块202,若否则调用所述第五判断模块2072。
所述第五判断模块2072,用于判断所述当前数据的时间戳是否小于所述第一窗口值,若是则调用所述第三处理模块2073,若否则调用所述第四处理模块2074。
所述第三处理模块2073,用于将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,调用所述更新模块208。
所述第四处理模块2074,用于遍历所述时间链表以找到未过期的所述数据,并设置所述未过期的所述数据的时间戳为所述最小值,将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,调用所述更新模块208。
本实施例中,对于正常到达的数据,分为三种情况处理,具体为:当当前数据的时间戳大于或等于第二窗口值时,表示所有数据全部过期,此时重新调用初始化模块初始化State对象;当当前数据的时间戳小于第一窗口值时,表示没有数据过期,需要采用第三处理模块将当前数据的时间戳添加至时间链表的尾部,设置最大值为当前数据的时间戳,并更新指标统计值;当当前数据的时间戳处于第一窗口值和第二窗口值之间时,表示有数据过期,时间链表是按时间存储的所有数据的时间戳,因此采用第四处理模块从头部遍历链表直到找到未过期的数据,设置此数据的时间戳为最小值,然后添加当前数据时间戳到链表尾部,设置最大值为当前数据的时间戳,并更新指标统计值,该指标统计值即为最终的统计结果。
如图5所示,本实施例中,所述初始化模块202包括初始化执行模块2021,所述初始化执行模块用于初始化所述State对象。
所述初始化执行模块2021包括链表初始化模块20211和数值初始化模块20212。
所述链表初始化模块20211用于清空所述时间链表,将所述当前数据的时间戳添加至所述时间链表。
所述数值初始化模块20212用于设置所述最大值和所述最小值为所述当前数据的时间戳,预置所述指标统计值。
如图6所示,本实施例中,所述实时处理模块3包括第一数据生成模块301、第二数据生成模块302和第一当前数据生成模块303。
所述第一数据生成模块301,用于将接收的最新的一条所述数据作为第一数据。
所述第二数据生成模块302,用于使用map算子将所述第一数据转换为Tuple类型的第二数据。
所述第一当前数据生成模块303,用于将所述第二数据作为所述当前数据。
本实施例中,接收的数据来自不同的数据源,数据的格式和内容都有很多的区别,为了能被实时高效地处理,本实施例采用实时处理模块对数据的格式进行了统一的规范,具体采用第二数据生成模块使用map算子将不同的数据内容转换成统一的Tuple数据格式,便于数据的高效计算。
实施例3
在实施例2的基础上,本实施例中每条所述数据包括若干个待统计指标字段。另外,如图7所示,与实施例2中的实时处理模块3不同的是,本实施例中实时处理模块3包括第三数据生成模块304、第四数据生成模块305和第二当前数据生成模块306。
所述第三数据生成模块304,用于将接收的最新的一条所述数据作为第三数据。
所述第四数据生成模块305,用于使用KeyBy算子将所述第三数据按照所述待统计指标字段的维度分流至不同的节点,分流至所述节点的数据为第四数据。
所述第二当前数据生成模块306,用于将所述第四数据作为所述当前数据。
常见的统计指标都是基于某个业务维度进行统计的,本实施例中根据业务需求不同,扩展到不同的维度,针对每条数据可以包括若干个待统计指标字段,实时处理模块采用大数据处理框架提供的KeyBy算子将数据分流至不同的节点进行统计,将数据按照待统计指标字段的维度进行分流,以形成哈希数据流。将相同维度的数据分发到同一节点,采用多节点执行数据处理能够提升整体的性能和吞吐量。
实施例4
图8为本发明实施例4提供的一种基于大数据处理框架的滑动窗口的指标统计的设备的硬件结构示意图。图8示出了适于用来实现本发明实施方式的示例性指标统计的设备80的框图。图8显示的指标统计的设备80仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,指标统计的设备80可以通用计算设备的形式表现,例如其可以为服务器设备。指标统计的设备80的组件可以包括但不限于:上述至少一个处理器81、上述至少一个存储器82、连接不同系统组件(包括存储器82和处理器81)的总线83。
总线83包括数据总线、地址总线和控制总线。
存储器82可以包括易失性存储器,例如随机存取存储器(RAM)821和/或高速缓存存储器822,还可以进一步包括只读存储器(ROM)823。
存储器82还可以包括具有一组(至少一个)程序模块824的程序/实用工具825,这样的程序模块824包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
处理器81通过运行存储在存储器82中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1所提供的指标统计的方法。
指标统计的设备80也可以与一个或多个外部设备84(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口85进行。并且,指标统计的设备80还可以通过网络适配器86与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器86通过总线83与指标统计的设备80的其它模块通信。应当明白,尽管图中未示出,可以结合指标统计的设备80使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了指标统计的设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
实施例5
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现实施例1所提供的指标统计的方法的步骤。
以下更具体地介绍本发明的基于大数据处理框架的滑动窗口的指标统计方法及系统的应用实例,以便于更好理解本发明。
本应用实例以接入点击流数据为例,统计两小时内(预设的时间窗口值)相同IP(网络之间互连的协议)上的用户点击次数,本应用实例提供了一种毫秒级的滑动窗口实时统计系统。
本应用实例部分模块进行介绍如下:
1、Source(接收器):Flink接收来自Kafka(一个开源流处理平台)、MQ(一种即时通讯软件)以及其他管道等外部实时数据的组件,为了提升系统整体的吞吐量,通常会采用多个接收器并行接收数据,因此即使外部实时数据是按时间先后顺序到达的,Flink接收到的数据也可能是无序的,为了保证与时间顺序有关的指标的正确统计(如相邻时间间隔方差统计),需要对乱序数据进行处理。
2、Tuple数据流:接收器接收的数据来自不同的数据源,数据的格式和内容都有很多的区别,为了能被实时系统高效地处理,本应用实例对数据的格式进行了统一的规范,通过map算子,将不同的数据内容转换成统一的Tuple数据格式,便于数据的高效计算。
3、KeyedStream(哈希数据流):常见的统计指标都是基于某个业务维度进行统计的,本应用实例是以IP维度进行统计(根据业务需求不同,可以扩展到不同的维度),因此需将数据分流至不同的节点进行统计,Flink提供的KeyBy算子可实现此功能,将数据按照维度字段进行分流,形成哈希数据流。
4、mapWithState(状态及结果计算):Flink提供的状态存储及计算算子,具有状态信息存储功能,可存储用户指定的数据,在本应用实例中,State对象存储了点击流数据的时间戳信息,用于实现乱序处理和逐条过期功能,同时State对象存储了统计值信息,通过复用该统计值,可实现统计指标的快速计算及更新。
现对整体流程进行介绍:Flink通过Source接收实时数据,并对原始数据进行变换处理,使用map算子将数据变换成Tuple类型,以点击流数据为例,组装设备指纹IP,账户,时间戳的Tuple类型数据流。统计值多是相对于某个维度的统计,因此可通过KeyBy算子将相同维度的数据分发到同一分区,多分区执行数据处理,提升系统性能和吞吐量。在应用实例中,将按IP维度对点击流数据进行滑动窗口统计。
通过分区后,每个分区接收到需要处理的数据,利用mapWithState算子结合存储的状态信息实时计算统计值,具体如下:
接收到的数据格式为(ip,account,time),每个字段的含义如下:
1)ip:当前点击流附带的ip信息;
2)account:当前点击流的用户名信息;
3)time:当前点击流产生的时间。
mapWithState算子中的State对象存储了几个关键的指标,分别如下:
1)dataList:双向链表,按时间顺序存储了对应IP上所有数据的时间戳,采用双向链表,可以分别从头尾两端遍历链表,提升处理速度;
2)s:时间链表中的最小值,时间开关机制,减少处理的数据量;
3)e:时间链表中的最大值,时间开关机制;
4)value:指标统计值。
当某个维度下的第一条数据到达时,State对象为空,需要对State进行初始化。State初始化流程:清空dataList,将当前消息附带的时间戳添加至链表中,同时设置s和e为该值,value根据统计指标的业务含义置成初始值。
当此维度下的其他数据到达时,按照以下流程进行处理:
1、当time(消息附带的时间戳)<=s时,当前消息时间戳置于链表头,更新s=time,同时更新value;
2、当e>time>s,当前消息属于乱序消息,需要插入到链表中合适的位置,整个系统对接的是实时流,乱序的数据也不会延迟很久,因此可从链表尾部向头遍历,寻找合适的位置插入该元素,同时更新value;
3、当time>=e时,属于正常到达的数据,分为三种情况处理:
1)time>=e+window(预设的时间窗口值):所有数据全部过期,执行上文描述的State初始化操作;
2)time<s+window:没有数据过期,将当前消息的时间戳添加至链表尾部,设置e=time,并更新value;
3)e+window>time>s+window:有数据过期,链表是按时间存储的所有消息的时间戳,因此从头部遍历链表直到找到未过期的数据,设置此数据为s,更新value,然后添加当前信息时间戳到链表尾部,设置e=time,并更新value。
最终向下游输出value的值,获得统计结果。
本应用实例充分复用已经计算过的统计值,减少了计算量;实时指标加工延迟在20ms(毫秒)内;数据精确过期,已经过期的数据不会参与指标统计;通过扩展State对象存储的明细信息,可支持指标回溯。其中,指标回溯是指回溯满足阈值条件前的数据,以统计某个IP上不同用户数大于等于5的用户为例,在不同用户数小于5时,这些用户均不满足条件,当另一个不同用户进入统计时,满足阈值条件,普通的统计计算只会输出满足阈值后的用户,之前参与累积的用户则无法回溯,回溯功能指将满足阈值条件之前参与累积的指标也输出出来。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (20)
1.一种基于大数据处理框架的滑动窗口的指标统计方法,其特征在于,使用mapWithState算子中的State对象存储若干参数,所述参数包括时间链表、所述时间链表的最小值、所述时间链表的最大值和指标统计值;
所述指标统计方法包括以下步骤:
所述大数据处理框架接收数据,每条所述数据包括待统计指标字段和对应的时间戳,所述时间链表用于按时间顺序存储所述数据的时间戳;
将接收的最新的一条所述数据作为当前数据;
根据所述当前数据的时间戳、所述当前数据的待统计指标字段及预设的时间窗口值更新所述时间链表、所述最小值、所述最大值和所述指标统计值,所述指标统计值通过复用计算得到。
2.如权利要求1所述的基于大数据处理框架的滑动窗口的指标统计方法,其特征在于,
根据所述当前数据的时间戳、所述当前数据的待统计指标字段及预设的时间窗口值更新所述时间链表、所述最小值、所述最大值和所述指标统计值,具体包括以下步骤:
S1、判断所述当前数据是否为接收的第一条数据,若是,则执行步骤S2,若否执行步骤S3;
S2、初始化所述State对象,执行步骤S8;
S3、判断所述当前数据的时间戳是否小于或等于所述最小值,若是则执行步骤S4,若否则执行步骤S5;
S4、将所述当前数据的时间戳置于所述时间链表的表头,设置所述最小值为所述当前数据的时间戳,执行步骤S8;
S5、判断所述当前数据的时间戳是否大于所述最小值并且小于所述最大值,若是则执行步骤S6,若否则执行步骤S7;
S6、遍历所述时间链表,将所述当前数据的时间戳按照时间顺序插入所述时间链表相应的位置,执行步骤S8;
S7、根据所述当前数据的时间戳与第一窗口值及第二窗口值的大小关系更新所述时间链表、所述最小值和所述最大值,执行步骤S8;所述第一窗口值为所述预设的时间窗口值和所述最小值的和,所述第二窗口值为所述预设的时间窗口值和所述最大值的和;
S8、更新所述指标统计值。
3.如权利要求2所述的基于大数据处理框架的滑动窗口的指标统计方法,其特征在于,
步骤S7包括以下步骤:
S71、判断所述当前数据的时间戳是否大于或等于所述第二窗口值,若是则执行步骤S2,若否则执行步骤S72;
S72、判断所述当前数据的时间戳是否小于所述第一窗口值,若是则执行步骤S73,若否则执行步骤S74;
S73、将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,执行步骤S8;
S74、遍历所述时间链表以找到未过期的所述数据,并设置所述未过期的所述数据的时间戳为所述最小值,将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,执行步骤S8。
4.如权利要求2所述的基于大数据处理框架的滑动窗口的指标统计方法,其特征在于,步骤S2中初始化所述State对象包括以下步骤:
清空所述时间链表,将所述当前数据的时间戳添加至所述时间链表,设置所述最大值和所述最小值为所述当前数据的时间戳,预置所述指标统计值。
5.如权利要求1所述的基于大数据处理框架的滑动窗口的指标统计方法,其特征在于,
其中,将接收的最新的一条所述数据作为当前数据,具体包括以下步骤:
T1、将接收的最新的一条所述数据作为第一数据;
T2、使用map算子将所述第一数据转换为Tuple类型的第二数据;
T3、将所述第二数据作为所述当前数据。
6.如权利要求1所述的基于大数据处理框架的滑动窗口的指标统计方法,其特征在于,每条所述数据包括若干个待统计指标字段;
其中,将接收的最新的一条所述数据作为当前数据,具体包括以下步骤:
U1、将接收的最新的一条所述数据作为第三数据;
U2、使用KeyBy算子将所述第三数据按照所述待统计指标字段的维度分流至不同的节点,分流至所述节点的数据为第四数据;
U3、将所述第四数据作为所述当前数据。
7.如权利要求1至6任一项所述的基于大数据处理框架的滑动窗口的指标统计方法,其特征在于,所述大数据处理框架采用并行的方式接收所述数据。
8.如权利要求7所述的基于大数据处理框架的滑动窗口的指标统计方法,其特征在于,所述大数据处理框架为Flink。
9.如权利要求8所述的基于大数据处理框架的滑动窗口的指标统计方法,其特征在于,所述时间链表为双向链表。
10.一种基于大数据处理框架的滑动窗口的指标统计系统,其特征在于,包括参数存储模块、数据处理模块、实时处理模块;
所述大数据处理框架包括数据接收器;
所述参数存储模块使用mapWithState算子中的State对象存储若干参数,所述参数包括时间链表、所述时间链表的最小值、所述时间链表的最大值和指标统计值;
所述数据接收器用于接收数据,每条所述数据包括待统计指标字段和对应的时间戳,所述时间链表用于按时间顺序存储所述数据的时间戳;
所述实时处理模块用于将接收的最新的一条所述数据作为当前数据;
所述数据处理模块用于根据所述当前数据的时间戳、所述当前数据的待统计指标字段及预设的时间窗口值更新所述时间链表、所述最小值、所述最大值和所述指标统计值,所述指标统计值通过复用计算得到。
11.如权利要求10所述的基于大数据处理框架的滑动窗口的指标统计系统,其特征在于,
所述数据处理模块包括第一判断模块、初始化模块、第二判断模块、第一处理模块、第三判断模块、第二处理模块和正常数据处理模块;
所述第一判断模块,用于判断所述当前数据是否为所述数据接收器接收的第一条数据,若是,则调用所述初始化模块,若否调用所述第二判断模块;
所述初始化模块,用于初始化所述State对象,调用所述更新模块;
所述第二判断模块,用于判断所述当前数据的时间戳是否小于或等于所述最小值,若是则调用所述第一处理模块,若否则调用所述第三判断模块;
所述第一处理模块,用于将所述当前数据的时间戳置于所述时间链表的表头,设置所述最小值为所述当前数据的时间戳,调用所述更新模块;
所述第三判断模块,用于判断所述当前数据的时间戳是否大于所述最小值并且小于所述最大值,若是则调用所述第二处理模块,若否则调用所述正常数据处理模块;
所述第二处理模块,用于遍历所述时间链表,将所述当前数据的时间戳按照时间顺序插入所述时间链表相应的位置,调用所述更新模块;
所述正常数据处理模块,用于根据所述当前数据的时间戳与第一窗口值及第二窗口值的大小关系更新所述时间链表、所述最小值和所述最大值,调用所述更新模块;所述第一窗口值为所述预设的时间窗口值和所述最小值的和,所述第二窗口值为所述预设的时间窗口值和所述最大值的和;
所述更新模块,用于更新所述指标统计值。
12.如权利要求11所述的基于大数据处理框架的滑动窗口的指标统计系统,其特征在于,所述正常数据处理模块包括第四判断模块、第五判断模块、第三处理模块和第四处理模块;
所述第四判断模块,用于判断所述当前数据的时间戳是否大于或等于所述第二窗口值,若是则调用所述初始化模块,若否则调用所述第五判断模块;
所述第五判断模块,用于判断所述当前数据的时间戳是否小于所述第一窗口值,若是则调用所述第三处理模块,若否则调用所述第四处理模块;
所述第三处理模块,用于将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,调用所述更新模块;
所述第四处理模块,用于遍历所述时间链表以找到未过期的所述数据,并设置所述未过期的所述数据的时间戳为所述最小值,将所述当前数据的时间戳添加至所述时间链表的尾部,设置所述最大值为所述当前数据的时间戳,调用所述更新模块。
13.如权利要求11所述的基于大数据处理框架的滑动窗口的指标统计系统,其特征在于,所述初始化模块包括初始化执行模块,所述初始化执行模块用于初始化所述State对象;
所述初始化执行模块包括链表初始化模块和数值初始化模块;
所述链表初始化模块用于清空所述时间链表,将所述当前数据的时间戳添加至所述时间链表;
所述数值初始化模块用于设置所述最大值和所述最小值为所述当前数据的时间戳,预置所述指标统计值。
14.如权利要求10所述的基于大数据处理框架的滑动窗口的指标统计系统,其特征在于,
所述实时处理模块包括第一数据生成模块、第二数据生成模块和第一当前数据生成模块;
所述第一数据生成模块,用于将接收的最新的一条所述数据作为第一数据;
所述第二数据生成模块,用于使用map算子将所述第一数据转换为Tuple类型的第二数据;
所述第一当前数据生成模块,用于将所述第二数据作为所述当前数据。
15.如权利要求10所述的基于大数据处理框架的滑动窗口的指标统计系统,其特征在于,每条所述数据包括若干个待统计指标字段;
所述实时处理模块包括第三数据生成模块、第四数据生成模块和第二当前数据生成模块;
所述第三数据生成模块,用于将接收的最新的一条所述数据作为第三数据;
所述第四数据生成模块,用于使用KeyBy算子将所述第三数据按照所述待统计指标字段的维度分流至不同的节点,分流至所述节点的数据为第四数据;
所述第二当前数据生成模块,用于将所述第四数据作为所述当前数据。
16.如权利要求10至15任一项所述的基于大数据处理框架的滑动窗口的指标统计系统,其特征在于,所述指标统计系统包括多个所述数据接收器,多个所述数据接收器并行接收所述数据。
17.如权利要求16所述的基于大数据处理框架的滑动窗口的指标统计系统,其特征在于,所述大数据处理框架为Flink。
18.如权利要求17所述的基于大数据处理框架的滑动窗口的指标统计系统,其特征在于,所述时间链表为双向链表。
19.一种基于大数据处理框架的滑动窗口的指标统计的设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至9任一项所述的基于大数据处理框架的滑动窗口的指标统计方法。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9任一项所述的基于大数据处理框架的滑动窗口的指标统计方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810450749.4A CN110471944B (zh) | 2018-05-11 | 2018-05-11 | 指标统计方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810450749.4A CN110471944B (zh) | 2018-05-11 | 2018-05-11 | 指标统计方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110471944A true CN110471944A (zh) | 2019-11-19 |
CN110471944B CN110471944B (zh) | 2024-09-20 |
Family
ID=68504515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810450749.4A Active CN110471944B (zh) | 2018-05-11 | 2018-05-11 | 指标统计方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110471944B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026400A (zh) * | 2019-11-20 | 2020-04-17 | 中国铁道科学研究院集团有限公司电子计算技术研究所 | 业务数据流的解析方法及其装置 |
CN111142942A (zh) * | 2019-12-26 | 2020-05-12 | 远景智能国际私人投资有限公司 | 窗口数据的处理方法、装置、服务器及存储介质 |
CN111209285A (zh) * | 2020-04-23 | 2020-05-29 | 成都四方伟业软件股份有限公司 | 一种基于时序数据的统计指标存储方法及装置 |
CN111210156A (zh) * | 2020-01-13 | 2020-05-29 | 拉扎斯网络科技(上海)有限公司 | 基于流窗口实现的实时流数据处理方法及装置 |
CN111262795A (zh) * | 2020-01-08 | 2020-06-09 | 京东数字科技控股有限公司 | 基于服务接口的限流方法、装置、电子设备及存储介质 |
CN112596997A (zh) * | 2020-12-29 | 2021-04-02 | 科技谷(厦门)信息技术有限公司 | 一种基于Flink实时计算的自动化流控制方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030046414A1 (en) * | 2001-01-25 | 2003-03-06 | Crescent Networks, Inc. | Operation of a multiplicity of time sorted queues with reduced memory |
CN1937574A (zh) * | 2005-09-19 | 2007-03-28 | 北京大学 | 对网络流进行分类、状态跟踪和报文处理的装置和方法 |
US20130346441A1 (en) * | 2011-07-20 | 2013-12-26 | Hitachi, Ltd. | Stream data processing server and a non-transitory computer-readable storage medium storing a stream data processing program |
US20140078163A1 (en) * | 2012-09-14 | 2014-03-20 | Software Ag | Systems and/or methods for statistical online analysis of large and potentially heterogeneous data sets |
CN104765765A (zh) * | 2015-02-15 | 2015-07-08 | 杭州邦盛金融信息技术有限公司 | 一种基于时间窗口可移动的动态数据快速处理方法 |
US20180129579A1 (en) * | 2016-11-10 | 2018-05-10 | Nec Laboratories America, Inc. | Systems and Methods with a Realtime Log Analysis Framework |
-
2018
- 2018-05-11 CN CN201810450749.4A patent/CN110471944B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030046414A1 (en) * | 2001-01-25 | 2003-03-06 | Crescent Networks, Inc. | Operation of a multiplicity of time sorted queues with reduced memory |
CN1937574A (zh) * | 2005-09-19 | 2007-03-28 | 北京大学 | 对网络流进行分类、状态跟踪和报文处理的装置和方法 |
US20130346441A1 (en) * | 2011-07-20 | 2013-12-26 | Hitachi, Ltd. | Stream data processing server and a non-transitory computer-readable storage medium storing a stream data processing program |
US20140078163A1 (en) * | 2012-09-14 | 2014-03-20 | Software Ag | Systems and/or methods for statistical online analysis of large and potentially heterogeneous data sets |
CN104765765A (zh) * | 2015-02-15 | 2015-07-08 | 杭州邦盛金融信息技术有限公司 | 一种基于时间窗口可移动的动态数据快速处理方法 |
US20180129579A1 (en) * | 2016-11-10 | 2018-05-10 | Nec Laboratories America, Inc. | Systems and Methods with a Realtime Log Analysis Framework |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026400A (zh) * | 2019-11-20 | 2020-04-17 | 中国铁道科学研究院集团有限公司电子计算技术研究所 | 业务数据流的解析方法及其装置 |
CN111142942A (zh) * | 2019-12-26 | 2020-05-12 | 远景智能国际私人投资有限公司 | 窗口数据的处理方法、装置、服务器及存储介质 |
CN111142942B (zh) * | 2019-12-26 | 2023-08-04 | 远景智能国际私人投资有限公司 | 窗口数据的处理方法、装置、服务器及存储介质 |
CN111262795A (zh) * | 2020-01-08 | 2020-06-09 | 京东数字科技控股有限公司 | 基于服务接口的限流方法、装置、电子设备及存储介质 |
CN111262795B (zh) * | 2020-01-08 | 2024-02-06 | 京东科技控股股份有限公司 | 基于服务接口的限流方法、装置、电子设备及存储介质 |
CN111210156A (zh) * | 2020-01-13 | 2020-05-29 | 拉扎斯网络科技(上海)有限公司 | 基于流窗口实现的实时流数据处理方法及装置 |
CN111210156B (zh) * | 2020-01-13 | 2022-04-01 | 拉扎斯网络科技(上海)有限公司 | 基于流窗口实现的实时流数据处理方法及装置 |
CN111209285A (zh) * | 2020-04-23 | 2020-05-29 | 成都四方伟业软件股份有限公司 | 一种基于时序数据的统计指标存储方法及装置 |
CN112596997A (zh) * | 2020-12-29 | 2021-04-02 | 科技谷(厦门)信息技术有限公司 | 一种基于Flink实时计算的自动化流控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110471944B (zh) | 2024-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110471944A (zh) | 指标统计方法、系统、设备及存储介质 | |
US10171284B2 (en) | Reachability-based coordination for cyclic dataflow | |
CN103761309A (zh) | 一种运营数据处理方法及系统 | |
CN102739785B (zh) | 基于网络带宽估计的云计算任务调度方法 | |
CN109949160A (zh) | 一种区块链的分片方法及装置 | |
US10521258B2 (en) | Managing test services in a distributed production service environment | |
CN106537347B (zh) | 用于分发和处理流的系统和方法 | |
WO2021088404A1 (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN101778400B (zh) | 基于数据库的话务量分析与预测系统及使用该系统的话务量预测方法 | |
CN110209467A (zh) | 一种基于机器学习的弹性资源扩展方法和系统 | |
US20100017510A1 (en) | Multi-layered measurement model for data collection and method for data collection using same | |
CN108140035A (zh) | 分布式系统的数据库复制方法及装置 | |
CN114780244A (zh) | 容器云资源弹性分配方法、装置、计算机设备及介质 | |
CN110377757A (zh) | 一种实时知识图谱构建系统 | |
CN101860454A (zh) | 一种网络性能数据处理方法及其装置 | |
CN109375146A (zh) | 一种用电数据的补采方法、系统及终端设备 | |
CN105635285A (zh) | 一种基于状态感知的vm迁移调度方法 | |
CN102087655A (zh) | 一种能体现人际关系网的网站系统 | |
CN114625805A (zh) | 一种回测配置方法、装置、设备及介质 | |
CN112486953A (zh) | 数据迁移方法、装置、计算机设备及存储介质 | |
Hou et al. | Incorporation of optimal timeouts into distributed real-time load sharing | |
CN108664326A (zh) | 信息处理设备和信息处理系统 | |
Sun et al. | Hee-sketch: an efficient sketch for sliding-window frequency estimation over skewed data streams | |
CN107888696A (zh) | 一种存储实验室设备信息获取方法、系统及相关装置 | |
CN117033952B (zh) | 一种基于分布式的多数据源采集实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |