一种数据处理方法及装置与流程

文档序号:11230533阅读:374来源:国知局
一种数据处理方法及装置与流程

本公开涉及计算机处理技术领域,具体地,涉及一种数据处理方法及装置。



背景技术:

目前,进行窗口数据的跟踪查询时,大多采用以下两种方式:

方式一,窗口数据的全量查询。也就是说,单次查询需要加载窗口内的所有数据,该方法简单易行,但在大数据场景下,由于数据基数较大,多次往复查询会加载大量的重复数据,造成资源浪费,很容易在实际应用中出现性能瓶颈。

方式二,窗口数据的增量查询。为了解决方式一的资源浪费问题,现有技术提供了增量查询方案,也就是说,单次查询只需要加载窗口内最新的增量数据,可以有效避免反复加载重复数据造成的资源浪费。

但在实际应用中,将增量查询方案应用于管道-过滤器(pipe-and-filter)模式时,对于需要进行全局处理的过滤器处理单元来说,如果仅提供最新的增量数据,并不能确保得到最终的窗口数据,进而也就无法获得该窗口数据的查询结果。也就是说,目前的增量查询方案并不能很好的适用于管道-过滤器模式。



技术实现要素:

本公开的目的是提供一种数据处理方法及装置,以使增量查询方案能够更好的适用于管道-过滤器模式。

为了实现上述目的,第一方面,本公开提供一种数据处理方法,包括:

当前过滤器处理单元接收上游过滤器处理单元发送的增量数据以及控制信号,所述控制信号包括所述增量数据对应的起始时间;

所述当前过滤器处理单元判断是否需要构建窗口数据;

如果需要构建窗口数据,所述当前过滤器处理单元根据预设窗口大小以及所述起始时间,从本地缓存中读取历史窗口数据;

所述当前过滤器处理单元根据所述增量数据对应的时间步长,清理所述历史窗口数据中时间最久的数据,得到所述历史窗口数据中的保留数据;

所述当前过滤器处理单元基于所述保留数据以及所述增量数据,构建新的窗口数据,并利用所述新的窗口数据替换所述本地缓存中的历史窗口数据,所述新的窗口数据的窗口大小与所述预设窗口大小相同。

可选地,所述预设窗口大小通过所述控制信号传递至所述当前过滤器处理单元;或者,所述预设窗口大小预先配置于所述当前过滤器处理单元。

可选地,所述当前过滤器处理单元判断是否需要构建窗口数据,包括:

所述当前过滤器处理单元配置有预设标志位,通过所述预设标志位的状态判断是否需要构建窗口数据。

可选地,所述当前过滤器处理单元判断是否需要构建窗口数据,包括:

所述当前过滤器处理单元判断是否配置有所述预设窗口大小;

如果配置有所述预设窗口大小,所述当前过滤器处理单元判定需要构建窗口数据。

可选地,所述当前过滤器处理单元设置有对应的索引文件,则

所述从本地缓存中读取历史窗口数据,包括:所述当前过滤器处理单元从所述索引文件中读取所述历史窗口数据;

所述利用所述新的窗口数据替换所述本地缓存中的历史窗口数据,包括:所述当前过滤器处理单元将所述新的窗口数据写入所述索引文件,替换所述历史窗口数据。

可选地,如果所述当前过滤器处理单元判定不需要构建窗口数据,所述方法还包括:

所述当前过滤器处理单元向下游链路传输所述控制信号以及所述增量数据的处理结果。

第二方面,本公开提供一种数据处理装置,所述数据处理装置属于当前过滤器处理单元,所述装置包括:

接收模块,用于接收上游过滤器处理单元发送的增量数据以及控制信号,所述控制信号包括所述增量数据对应的起始时间;

判断模块,用于判断是否需要构建窗口数据;

读取模块,用于在所述判断模块判定需要构建窗口数据时,根据预设窗口大小以及所述起始时间,从本地缓存中读取历史窗口数据;

清理模块,用于根据所述增量数据对应的时间步长,清理所述历史窗口数据中时间最久的数据,得到所述历史窗口数据中的保留数据;

构建模块,用于基于所述保留数据以及所述增量数据,构建新的窗口数据,所述新的窗口数据的窗口大小与所述预设窗口大小相同;

替换模块,用于利用所述新的窗口数据替换所述本地缓存中的历史窗口数据。

可选地,所述预设窗口大小通过所述控制信号传递至所述当前过滤器处理单元;或者,所述预设窗口大小预先配置于所述当前过滤器处理单元。

可选地,所述判断模块,用于在配置有预设标志位时,通过所述预设标志位的状态判断是否需要构建窗口数据。

可选地,所述判断模块,用于判断是否配置有所述预设窗口大小;如果配置有所述预设窗口大小,则判定需要构建窗口数据。

