一种可变间隔的去除重复流数据的会话窗口设计方法技术

技术编号:21343148 阅读:42 留言:0更新日期:2019-06-13 22:20
本发明专利技术提供了一种可变间隔的去除重复流数据的会话窗口设计方法,包括如下内容:构建分配器,用于创建窗口并为窗口分配元素;为每一个窗口构建驱动器,驱动器用于对窗口进行操作;构建输出器,用于按照预设规则输出窗口中的元素;为窗口创建合并机制。本发明专利技术通过特定的合并窗口机制实现窗口的重复数据的去除。

A Session Window Design Method for Removing Duplicate Stream Data with Variable Interval

The invention provides a session window design method for removing duplicate stream data at variable intervals, which includes the following contents: constructing an allocator for creating windows and assigning elements to windows; constructing a driver for each window, which is used for operating windows; constructing an output device for outputting elements in windows according to preset rules; and creating a merging mechanism for windows. The invention realizes the removal of duplicate data of a window through a specific merging window mechanism.

【技术实现步骤摘要】
一种可变间隔的去除重复流数据的会话窗口设计方法
本专利技术属于流计算
,具体涉及一种流计算系统中会话窗口的设计,特别是一种可变间隔的去除重复的流数据会话窗口设计方法。
技术介绍
流数据可以看成是一组组离散事件集合体,由成千上万的数据源,源源不断的持续生成,生成的数据流以log(非传统意义上的系统日志)方式传送。流数据具有四个特点:1)数据实时到达;2)数据到达次序独立,不受应用系统所控制;3)数据规模宏大且不能预知其最大值;4)数据一经处理,除非特意保存,否则不能被再次取出处理,或者再次提取数据代价昂贵。流计算的产生即来源于对于流数据加工时效性的严苛需求:数据的业务价值随着时间的流失而迅速降低,因此在数据发生后必须尽快对其进行计算和处理。通常而言,流计算具备三大类特点:1)实时且无界的数据流;2)持续且高效的计算3)流式且实时的数据集成。在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当有时我们需要做一些聚合类的处理,而聚合操作只能作用在特定的数据集,也即有界的数据集上。因此需要通过某种方式从无界的数据集上按特定的语义选取出有界的数据。窗口是一种非常常用的设定计算边界的方式。窗口可以是时间驱动的,也可以是数据驱动的。一种经典的窗口分类可以分成:翻滚窗口,滚动窗口,和会话窗口。会话窗口是针对分析用户的一段交互的行为事件需求,将用户的事件流按照“session”来分组。session是指一段持续活跃的期间,由活跃间隙分隔开。消息之间的间隔小于超时阈值(sessionGap)的,则被分配到同一个窗口,间隔大于阈值的,则被分配到不同的窗口。一般而言,窗口是在无限的流上定义了一个有限的元素集合。这个集合可以是基于时间的,元素个数的,时间和个数结合的,会话间隙的,或者是自定义的。窗口的选择与设计是流数据处理的基础,对于后续处理分析有着重要的影响。现有技术中,对于一般会话窗口来说,当元素被分配到窗口之后,这些窗口是固定的不会改变的,而且窗口之间不会相互作用。对于某些场景存在数据重复冗余的问题,比如需要对窗口中的数据求和的情况,或者需要前期去除重复数据以减少处理函数的计算与存储所需的资源的情况。因此,针对同一种要素(Key)在相同的时间间隔内(gap)同一种访问操作重复出现多次的情况,需要提出一种简便,高效的去重会话窗口设计方法。
技术实现思路
有鉴于此,本专利技术旨在提出一种可变间隔的去除重复流数据的会话窗口设计方法,以解决流数据处理中特定应用场景中数据重复冗余的问题。为达到上述目的,本专利技术的技术方案是这样实现的:一种可变间隔的去除重复流数据的会话窗口设计方法,包括如下内容:步骤1、构建分配器(assigner),用于创建窗口并为窗口分配元素;步骤2、为每一个窗口构建驱动器(trigger),用于对窗口进行操作;步骤3、构建输出器(evictor),用于按照预设业务规则输出窗口中的元素;步骤4、为会话窗口(sessionwindow)创建合并机制。进一步的,所有窗口的组件都位于一个算子(operator)中,数据流源源不断地进入算子,每一个到达的元素都会被交给分配器。分配器按照预设好的规则将每一个到达的元素放入一个或者多个窗口(window)中,并且按照需求创建新窗口。进一步的,为了节省空间,窗口本身只是一个ID标识符,其内部存储了其他的元数据,如窗口的开始时间和结束时间,但是并不会存储窗口中的元素。进一步的,每一个窗口都拥有一个属于自己的驱动器,每个驱动器包含一个定时器,用来决定一个窗口何时能够被计算或清除。每当有元素加入到该窗口,或者之前注册的定时器超时了,那么驱动器就会被调用。驱动器的返回结果可以是continue(不做任何操作),fire(处理窗口数据),purge(移除窗口和窗口中的数据),或者fire+purge(处理窗口数据后销毁窗口)。一个驱动器的调用结果如果只是fire的话,那么只会处理窗口中的数据元素并保留窗口原样,也就是说窗口中的数据仍然保留不变,等待下次驱动器的操作。一个窗口可以被重复计算多次直到它被purge。在purge之前,窗口会一直占用着内存。进一步的,当处理器对窗口中的数据进行计算,窗口中的元素集合就会交给输出器;输出器主要用来遍历窗口中的元素列表,并根据业务规则,移除或者过滤掉无效元素,决定最先进入窗口的多少个元素需要被移除。剩余的元素会交给用户指定的函数进行窗口的计算。如果没有输出器的话,窗口中的所有元素会一起交给函数进行计算。计算函数收到了窗口的元素(经过输出器的过滤),并计算出窗口的结果值,并发送给下游。窗口的结果值可以是一个也可以是多个。进一步的,会话窗口的分配器会为每个进入的元素分配一个窗口,该窗口以元素的时间戳作为起始点,时间戳加会话超时时间为结束时间。举例来说,先到达的两个元素被分配到两个独立的窗口中,两个窗口目前不相交。当第三个元素进入时,分配到的窗口与现有的两个窗口发生了叠加。由于支持了窗口的合并,会话窗口分配器可以合并这些窗口。它会遍历现有的窗口,并告诉系统哪些窗口需要合并成新的窗口。合并的主要内容有两部分:(1)需要合并的窗口的底层状态的合并(也就是窗口中缓存的数据,或者对于聚合窗口来说是一个聚合值)(2)需要合并的窗口的触发器的合并(比如会删除旧窗口注册的定时器,并注册新窗口的定时器)。对于每一个新进入的元素,都会分配一个属于该元素的窗口,都会检查并合并现有的窗口。在触发窗口计算之前,每一次都会检查该窗口是否可以和其他窗口合并,直到驱动器trigger发出purge命令后,会将该窗口从窗口列表中移除。进一步的,所述分配器会为新进入的元素分配一个窗口,窗口以元素的时间戳作为起始点,时间戳加会话超时时间为结束时间;当队列中已存在窗口时,每次新进入一个元素分配器建立窗口后,分配器会遍历现有的窗口,将这个元素的时间戳与上一个元素窗口的第一个元素的时间戳相比较,如果两者之间的差值超过预先设定的间隔,则认定为两个窗口;否则按照时间顺序合并两个窗口中的元素,并且保持每种元素仅出现一次。相对于现有技术,本专利技术具有以下优势:本专利技术解决了流数据处理中特定应用场景中数据重复冗余的问题,通过会话窗口底层结构的设计,减少了会话窗口占用的内存资源。并且在窗口中就完成了对重复数据的去除,不需要在后续的计算函数中再次过滤数据,不仅大大节省了计算资源也减少了数据存储的内存资源。附图说明构成本专利技术的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术实施例流计算系统窗口机制及组建工作流程图;图2为本专利技术实施例流计算会话窗口示意图;图3为本专利技术实施例会话窗口合并示意图。具体实施方式需要说明的是,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本专利技术。本实施例以交通卡口流量监测场景为例,正常情况下车辆不会在短时间内重复多次通过一个卡口,如果短时间出现车辆重复数据,可能车辆停在了附近,或出现了拥堵。在这种情况下,必须去除重复数据才能真实反映车流量(流量突然大幅降低)情况,为了实时去重(在统计流量前去重,而不是入库后再去重)和节本文档来自技高网
...

