一种数据乱序到达处理方法和系统与流程

文档序号:11627757阅读:252来源:国知局
一种数据乱序到达处理方法和系统与流程

本发明涉及大数据分析处理技术领域,具体是一种数据乱序到达处理方法和系统。



背景技术:

目前大数据产业背景下,实时流技术是一种将批次化、有序、整齐的序列化数据,固定地往分析器中推送的数据处理技术。由于分析器对数据格式要求严格,这直接导致大多数情况下,数据格式单一,序列化要求严格。然而,在实时流数据源中,数据往往并非都是来自高度序列化的场景,因数据乱序到达导致数据清洗结果与原数据结果经常呈现不一致,数据时序性差,数据质量低。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种数据乱序到达处理方法和系统,本发明通过对实时流数据时间分片分批分配的原理,使spark处理节点上在存储redis过程中进行逻辑分配,从而解决了实时流数据的乱序到达问题,提升了数据的有效性和时序性。

本发明的目的是通过以下技术方案来实现的:一种数据乱序到达处理方法,它包括以下步骤:

s103:提取当前时间窗口字段,将时间窗口字段处理成日期类型数据;

s104:判断用户流数据是否存在指定时间窗口字段,

(1)如果用户流数据没有指定时间窗口字段,则使用当前时间作为时间分片字段;

(2)如果用户流数据有指定时间窗口字段,且指定的时间窗口字段不在合法窗口内,则丢弃该字段并记录日志,将日志作为时间分片字段;

(3)如果用户流数据有指定时间窗口字段,且指定的时间窗口字段在合法窗口内,则使用该字段作为该条用户数据的时间分片字段;

s105:标记步骤s4中得到的时间分片字段所在的时间窗口字段,并从redis存储库中提取在该时间窗口字段之前的数据集;

s106:判断标记的时间窗口字段的时间分片数据是否在步骤s5中提取的数据集中,

(1)如果所述的时间分片数据在数据集中,则将所述的时间分片数据与数据集合并,并将合并后的数据重新存储到redis存储库中;

(2)如果所述的时间分片数据不在数据集中,则对所述的时间分片数据新建数据表单,并将新建数据表单添加到redis存储库中;

s107:存储该条用户流数据到redis存储库中,更新redis存储库。

进一步,在步骤s103之前,还包括以下步骤:

s101:接收用户流数据;

s102:对接收到的用户流数据进行预处理,判断数据的有效性,并对有效数据转换数据类型。

所述的用户流数据包括传感器数据、业务系统数据和服务器日志。

一种数据乱序到达处理系统,它包括:

数据处理模块,用于将时间窗口字段处理成日期类型数据;

第一判断模块,用于判断用户流数据是否存在指定时间窗口字段;

标记模块,用于标记时间分片字段所在的时间窗口字段;

第二判断模块,用于判断标记的时间窗口字段的时间分片数据是否在提取的数据集中;

redis存储库模块,用于存储时间分片数据和用户流数据。

进一步,所述的系统还包括数据接收模块,用于接收用户流数据。

进一步,所述的系统还包括预处理模块,用于对接收到的用户流数据进行预处理,判断数据的有效性,并对有效数据转换数据类型。

进一步,所述的系统它还包括配置模块,用于配置数据清洗流程。

本发明的有益效果是:

(1)本发明采用了spark集群环境的分布式处理优势,并结合了redis存储库中的nosql存储快的特点,能够快速地构建数据分片的存储地址,从而使乱序的时间分片得到有效地划分和有效地区别;

(2)本发明基于对实时流数据时间分片分批分配的原理,使spark处理节点上在存储redis的过程中进行逻辑分配,解决了实时流数据的乱序到达的问题,尤其适用于解决数据源并非序列化的场景,显著提升了数据的有效性和时序性;

(3)本发明解决了现有流式数据无法对乱序到达的消息进行处理的瓶颈问题,可以集成到现有序列化数据处理系统中,提高对实时流数据的处理能力;

(4)本发明解决了实时流数据源中,因数据乱序到达导致数据清洗结果与原数据结果呈现不一致的问题,使用本发明后,可以有效地根据时间分片来对乱序到达的数据进行分批分配处理。

附图说明

图1为本发明方法的流程图;

图2为本发明系统的功能模块构架图。

具体实施方式

下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。

如图1所示,一种数据乱序到达处理方法,它包括以下步骤:

s103:提取当前时间窗口字段,将时间窗口字段处理成日期类型数据;

s104:判断用户流数据是否存在指定时间窗口字段,

(1)如果用户流数据没有指定时间窗口字段,则使用当前时间作为时间分片字段;

(2)如果用户流数据有指定时间窗口字段,且指定的时间窗口字段不在合法窗口内,则丢弃该字段并记录日志,将日志作为时间分片字段;

(3)如果用户流数据有指定时间窗口字段,且指定的时间窗口字段在合法窗口内,则使用该字段作为该条用户数据的时间分片字段;

s105:标记步骤s4中得到的时间分片字段所在的时间窗口字段,并从redis存储库中提取在该时间窗口字段之前的数据集;