可选地,所述当前过滤器处理单元设置有对应的索引文件,则

所述读取模块,用于从所述索引文件中读取所述历史窗口数据;

所述替换模块,用于将所述新的窗口数据写入所述索引文件,替换所述历史窗口数据。

可选地,所述装置还包括:

传输模块,用于在所述判断模块判定不需要构建窗口数据时,向下游链路传输所述控制信号以及所述增量数据的处理结果。

第三方面,本公开提供一种数据处理装置,所述数据处理装置属于当前过滤器处理单元,所述装置包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

接收上游过滤器处理单元发送的增量数据以及控制信号,所述控制信号包括所述增量数据对应的起始时间;

判断是否需要构建窗口数据;

如果需要构建窗口数据,则根据预设窗口大小以及所述起始时间,从本地缓存中读取历史窗口数据;

根据所述增量数据对应的时间步长,清理所述历史窗口数据中时间最久的数据,得到所述历史窗口数据中的保留数据;

基于所述保留数据以及所述增量数据,构建新的窗口数据,并利用所述新的窗口数据替换所述本地缓存中的历史窗口数据,所述新的窗口数据的窗口大小与所述预设窗口大小相同。

本公开的数据处理方案,可以改进现有的管道-过滤器模式,在相邻过滤器处理单元之间增设用于传递控制信号的控制管道,并使需要构建窗口数据的过滤器处理单元具有本地缓存读写能力。这样,上游链路通过数据管道传递增量数据时,还可以通过控制管道传递该增量数据对应的起始时间,便于当前过滤器处理单元根据起始时间和预设窗口大小,从本地缓存中读取历史窗口数据,进而结合增量数据以及历史窗口数据,构建一个完整的新的窗口数据,使增量查询方案能够更好的适用于管道-过滤器模式。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是现有技术的管道-过滤器模式的示意图;

图2是本公开的管道-过滤器模式的示意图;

图3是本公开数据处理方法的流程示意图;

图4是本公开数据处理装置的一种结构示意图;

图5是本公开数据处理装置的另一种结构示意图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

在介绍本公开方案之前,先对管道-过滤器模式作如下解释说明。

参见图1所示现有的管道-过滤器模式,可以包括:多个用于进行数据处理的过滤器处理单元,多个在相邻过滤器处理单元之间进行数据传递的数据管道。其中,根据所实现功能的不同,过滤器处理单元可以分为两种类型:用于进行全局处理的过滤器处理单元、用于进行非全局处理的过滤器处理单元。例如,过滤器处理单元被配置为对窗口数据进行数据分类、平均值计算等,则可认为该过滤器处理单元需要对完整的窗口数据进行全局处理。

举例来说,在8:00创建以下任务:通过管道-过滤器模式采集交易记录,并根据交易记录中的交易金额,每隔10分钟,计算一次最近一小时单笔交易的平均交易金额。其中,最近一小时采集的交易记录中的交易金额可以视为一个完整的窗口数据,最近一小时单笔交易的平均交易金额可以视为一个窗口数据的查询结果。

如果采用全量查询方案实现上述任务:首先,过滤器处理单元1可以在8:00从数据源中加载7:00~8:00的原始数据,配合链路中的其他过滤器处理单元计算得到一个平均交易金额。其次,过滤器处理单元1可以在8:10从数据源中加载7:10~8:10的原始数据,配合链路中的其他过滤器处理单元计算得到另一个平均交易金额。如此往复,每隔10分钟进行一次数据加载及平均交易金额计算。通过本示例可知,多次往复查询会加载大量的重复数据,造成资源浪费。

如果采用增量查询方案实现上述任务:首先,过滤器处理单元1可以在8:00从数据源中加载7:00~8:00的原始数据,配合链路中的其他过滤器处理单元计算得到一个平均交易金额。其次,过滤器处理单元1可以在8:10从数据源中加载8:00~8:10的原始数据,即链路中只传递增量数据,如果过滤器处理单元3被配置为计算平均交易金额,则在本轮数据处理过程中,过滤器处理单元3只能接收到上游链路传递的8:00~8:10这一时间段的增量数据,也就是说,过滤器处理单元3无法得到7:10~8:10完整的窗口数据,也就无法计算7:10~8:10对应的平均交易金额。

针对上述问题,本公开提供一种数据处理方法,以使增量查询方案能够更好的适用于管道-过滤器模式。对应于此,本公开方案需对图1所示管道-过滤器模式做如下两方面改进:

第一方面,构建一个完整的窗口数据,需要明确该窗口对应的时间,因此,可以在相邻过滤器处理单元之间增设用于传递控制信号的控制管道,通过控制信号标识数据管道所传增量数据的起始时间。