【技术保护点】
1.一种可变间隔的去除重复流数据的会话窗口设计方法,其特征在于包括如下内容:1)构建分配器,用于创建窗口并为窗口分配元素;2)为每一个窗口构建驱动器,驱动器用于对窗口进行操作;3)构建输出器,用于按照预设规则输出窗口中的元素;4)为窗口创建合并机制。

【技术特征摘要】
1.一种可变间隔的去除重复流数据的会话窗口设计方法,其特征在于包括如下内容:1)构建分配器,用于创建窗口并为窗口分配元素;2)为每一个窗口构建驱动器,驱动器用于对窗口进行操作;3)构建输出器,用于按照预设规则输出窗口中的元素;4)为窗口创建合并机制。2.根据权利要求1所述的一种可变间隔的去除重复流数据的会话窗口设计方法,其特征在于:所述窗口本身只是一个ID标识符。3.根据权利要求1所述的一种可变间隔的去除重复流数据的会话窗口设计方法,其特征在于:每个驱动器包含一个定时器,用来决定一个窗口何时能够被计算或清除;驱动器的返回结果包括不做任何操作、处理窗口数据、移除窗口和窗口中的数据、处理窗口数据后销毁窗口。4.根据权利要求1所述的一种可变间隔的去除重复流数据的会话窗口设计方法,其特征在于:所述输出器遍历窗口中的元素列表,并...

【专利技术属性】
技术研发人员:何江于伟武新
申请(专利权)人:天津南大通用数据技术股份有限公司
类型:发明
国别省市:天津,12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1