s106:判断标记的时间窗口字段的时间分片数据是否在步骤s5中提取的数据集中,

(1)如果所述的时间分片数据在数据集中,则将所述的时间分片数据与数据集合并,并将合并后的数据重新存储到redis存储库中;

(2)如果所述的时间分片数据不在数据集中,则对所述的时间分片数据新建数据表单,并将新建数据表单添加到redis存储库中;

s107:存储该条用户流数据到redis存储库中,更新redis存储库。

进一步,在步骤s103之前,还包括以下步骤:

s101:接收用户流数据;

s102:对接收到的用户流数据进行预处理,判断数据的有效性,并对有效数据转换数据类型。

所述的用户流数据包括传感器数据、业务系统数据和服务器日志。

如图2所示,一种数据乱序到达处理系统,它包括:

数据处理模块,用于将时间窗口字段处理成日期类型数据;

第一判断模块,用于判断用户流数据是否存在指定时间窗口字段;

标记模块,用于标记时间分片字段所在的时间窗口字段;

第二判断模块,用于判断标记的时间窗口字段的时间分片数据是否在提取的数据集中;

redis存储库模块,用于存储时间分片数据和用户流数据。

进一步,所述的系统还包括数据接收模块,用于接收用户流数据。

进一步,所述的系统还包括预处理模块,用于对接收到的用户流数据进行预处理,判断数据的有效性,并对有效数据转换数据类型。

进一步,所述的系统它还包括配置模块,用于配置数据清洗流程。

实施例:

本发明是根据redis存储原理,将数据进行分批次存储,供以外部接口进行调用查询,目前,一种sdcsream大数据实时流产品已采用本发明进行数据乱序到达处理,通过实际测试运用,效果非常理想。下面结合附图再进一步详细描述本发明的技术存储方案:

如图1所示,在本发明存储步骤流程图中,主要包括流式数据接收、数据转换、数据时间片段判断和数据存储到redis等几个步骤。在本实施例中,数据存储逻辑判断是通过java代码结合spark调度和redis存储完成的:

第一步:接收流数据,并传输到乱序到达处理模块;

第二步:对流数据进行预处理,例如对数据进行初步清洗,判断确认数据的有效性;

第三步:甄选当前时间窗口字段设置的值;

第四步:做系统逻辑判断,判断用户是否有制定时间字段;

①如果用户未指定时间窗口字段,系统会使用当前时间作为有效的时间分片字段;

②如果用户所指定的时间窗口字段不在合法窗口内,系统无法对字段进行分片处理,则丢弃掉该条数据并记录日志;

③如果用户指定的时间窗口字段可以使用并有效,则使用该字段作为该条流数据的时间分片数据;

第五步:将第四步得到的时间窗口字段进行标记,并从redis库中取出该时间窗口字段之前处理的数据集合;

第六步:将该条时间分片数据与当前取出来的数据集合进行对比:

①如果该条时间分片数据存在数据集合中,则做合并处理并重新记录到redis中;

②如果该条时间分片数据不在数据集合中,则做新建数据表单处理,并将新建的数据表单添加到redis中;

第七步:根据该组件功能,对该条流数据分片做数据存储,重新刷新redis并存入;

在本发明的技术架构中,首先储备了大数据实时流数据,然后在一种sdcstream系统中的展示层,利用可视化流程配置器,配置数据的整体清洗流程,当数据进入整体系统处理层,优先到达资源适配器,系统根据资源内容去拿取数据资源,得到后实例化消息解析器,通过拆分实时流数据源,从而生成对应数据模型,在得到spark所能辨识的数据模型后,开始调用spark调度器,基于核心库结合组件库,进行数据分析,处理当前流数据;通过将当前时间分片数据进行逻辑判断,取时间窗口字段与redis分片存储器进行比对,将当前流数据存储到对应的redis存储器中,输出结果数据。

本发明采用了spark集群环境的分布式处理优势,并结合了redis存储库中的nosql存储快的特点,能够快速地构建数据分片的存储地址,从而使乱序的时间分片得到有效地划分和有效地区别,基于对实时流数据时间分片分批分配的原理,使spark处理节点上在存储redis的过程中进行逻辑分配,解决了实时流数据的乱序到达的问题,尤其适用于解决数据源并非序列化的场景,显著提升了数据的有效性和时序性。

本发明解决了现有流式数据无法对乱序到达的消息进行处理的瓶颈问题,可以集成到现有序列化数据处理系统中,提高对实时流数据的处理能力;使用本发明后,可以有效地根据时间分片来对乱序到达的数据进行分批分配处理,可以避免在实时流数据源中,由于数据乱序到达,导致数据清洗结果与原数据结果呈现不一致的问题。

本领域技术人员可以意识到,结合本文中所公开描述的方法步骤及模块,能够以计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法实现所描述的功能,但是这种实现不应超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的方法、系统和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本发明所揭露的方法、模块和系统,可以通过其它的方式实现。例如,以上所描述的实施例仅是示意性的,例如,所述模块的划分,可以仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以说通过一些接口,系统或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述分立部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例的方案目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、制度存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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