第二方面,考虑到过滤器处理单元通过数据管道接收到的数据,均经过了上游链路的加工处理,为了使增量查询具有可行性,对于需要构建窗口数据的过滤器处理单元来说,可将其配置为具有本地缓存读写能力。这样,可以将上游链路加工处理后的数据作为历史数据进行本地缓存,过滤器处理单元就可以通过读取历史数据的方式,构建完整的窗口数据。作为一种示例,可以通过为过滤器处理单元配置索引文件的方式,实现数据的本地缓存。

经上述两方面改进,便可得到图2所示管道-过滤器模式,进而按照本公开的数据处理方案实现窗口数据的增量查询。下面结合示例对本公开方案进行解释说明。

参见图3为本公开数据处理方法的流程示意图。该方法可以包括以下步骤:

步骤301,当前过滤器处理单元接收上游过滤器处理单元发送的增量数据以及控制信号,所述控制信号包括所述增量数据对应的起始时间。

进行增量查询时,当前过滤器处理单元可以通过数据管道接收上游过滤器处理单元传递的增量数据,并通过控制管道接收上游过滤器处理单元传递的控制信号。

结合上文所举示例,过滤器处理单元1在8:10从数据源中加载8:00~8:10的原始数据,即,经数据管道传递至过滤器处理单元3的为8:00~8:10这一时间段的增量数据,且经过了过滤器处理单元1、2的加工处理;经控制管道传递至过滤器处理单元3的控制信号中至少可以包括增量数据对应的起始时间8:00。

可以理解地,本公开方案可以将链路中正在进行数据处理的过滤器处理单元称为当前过滤器处理单元。上述示例中,过滤器处理单元3即为当前过滤器处理单元。

步骤302,所述当前过滤器处理单元判断是否需要构建窗口数据。

本公开方案中,需要构建窗口数据的过滤器处理单元通常具有以下特性:用于进行全局处理;具有上游过滤器处理单元,即,不能直接利用数据源中的原始数据构建本过滤器处理单元需要的窗口数据。

作为一种示例,可以通过配置预设标志位的方式,判断是否需要构建窗口数据。具体地,可以获取预设标志位的状态,据此判断是否需要构建窗口数据。举例来说,预设标志位状态为“1”表示需要构建窗口数据,为“0”表示不需要构建窗口数据。

作为一种示例,可以通过是否配置了预设窗口大小,判断是否需要构建窗口数据。具体地,如果当前过滤器处理单元配置有预设窗口大小,则说明需要构建窗口数据。

步骤303,如果需要构建窗口数据,所述当前过滤器处理单元根据预设窗口大小以及所述起始时间,从本地缓存中读取历史窗口数据。

步骤304,所述当前过滤器处理单元根据所述增量数据对应的时间步长,清理所述历史窗口数据中时间最久的数据,得到所述历史窗口数据中的保留数据。

步骤305,所述当前过滤器处理单元基于所述保留数据以及所述增量数据,构建新的窗口数据,并利用所述新的窗口数据替换所述本地缓存中的历史窗口数据,所述新的窗口数据的窗口大小与所述预设窗口大小相同。

如果判定当前过滤器处理单元需要构建窗口数据,可以先读取历史窗口数据,并在此基础上清理过期数据,添加增量数据,形成新的窗口数据。具体可体现为以下步骤:

首先,可以访问本地缓存,在起始时间的基础上向前推,确定出符合预设窗口大小的数据,作为历史窗口数据。上文所举示例中,起始时间为8:00,预设窗口大小为1小时,故可前推将7:00~8:00之间的数据确定为历史窗口数据。

本公开方案中,可以预先在当前过滤器处理单元中配置预设窗口大小;或者,可以通过控制信号向当前过滤器处理单元传递预设窗口大小,即,控制信号中至少包括:增量数据对应的起始时间、预设窗口大小。本公开方案对当前过滤器处理单元获得预设窗口大小的方式可不做具体限定。

其次,根据增量数据对应的时间步长,确定出历史窗口数据中的过期数据,进行过期数据清理。上文所举示例中,增量数据对应的时间步长为10分钟(8:00~8:10),故可将历史窗口数据中时间最久的数据,即7:00~7:10之间的数据确定为过期数据,进行数据清理,将7:10~8:00之间的数据确定为历史窗口数据中的保留数据。

最后,利用上游过滤器处理单元传递的增量数据、历史窗口数据中的保留数据,构建新的窗口数据。对应于上文所举示例,可构建得到7:10~8:10完整的窗口数据,进而计算得到7:10~8:10对应的平均交易金额。

可以理解地,为了确保下一轮数据处理过程的正常进行,可在本地缓存新的窗口数据,且为了尽量减少本地缓存所占空间,可以采用新的窗口数据替换历史窗口数据的方式,进行数据保存。这样,在计算下一轮7:20~8:20对应的平均交易金额时,可将7:10~8:10这一时间段的数据作为历史窗口数据使用,构建下一轮数据处理过程对应的新的窗口数据,如此循环往复,在管道-过滤器模式实现增量查询。

下面再结合上文所举计算平均交易金额的任务,对本公开方案的实现过程进行解释说明。

假设,过滤器处理单元1、2用于进行非全局处理,过滤器处理单元3用于进行全局处理,且过滤器处理单元1中配置有以下信息:预设窗口大小为1小时、更新步长为10分钟。本公开的数据处理过程可简述如下:

首先,过滤器处理单元1在8:00从数据源中加载7:00~8:00的原始数据,经过逐级传递处理后,由过滤器处理单元3计算得到7:00~8:00的平均交易金额,进行结果输出。与此同时,过滤器处理单元3还可以将过滤器处理单元2通过数据管道传递的7:00~8:00的数据写入索引文件中。

其次,过滤器处理单元1在8:10从数据源中加载8:00~8:10的原始数据,完成数据处理后通过数据管道向过滤器处理单元2传递数据处理结果,通过控制管道向过滤器处理单元2传递控制信号,控制信号中可以包括:预设窗口大小1小时、起始时间8:00。

接着,过滤器处理单元2接收到过滤器处理单元1传递的数据及控制信号,判定过滤器处理单元2不需要构建窗口数据,过滤器处理单元2可做如下处理:

(1)对过滤器处理单元1传递的数据进行数据处理,通过数据管道向过滤器处理单元3传递数据处理结果;

(2)通过控制管道向过滤器处理单元3传递控制信号,控制信号中可以包括:预设窗口大小1小时、起始时间8:00。

最后,过滤器处理单元3接收到过滤器处理单元2传递的数据及控制信号,判定过滤器处理单元3需要构建窗口数据,过滤器处理单元3可做如下处理:

(1)从索引文件中读取7:00~8:00的数据作为历史窗口数据,结合过滤器处理单元2本次传递的8:00~8:10的增量数据,得到7:10~8:10完整的窗口数据,作为本轮数据处理的新的窗口数据;

(2)利用新的窗口数据进行平均值计算,得到7:10~8:10的平均交易金额,进行结果输出;

(3)将新的窗口数据(7:10~8:10的数据)写入索引文件中,替换掉历史窗口数据(7:00~8:00的数据)。至此,便可完成本轮数据处理过程。

参见图4为本公开数据处理装置的结构示意图。所述数据处理装置属于当前过滤器处理单元,所述装置包括:

接收模块401,用于接收上游过滤器处理单元发送的增量数据以及控制信号,所述控制信号包括所述增量数据对应的起始时间;

判断模块402,用于判断是否需要构建窗口数据;

读取模块403,用于在所述判断模块判定需要构建窗口数据时,根据预设窗口大小以及所述起始时间,从本地缓存中读取历史窗口数据;

清理模块404,用于根据所述增量数据对应的时间步长,清理所述历史窗口数据中时间最久的数据,得到所述历史窗口数据中的保留数据;

构建模块405,用于基于所述保留数据以及所述增量数据,构建新的窗口数据,所述新的窗口数据的窗口大小与所述预设窗口大小相同;

替换模块406,用于利用所述新的窗口数据替换所述本地缓存中的历史窗口数据。

可选地,所述预设窗口大小通过所述控制信号传递至所述当前过滤器处理单元;或者,所述预设窗口大小预先配置于所述当前过滤器处理单元。

可选地,所述判断模块,用于在配置有预设标志位时,通过所述预设标志位的状态判断是否需要构建窗口数据。

可选地,所述判断模块,用于判断是否配置有所述预设窗口大小;如果配置有所述预设窗口大小,则判定需要构建窗口数据。

可选地,所述当前过滤器处理单元设置有对应的索引文件,则

所述读取模块,用于从所述索引文件中读取所述历史窗口数据;

所述替换模块,用于将所述新的窗口数据写入所述索引文件,替换所述历史窗口数据。

可选地,所述装置还包括:

传输模块,用于在所述判断模块判定不需要构建窗口数据时,向下游链路传输所述控制信号以及所述增量数据的处理结果。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

参见图5为本公开数据处理装置500的结构示意图。例如,装置500可以被提供为一服务器。参照图5,装置500包括处理组件501,其进一步包括一个或多个处理器,以及由存储器502所代表的存储器资源,用于存储可由处理组件501的执行的指令,例如应用程序。存储器502中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件501被配置为执行指令,以执行上述数据处理方法。

装置500还可以包括一个电源组件503被配置为执行装置500的电源管理,一个有线或无线网络接口504被配置为将装置500连接到网络,和一个输入输出(i/o)接口505。装置500可以操作基于存储在存储器502的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1