一种处理方法及计算机设备与流程

文档序号:21361550发布日期:2020-07-04 04:35阅读:159来源:国知局
本申请属于流数据处理
技术领域
:,尤其涉及一种处理方法及计算机设备。
背景技术
::流数据是指以大量、快速、时变的形式持续产生的数据,具有来源广泛、实时性强的特点。由于来源广泛,从而流数据的数据格式(schema)较为随意、比较多样化,这就使得在对流数据进行清洗、挖掘、分析等流计算处理过程中,需要定制化程度比较高的流计算功能来实现对流数据进行处理,相对应地,需要由开发人员定制化编制(如采用c/c++、java等语言)多种多样的用于实现流计算功能的程序,以应对多样化的流数据格式,工作量及难度较高,缺乏一个稳定、统一的流计算应用基础。技术实现要素:有鉴于此,本申请提供了一种处理方法及计算机设备,目的在于避免定制化编制流计算程序的过程,提供一个稳定、统一的流计算应用基础,相应降低开发人员的工作量及难度。为此,本申请公开如下技术方案:一种处理方法,包括:从流编目中获得目标类别的流数据对应的目标类元数据;所述流编目中预先注册有至少一个类别的流数据对应的至少一类元数据,一类元数据对应一个按预定的格式规范定义的流表;获得当前采集的目标类别的流数据;基于所述目标类元数据,生成所述目标类别的流数据对应的流表实例;基于所述流表实例,对所述目标类别的流数据进行流计算处理。上述方法,优选地,所述从流编目中获得目标类别的流数据对应的目标类元数据,包括:基于结构化查询语言sql查询语句,从所述流编目中查询目标类别的流数据对应的目标类元数据;生成包括所述目标类元数据的会话接口。上述方法,优选地,所述会话接口中还包括所述目标类别的流数据的来源方式;所述基于所述目标类元数据,生成所述目标类别的流数据对应的流表实例,包括:调用所述会话接口;根据所述会话接口中目标类别的流数据的来源方式,调用相应的流引擎;获得用于实现流表写入功能的sql流表写入语句;利用所述流引擎,基于所述sql流表写入语句从所述目标类别的流数据中抽取对应于所述目标类元数据的各个子数据,并按所述预定的格式规范将抽取的各个子数据写入所述目标类元数据对应的流表,得到所述流表实例;其中,所述流表实例为创建于内存中的流表实例。上述方法,优选地,所述基于所述流表实例,对所述目标类别的流数据进行流计算处理,包括:调用所述会话接口;根据所述会话接口中目标类别的流数据的来源方式,调用相应的流引擎;获得用于进行流计算处理的sql流处理语句;利用所述流引擎,基于所述sql流处理语句中的第一sql语句从所述流表实例中查询所需的目标子数据;利用所述流引擎,基于所述sql流处理语句中的第二sql语句对所述目标子数据进行流计算,得到流计算结果。上述方法,优选地,还包括:利用相应的流引擎对流表或流编目中的元数据进行管理;其中,所述对流表或流编目中的元数据进行管理,包括以下至少一种:向流编目中注册元数据,并创建对应于所注册元数据的流表;从流编目中清除元数据,并删除对应于所清除元数据的流表;对流编目中的元数据进行升级,并调整对应于所升级元数据的流表;从流编目中查询流表的元数据;查询流表或流表列表;判断流表是否存在。上述方法,优选地,还包括:通过流数据的会话接口,读取sql流控制语句,并利用sql流控制语句对流数据进行流控制;所述会话接口为包括流数据对应的元数据的接口;所述流控制包括:查看流处理功能和/或关闭流处理功能。一种计算机设备,包括:存储器,用于至少存储一组指令集;处理器,用于调用并执行所述存储器中的所述指令集,通过执行所述指令集进行以下操作:从流编目中获得目标类别的流数据对应的目标类元数据;所述流编目中预先注册有至少一个类别的流数据对应的至少一类元数据,一类元数据对应一个按预定的格式规范定义的流表;获得当前采集的目标类别的流数据;基于所述目标类元数据,生成所述目标类别的流数据对应的流表实例;基于所述流表实例,对所述目标类别的流数据进行流计算处理。上述计算机设备,优选地,所述处理器从流编目中获得目标类别的流数据对应的目标类元数据,包括:基于sql查询语句,从所述流编目中查询目标类别的流数据对应的目标类元数据;生成包括所述目标类元数据的会话接口。上述计算机设备,优选地,所述会话接口中还包括所述目标类别的流数据的来源方式;所述处理器基于所述目标类元数据,生成所述目标类别的流数据对应的流表实例,包括:调用所述会话接口;根据所述会话接口中目标类别的流数据的来源方式,调用相应的流引擎;获得用于实现流表写入功能的sql流表写入语句;利用所述流引擎,基于所述sql流表写入语句从所述目标类别的流数据中抽取对应于所述目标类元数据的各个子数据,并按所述预定的格式规范将抽取的各个子数据写入所述目标类元数据对应的流表,得到所述流表实例;其中,所述流表实例为创建于内存中的流表实例;所述处理器基于所述流表实例,对所述目标类别的流数据进行流计算处理,包括:调用所述会话接口;根据所述会话接口中目标类别的流数据的来源方式,调用相应的流引擎;获得用于进行流计算处理的sql流处理语句;利用所述流引擎,基于所述sql流处理语句中的第一sql语句从所述流表实例中查询所需的目标子数据;利用所述流引擎,基于所述sql流处理语句中第二sql语句对所述目标子数据进行流计算,得到流计算结果。上述计算机设备,优选地,所述处理器还用于:利用相应的流引擎对流表或流编目中的元数据进行管理;其中,所述对流表或流编目中的元数据进行管理,包括以下至少一种:向流编目中注册元数据,并创建对应于所注册元数据的流表;从流编目中清除元数据,并删除对应于所清除元数据的流表;对流编目中的元数据进行升级,并调整对应于所升级元数据的流表;从流编目中查询流表的元数据;查询流表或流表列表;判断流表是否存在。由以上方案可知,本申请涉及一种处理方法及计算机设备,该方法利用流表管理流数据,并提出了流编目的概念,利用流编目进行流数据的元数据注册,具体向流编目中预先注册至少一个类别的流数据对应的至少一类元数据,一类元数据对应一个按预定的格式规范定义的流表。在采集目标类别流数据时,基于从流编目中获得的该类流数据对应的目标类元数据,将当前采集的该类流数据生成相对应的流表实例,生成的流表实例必然遵循定义其所对应的流表时采用的格式规范,以此实现了对每类流数据的格式进行规范、统一,从而提供了一个稳定统一的流计算应用基础,后续可基于标准接口对流表实例中的流数据进行流计算,而不必因某类流数据的来源不同、流数据原始格式不同进行多种多样的不同高定制化流计算功能程序的编写,避免了定制化编制流计算程序的过程,降低了开发人员的工作量及难度。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1是本申请一可选实施例提供的处理方法的一种流程示意图;图2是本申请一可选实施例提供的处理方法的另一种流程示意图;图3是本申请一可选实施例提供的流编目与会话接口、流引擎间的连接及交互示意图;图4是本申请一可选实施例提供的基于流编目、利用会话接口及流引擎进行流表与元数据管理的处理逻辑示意图;图5是本申请一可选实施例提供的处理方法的又一种流程示意图;图6是本申请一可选实施例提供的处理方法的再一种流程示意图;图7是本申请一可选实施例提供的计算机设备的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请提供了一种处理方法及计算机设备,用于针对流数据的来源广泛、实时性强、大数据量的特点,为数据流提供一个稳定、统一的流计算应用基础,以避免定制化编制流计算程序的过程,降低开发人员的工作量及难度。以下将通过具体实施例对本申请的处理方法及计算机设备进行说明。在本申请一可选实施例中,公开了一种处理方法,该处理方法可应用于但不限于通用/专用计算或配置环境中的便携式计算机(如笔记本)、台式计算机或大中型计算机、后台服务器或云平台服务器等计算机设备中。参阅图1,为本实施例提供的上述处理方法的一种流程示意图,如图1所示,本实施例中,所述处理方法可以包括以下步骤:步骤101、从流编目中获得目标类别的流数据对应的目标类元数据;所述流编目中预先注册有至少一个类别的流数据对应的至少一类元数据,一类元数据对应一个按预定的格式规范定义的流表。本申请实施例抽象出了流表(streamtable)的概念,利用流表来管理流数据,其中,本申请具体将流表定义为:遵从预定义的数据格式规范,并针对流数据的大量、快速、时变特点,用于动态装载、缓存流数据以作为流数据的动态承载体以及用于对流数据进行格式规约的表结构。相匹配的,本申请还提出了流编目(也可称之为流引擎编目streamcatalog)的概念,流编目是指流表的目录,用于定义并存储流表的元数据,以通过流表的元数据来描述一个流。为了便于不同类别流数据的管理与计算,本实施例中,针对每一类流数据预先定义其元数据,使得一类流数据对应一类元数据,并将各类流数据对应的相应类元数据预先注册至流编目。另外,预先为每类元数据定义了一个按预定的格式规范制定的流表,也即,相当于,每一类流数据对应一个流表。后续,针对所采集的某类流数据,可基于从流编目中获取的该类流数据的元数据,将该类流数据组织成相对应类别的流表结构(本质上即为生成流表实例或流表实体),以实现利用流表来对该类流数据进行管理。以下举例说明,对于设备信息类流数据,可以预先定义并向流编目中注册其对应的设备型号、设备尺寸、设备性能等元数据,并为其定义遵循格式规范一的流表1;对于商品信息类流数据,可预先定义并向流编目中注册其对应的商品名称、商品属性、商品功能等元数据,并为其定义遵循格式规范二的流表2;对于新闻信息类流数据,则可预先定义并向流编目中注册其对应的新闻类型、新闻来源等元数据,并为其定义遵循格式规范三的流表3;在此基础上,相应地,可基于上述的设备信息类元数据利用流表1来管理设备信息类流数据,基于上述的商品信息类元数据利用流表2来管理商品信息类流数据,基于上述的新闻信息类元数据利用流表3来管理新闻信息类流数据等。需要说明的是,除了在流编目中定义并存储有不同类别流数据对应的不同类元数据之外,还可以在流编目中为每类元数据存储相对应的流表信息,如流表名称和/或流表编号等流表标识,以使得能够基于元数据调起相应的流表。鉴于此,针对目标类别流数据(如新闻信息类流数据)的采集场景,可从流编目中获得该目标类别的流数据对应的目标类元数据,以便于基于获得的元数据对采集的流数据进行流表结构组织。步骤102、获得当前采集的目标类别的流数据。同时,可获得当前采集的目标类别的流数据。需要说明的是,这里并不限制流数据与其元数据的获取次序,既可以实现为对两者同时获取,或者,又可以实现为先获取两者中的任一种而后获取其中的另一种。实际应用中,一种典型的场景是,基于用户的前端操作而不断产生大量、快速、时变的操作数据,进而由后台服务器基于约定的采集机制从不断产生的操作数据中进行指定数据采集,从而形成流数据,以便于后续基于采集的流数据进行流计算进而展开流计算基础上的相关应用。如,不同用户在购物网站上进行商品的浏览、收藏、选购等操作,则后台会产生大量的商品浏览、收藏、选购等操作信息,后台服务器对这些信息的至少部分进行采集可形成流数据,后续通过对这些流数据进行计算,可展开对不同用户的兴趣提取、商品推荐以及对不同商品/商家的等级排序等应用。步骤103、基于所述目标类元数据,生成所述目标类别的流数据对应的流表实例。在获得当前采集的目标类别的流数据及其对应的目标类元数据后,可调用对应于该目标类元数据/目标类别流数据的流表,并利用所述目标类元数据,对当前采集的该目标类别的流数据进行流表结构组织,将其数据结构及格式组织为其所对应的流表的表结构形式。其中,具体地,可从目标类别的流数据中抽取对应于所述目标类元数据的各个子数据(也即元数据的实例化取值),并按定义所对应的流表时采用的格式规范,将抽取的各个子数据写入目标类元数据对应的流表,得到所述流表实例。步骤104、基于所述流表实例,对所述目标类别的流数据进行流计算处理。其中,为所采集的目标类别流数据所生成的流表实例,创建并缓存于内存中,后续,可将该流表实例作为针对该目标类别流数据的查询计划、流计算计划的数据基础。从而,后续可基于内存中创建并缓存的所述流表实例,对目标类别的流数据进行查询、计算等流计算处理。在这里,需强调的是,鉴于流数据的大量、快速、时变等特点,本实施例针对采集的流数据,仅基于其所对应的元数据在内存创建并暂时缓存其流表实例,一旦完成对内存中流表实例的流数据查询和/或计算等流计算处理,则释放流表实例中的流数据或者利用该类别的下一批流数据覆盖内存流表实例中的当前流数据,而不对流数据进行持久化存储,以节省设备的存储资源,同时,这也正是与本申请中流表动态承载流数据的概念相一致的。另外,实际应用中,针对流数据的流计算处理通常也多具有实时性/时效性要求,如针对所采集的商品信息类流数据(对商品的浏览、收藏、选购等操作信息)或新闻信息类流数据(打开、点赞、评论、关闭新闻的操作信息等),通常需要后台服务器实时地对这些流数据进行字段查询、计算等处理,以便于能快速地向用户展开商品推荐或新闻推荐等服务,鉴于这一特点,本申请中,利用流表动态地承载流数据(在内存中为采集的流数据创建流表实例并缓存)而非对流数据进行持久化存储,也是完全能够满足对流数据的有效使用需求的。本实施例利用流表管理流数据,并提出了流编目的概念,利用流编目进行流数据的元数据注册,具体向流编目中预先注册至少一个类别的流数据对应的至少一类元数据,一类元数据对应一个按预定的格式规范定义的流表。在采集目标类别流数据时,基于从流编目中获得的该类流数据对应的目标类元数据,将当前采集的该类流数据生成相对应的流表实例,生成的流表实例必然遵循定义其所对应的流表时所采用的格式规范,以此实现对每类流数据的格式进行规范、统一,提供了一个稳定统一的流计算应用基础,后续可基于标准接口对流表实例中的流数据进行流计算,而不必因某类流数据的来源不同、流数据原始格式不同进行多种多样的不同高定制化流计算功能程序的编写,避免了定制化编制流计算程序的过程,降低了开发人员的工作量及难度。本申请将流计算中的数据源管理映射为流编目的功能(如具体可映射为sparksql流引擎编目的功能),通过以流编目为基础的元数据及流表管理,来实现流计算中的数据源管理,以提供一个稳定统一的流计算应用基础。其中,可选地,本申请实施例采用流引擎实现流表管理、元数据管理及流计算功能。从而,如图2所示,本实施例中,所述处理方法还可以包括以下处理步骤:步骤105、利用相应的流引擎对流表或流编目中的元数据进行管理。其中,流表管理可以包括但不限于以下的至少一种:流表创建;流表删除;流表调整;查询流表或流表列表;判断流表是否存在。对于流表管理,创建流表时,通过流引擎具体实现执行创建工作,并将元数据写入流编目进行存储;删除流表时,通过流引擎具体实现执行删除工作,并将元数据从流编目删除;查看流表时,通过流引擎进行版本查询、元数据比对,并返回流表元数据;查看流表列表时,通过流引擎基于元数据进行查询。相匹配的,对于流表元数据的管理,则可以基于流引擎执行以下处理:向流编目中注册元数据,相应创建对应于所注册元数据的流表;从流编目中清除元数据,相应删除对应于所清除元数据的流表;对流编目中的元数据进行升级(如针对某类别的流数据,当需要增添一个/多个字段或删减一个/多个字段的信息采集时,可通过元数据版本升级,来调整其在流编目中对应的元数据),相应调整对应于所升级元数据的流表;从流编目中查询流表的元数据。其中,所采用的具体流引擎可以是但不限于kafkastreamcatalog、rabbitmqcatalog和kinesiscatalog中的任一种,kafkastreamcatalog、rabbitmqcatalog和kinesiscatalog均继承自流编目streamcatalog,为流编目streamcatalog的一个子类;在元数据管理方面,由流编目streamcatalog将元数据存储入关系型数据库进行持久化存储。另外,可选地,本申请通过规范的数据定义语言(ddl,datadefinitionlanguage)、数据操纵语言(dml,datamanipulationlanguage)来管理元数据、流表,及对流表数据进行查询、计算等流计算处理,以避免定制化编制流计算程序的过程,为流计算应用提供稳定的基础设施。具体地,在流编目通过数据定义语言ddl形式规范来管理元数据、流表,并丰富数据操纵语言dml的语义,列出流支持的流计算操作(如对流表数据的字段查询、字段分析、计算等流计算处理),将流表/元数据管理、流计算映射为标准sql语句,这样,便可以使用jdbc/odbc等标准数据源协议实现与流数据的连接,从而增强了计算过程的便捷与稳定。具体实施中,参阅图3及图4,本实施例构建会话接口(sessioncatalog),并利用构建的会话接口调起所采用的流引擎来实现所需的流表管理、元数据管理及流计算等处理。其中,对于每一类别的流数据的采集,可预先为其构建一个会话接口,会话接口本质上为对流编目中相应类元数据进行实例化而形成的接口。也即,所构建的一个会话接口可理解为流编目的一个实例,该接口中包括所对应类别的流数据的元数据,以及指示了所需采用的流引擎,如具体指示采用kafkastreamcatalog、rabbitmqcatalog或kinesiscatalog流引擎等,这样,在进行该类别的流数据的采集时,每采集到新的流数据,则向该会话接口写入用于指示进行流表写入操作(以生成流表实例)的sql语句,响应于写入的该sql语句,会话接口调起所指示的流引擎,并利用流引擎基于会话接口中的元数据进行流表写入操作以生成流表实例,进而便于展开后续的流计算处理,该部分内容将在下一实施例进行详述。对于流计算功能程序的开发人员来说,在抽象出流表(streamtable)概念,使用流编目(streamcatalog)进行流表的元数据管理的基础上,通过丰富数据操纵语言dml的语义,将流表、元数据管理、流计算(如流表数据的字段查询、字段分析、计算等流计算处理)映射为标准sql语句,可使得将流计算核心功能等使用结构化查询语言(sql)直接实现,并可在开发人员的终端使用标准数据源协议连接流表的流数据,也即对于开发人员来说,不必再针对相应类别的流数据,因其来源广泛,格式不一(如针对新闻信息类流数据,若不同新闻客户端原始采集的流数据格式不一,基于本申请,则可通过流表及流编目将其统一为遵循预定格式规范的流表实例),而对其进行定制化的本地解析,相应避免了定制化编制流计算程序的过程,提供了一个稳定、统一的流计算应用基础,规范了流引擎数据管理,大大提升了流计算应用效率;且开发人员可使用sql直接实现流计算核心功能等的编写工作,而不必使用c/c++、java等语言编写,进一步为开发人员实现流计算核心功能提供了方便,能进一步提升开发人员的效率。以下进一步阐述基于sql、会话接口、流引擎等实现本申请的处理方法(流表/元数据管理及流计算等)的实现过程,如图5所示,本实施例中,所述处理方法可以通过以下的过程实现:步骤501、基于sql查询语句,从所述流编目中查询目标类别的流数据对应的目标类元数据。针对目标类别的流数据采集及处理场景,本实施例中,预先通过sql查询语句,从流编目查询与该目标类别流数据相对应的目标类元数据,以用于会话接口的生成。步骤502、生成包括所述目标类元数据的会话接口。在获得对应于目标类别流数据的所述目标类元数据后,对该目标类元数据进行实例化,生成包括该目标类元数据的会话接口(sessioncatalog),另外,在生成的会话接口中还指定了该目标类别的流数据的来源方式,流数据的来源方式即是指流数据具体通过怎样的流引擎上传,从而,本质上即是在会话接口中指示了所采用的流引擎,会话接口中指定的流引擎同时也是用于实现流表/元数据管理及流计算核心功能等的流引擎。所指示的流引擎可以是但不限于kafkastreamcatalog、rabbitmqcatalog或kinesiscatalog中的任一种。步骤503、获得当前采集的目标类别的流数据。在构建完成针对目标类别流数据的会话接口基础上,可获得当前采集的目标类别的流数据,如具体可以获取当前采集的商品信息类流数据、设备信息类流数据或者新闻信息类流数据等等。步骤504、调用所述会话接口;根据所述会话接口中目标类别的流数据的来源方式,调用相应的流引擎。步骤505、获得用于实现流表写入功能的sql流表写入语句;在获得当前采集的目标类别的流数据时,会触发用于指示进行流表写入操作(以生成流表实例)的sql语句,会话接口提供接收该sql语句的接口功能接收该sql语句,并响应该sql语句,确定需采用的流引擎,具体地,从会话接口自身指示的目标类别流数据的来源方式中读取记录的流引擎信息,并调用该流引擎,更具体地,可调用流引擎中提供的用于实现流表写入功能的具体实现代码,如调用kafkastreamcatalog、rabbitmqcatalog或kinesiscatalog中的用于实现流表写入功能的具体实现代码等,该用于实现流表写入功能的具体实现代码同样可以为sql形式,即上述的sql流表写入语句。步骤506、利用所述流引擎,基于所述sql流表写入语句从所述目标类别的流数据中抽取对应于所述目标类元数据的各个子数据,并按所述预定的格式规范将抽取的各个子数据写入所述目标类元数据对应的流表,得到所述流表实例;其中,所述流表实例为创建于内存中的流表实例。之后,可基于所调用的流引擎中的所述sql流表写入语句,开启写入线程,并利用该线程从会话接口中读取对应于当前的目标类别流数据的目标类元数据,并从当前采集的目标类别流数据中抽取与目标类元数据相对应的各个子数据,得到目标类元数据的元数据取值;进而按所对应流表的格式规范将抽取的各个子数据(即元数据取值)写入目标类元数据对应的流表,得到该目标类流数据的流表实例。所得的流表实例具体创建于内存中。步骤507、调用所述会话接口;根据所述会话接口中目标类别的流数据的来源方式,调用相应的流引擎。步骤508、获得用于进行流计算处理的sql流处理语句。当利用流引擎的所述sql流表写入语句,在内存为当前采集的目标类别流数据创建相对应的流表实例后,进一步调用会话接口中指示的流引擎,并具体获取、调用流引擎中的用于实现流计算处理的sql处理语句,以进一步实现对流表实例中的流数据进行所需的流计算处理。该用于实现流计算处理的sql处理语句,包括能用于实现流表字段数据查询功能的第一sql语句,以及能用于实现对查询的流表字段数据进行计算的第二sql语句,本实施例中,流表字段即是指流表的元数据。步骤509、利用所述流引擎,基于所述sql流处理语句中的第一sql语句从所述流表实例中查询所需的目标子数据。在对内存中创建的目标类别流数据的流表实例进行流计算处理时,首先基于所述第一sql语句结合会话接口中提供的目标类元数据,生成查询计划,基于查询计划从内存的流表实例中查询所需的目标子数据,查询所得的目标子数据,即为流表实例中的至少部分字段(元数据)的字段值。其中,可选地,具体可采用微批模式执行查询,相应可得到所查询字段的微批数据。步骤510、利用所述流引擎,基于所述sql流处理语句中的第二sql语句对所述目标子数据进行流计算,得到流计算结果。在查询得到所需的目标子数据后,则可进一步利用所述sql流处理语句中的第二sql语句对查询得到的目标子数据进行所需的流计算,如基于该第二sql语句开启计算线程,并基于该计算线程执行诸如“确定某字段的最大值/最小值”,或者“对查询所得的各个字段值进行综合分析或基于特征提取的模型计算,以确定一个推荐策略(如对查询所得的商品浏览信息、选购信息、收藏信息进行综合分析或基于特征提取的模型计算,进而确定商品推荐信息)”的流计算等等。除此之外,还可以开启写线程,将流计算结果作为新的流数据并写入新的流表,以形成新流表的流表实例,相应为新流表的流计算处理提供数据基础。本实施例通过利用流表管理流数据,并基于流编目进行元数据及流表管理,实现了对每类流数据的格式进行规范、统一,提供了一个稳定统一的流计算应用基础,避免了定制化编制流计算程序的过程,规范了流引擎数据管理,大大提升了流计算应用效率;且开发人员可使用sql直接实现流计算核心功能等的编写工作,进一步为开发人员实现流计算核心功能提供了方便,能进一步提升开发人员的效率。在本申请一可选实施例中,参阅图6,所述处理方法还可以包括以下处理步骤:步骤511、通过流数据的会话接口,读取sql流控制语句,并利用sql流控制语句对流数据进行流控制;所述会话接口为包括流数据对应的元数据的接口。其中,所述流控制包括:查看流处理功能和/或关闭流处理功能。本实施例提供查看与关闭流处理功能的流控制,具体实现中,同样可在流引擎中对该流控制功能进行实现,并将其实现为sql形式,得到sql流控制语句。后续,当根据实际需求,需要查看或者关闭针对目标类别的流数据的流处理(如包括对流数据的写流表、查询、流计算等)功能时,可通过该目标类别的流数据的会话接口,调用所指示的流引擎、并读取其中的流控制功能具体实现代码即所述sql流控制语句,进而基于该sql流控制语句对会话接口中的元数据所对应流的流处理功能执行查看或关闭等流控制,其中,对于用于查看流处理功能的流控制,具体可展示流处理的相关信息以供查看。本实施例通过提供查看和/或关闭流处理功能的流控制,为随时查看或关闭运行流提供了方便。对应于上述的处理方法,本申请实施例还提供了一种计算机设备,该计算机设备可以是但不限于通用/专用计算或配置环境中的便携式计算机(如笔记本)、台式计算机或大中型计算机、后台服务器或云平台服务器等设备。如图7所示,该计算机设备可以包括:存储器701,用于至少存储一组指令集;处理器702,用于调用并执行所述存储器中的所述指令集,通过执行所述指令集进行以下操作:从流编目中获得目标类别的流数据对应的目标类元数据;所述流编目中预先注册有至少一个类别的流数据对应的至少一类元数据,一类元数据对应一个按预定的格式规范定义的流表;获得当前采集的目标类别的流数据;基于所述目标类元数据,生成所述目标类别的流数据对应的流表实例;基于所述流表实例,对所述目标类别的流数据进行流计算处理。本申请实施例抽象出了流表(streamtable)的概念,利用流表来管理流数据,其中,本申请具体将流表定义为:遵从预定义的数据格式规范,并针对流数据的大量、快速、时变特点,用于动态装载、缓存流数据以作为流数据的动态承载体以及用于对流数据进行格式规约的表结构。相匹配的,本申请还提出了流编目(也可称之为流引擎编目streamcatalog)的概念,流编目是指流表的目录,用于定义并存储流表的元数据,以通过流表的元数据来描述一个流。为了便于不同类别流数据的管理与计算,本实施例中,针对每一类流数据预先定义其元数据,使得一类流数据对应一类元数据,并将各类流数据对应的相应类元数据预先注册至流编目。另外,预先为每类元数据定义了一个按预定的格式规范制定的流表,也即,相当于,每一类流数据对应一个流表。后续,针对所采集的某类流数据,可基于从流编目中获取的该类流数据的元数据,将该类流数据组织成相对应类别的流表结构(本质上即为生成流表实例或流表实体),以实现利用流表来对该类流数据进行管理。需要说明的是,除了在流编目中定义并存储有不同类别流数据对应的不同类元数据之外,还可以在流编目中为每类元数据存储相对应的流表信息,如流表名称和/或流表编号等流表标识,以使得能够基于元数据调起相应的流表。鉴于此,针对目标类别流数据(如新闻信息类流数据)的采集场景,可从流编目中获得该目标类别的流数据对应的目标类元数据,以便于基于获得的元数据对采集的流数据进行流表结构组织。同时,可获得当前采集的目标类别的流数据。需要说明的是,这里并不限制流数据与其元数据的获取次序,既可以实现为对两者同时获取,或者,又可以实现为先获取两者中的任一种而后获取其中的另一种。在获得当前采集的目标类别的流数据及其对应的目标类元数据后,可调用对应于该目标类元数据/目标类别流数据的流表,并利用所述目标类元数据,对当前采集的该目标类别的流数据进行流表结构组织,将其数据结构及格式组织为其所对应的流表的表结构形式。其中,具体地,可从目标类别的流数据中抽取对应于所述目标类元数据的各个子数据(也即元数据的实例化取值),并按定义所对应的流表时采用的格式规范,将抽取的各个子数据写入目标类元数据对应的流表,得到所述流表实例。为所采集的目标类别流数据所生成的流表实例,创建并缓存于内存中,后续,可将该流表实例作为针对该目标类别流数据的查询计划、流计算计划的数据基础。从而,后续可基于内存中创建并缓存的所述流表实例,对目标类别的流数据进行查询、计算等流计算处理。本实施例利用流表管理流数据,并提出了流编目的概念,利用流编目进行流数据的元数据注册,具体向流编目中预先注册至少一个类别的流数据对应的至少一类元数据,一类元数据对应一个按预定的格式规范定义的流表。在采集目标类别流数据时,基于从流编目中获得的该类流数据对应的目标类元数据,将当前采集的该类流数据生成相对应的流表实例,生成的流表实例必然遵循定义其所对应的流表时所采用的格式规范,以此实现对每类流数据的格式进行规范、统一,提供了一个稳定统一的流计算应用基础,后续可基于标准接口对流表实例中的流数据进行流计算,而不必因某类流数据的来源不同、流数据原始格式不同进行多种多样的不同高定制化流计算功能程序的编写,避免了定制化编制流计算程序的过程,降低了开发人员的工作量及难度。在本申请一可选实施例中,所述计算机设备中的处理器702还可以用于:利用相应的流引擎对流表或流编目中的元数据进行管理。其中,流表管理可以包括但不限于以下的至少一种:流表创建;流表删除;流表调整;查询流表或流表列表;判断流表是否存在。对于流表管理,创建流表时,通过流引擎具体实现执行创建工作,并将元数据写入流编目进行存储;删除流表时,通过流引擎具体实现执行删除工作,并将元数据从流编目删除;查看流表时,通过流引擎进行版本查询、元数据比对,并返回流表元数据;查看流表列表时,通过流引擎基于元数据进行查询。相匹配的,对于流表元数据的管理,则可以基于流引擎执行以下处理:向流编目中注册元数据,相应创建对应于所注册元数据的流表;从流编目中清除元数据,相应删除对应于所清除元数据的流表;对流编目中的元数据进行升级(如针对某类别的流数据,当需要增添一个/多个字段或删减一个/多个字段的信息采集时,可通过元数据版本升级,来调整其在流编目中对应的元数据),相应调整对应于所升级元数据的流表;从流编目中查询流表的元数据。其中,所采用的具体流引擎可以是但不限于kafkastreamcatalog、rabbitmqcatalog和kinesiscatalog中的任一种,kafkastreamcatalog、rabbitmqcatalog和kinesiscatalog均继承自流编目streamcatalog,为流编目streamcatalog的一个子类;在元数据管理方面,由流编目streamcatalog将元数据存储入关系型数据库进行持久化存储。另外,可选地,本申请通过规范的数据定义语言(ddl,datadefinitionlanguage)、数据操纵语言(dml,datamanipulationlanguage)来管理元数据、流表,及对流表数据进行查询、计算等流计算处理,以避免定制化编制流计算程序的过程,为流计算应用提供稳定的基础设施。具体地,在流编目通过数据定义语言ddl形式规范来管理元数据、流表,并丰富数据操纵语言dml的语义,列出流支持的流计算操作(如对流表数据的字段查询、字段分析、计算等流计算处理),将流表/元数据管理、流计算映射为标准sql语句,这样,便可以使用jdbc/odbc等标准数据源协议实现与流数据的连接,从而增强了计算过程的便捷与稳定。具体实施中,参阅图3及图4,本实施例构建会话接口(sessioncatalog),并利用构建的会话接口调起所采用的流引擎来实现所需的流表管理、元数据管理及流计算等处理。其中,对于每一类别的流数据的采集,可预先为其构建一个会话接口,会话接口本质上为对流编目中相应类元数据进行实例化而形成的接口。也即,所构建的一个会话接口可理解为流编目的一个实例,该接口中包括所对应类别的流数据的元数据,以及指示了所需采用的流引擎,如具体指示采用kafkastreamcatalog、rabbitmqcatalog或kinesiscatalog流引擎等,这样,在进行该类别的流数据的采集时,每采集到新的流数据,则向该会话接口写入用于指示进行流表写入操作(以生成流表实例)的sql语句,响应于写入的该sql语句,会话接口调起所指示的流引擎,并利用流引擎基于会话接口中的元数据进行流表写入操作以生成流表实例,进而便于展开后续的流计算处理,该部分内容将在下一实施例进行详述。对于流计算功能程序的开发人员来说,在抽象出流表(streamtable)概念,使用流编目(streamcatalog)进行流表的元数据管理的基础上,通过丰富数据操纵语言dml的语义,将流表、元数据管理、流计算(如流表数据的字段查询、字段分析、计算等流计算处理)映射为标准sql语句,可使得将流计算核心功能等使用结构化查询语言(sql)直接实现,并可在开发人员的终端使用标准数据源协议连接流表的流数据,也即对于开发人员来说,不必再针对相应类别的流数据,因其来源广泛,格式不一(如针对新闻信息类流数据,若不同新闻客户端原始采集的流数据格式不一,基于本申请,则可通过流表及流编目将其统一为遵循预定格式规范的流表实例),而对其进行定制化的本地解析,相应避免了定制化编制流计算程序的过程,提供了一个稳定、统一的流计算应用基础,规范了流引擎数据管理,大大提升了流计算应用效率;且开发人员可使用sql直接实现流计算核心功能等的编写工作,而不必使用c/c++、java等语言编写,进一步为开发人员实现流计算核心功能提供了方便,能进一步提升开发人员的效率。在本申请一可选实施例中,所述计算机设备中的处理器702具体可通过以下的过程实现其处理功能:基于sql查询语句,从流编目查询目标类别流数据对应的目标类元数据;生成包括所述目标类元数据的会话接口;获得当前采集的目标类别的流数据;调用所述会话接口,根据所述会话接口中目标类别的流数据的来源方式,调用相应的流引擎;获得用于实现流表写入功能的sql流表写入语句;利用所述流引擎,基于所述sql流表写入语句从所述目标类别的流数据中抽取对应于所述目标类元数据的各个子数据,并按所述预定的格式规范将抽取的各个子数据写入所述目标类元数据对应的流表,得到所述流表实例;调用所述会话接口;根据所述会话接口中目标类别的流数据的来源方式,调用相应的流引擎;获得用于进行流计算处理的sql流处理语句;利用所述流引擎,基于所述sql流处理语句中的第一sql语句从所述流表实例中查询所需的目标子数据;利用所述流引擎,基于所述sql流处理语句中的第二sql语句对所述目标子数据进行流计算,得到流计算结果。具体地,针对目标类别的流数据采集及处理场景,本实施例中,预先通过sql查询语句,从流编目查询与该目标类别流数据相对应的目标类元数据,以用于会话接口的生成。在获得对应于目标类别流数据的所述目标类元数据后,对该目标类元数据进行实例化,生成包括该目标类元数据的会话接口(sessioncatalog),另外,在生成的会话接口中还指定了该目标类别的流数据的来源方式,流数据的来源方式即是指流数据具体通过怎样的流引擎上传,从而,本质上即是在会话接口中指示了所采用的流引擎,会话接口中指定的流引擎同时也是用于实现流表/元数据管理及流计算核心功能等的流引擎。所指示的流引擎可以是但不限于kafkastreamcatalog、rabbitmqcatalog或kinesiscatalog中的任一种。在构建完成针对目标类别流数据的会话接口基础上,可获得当前采集的目标类别的流数据,如具体可以获取当前采集的商品信息类流数据、设备信息类流数据或者新闻信息类流数据等等。在获得当前采集的目标类别的流数据时,会触发用于指示进行流表写入操作(以生成流表实例)的sql语句,会话接口提供接收该sql语句的接口功能接收该sql语句,并响应该sql语句,确定需采用的流引擎,具体地,从会话接口自身指示的目标类别流数据的来源方式中读取记录的流引擎信息,并调用该流引擎,更具体地,可调用流引擎中提供的用于实现流表写入功能的具体实现代码,如调用kafkastreamcatalog、rabbitmqcatalog或kinesiscatalog中的用于实现流表写入功能的具体实现代码等,该用于实现流表写入功能的具体实现代码同样可以为sql形式,即上述的sql流表写入语句。之后,可基于所调用的流引擎中的所述sql流表写入语句,开启写入线程,并利用该线程从会话接口中读取对应于当前的目标类别流数据的目标类元数据,并从当前采集的目标类别流数据中抽取与目标类元数据相对应的各个子数据,得到目标类元数据的元数据取值;进而按所对应流表的格式规范将抽取的各个子数据(即元数据取值)写入目标类元数据对应的流表,得到该目标类流数据的流表实例。所得的流表实例具体创建于内存中。当利用流引擎的所述sql流表写入语句,在内存为当前采集的目标类别流数据创建相对应的流表实例后,进一步调用会话接口中指示的流引擎,并具体获取、调用流引擎中的用于实现流计算处理的sql处理语句,以进一步实现对流表实例中的流数据进行所需的流计算处理。该用于实现流计算处理的sql处理语句,包括能用于实现流表字段数据查询功能的第一sql语句,以及能用于实现对查询的流表字段数据进行计算的第二sql语句,本实施例中,流表字段即是指流表的元数据。在对内存中创建的目标类别流数据的流表实例进行流计算处理时,首先基于所述第一sql语句结合会话接口中提供的目标类元数据,生成查询计划,基于查询计划从内存的流表实例中查询所需的目标子数据,查询所得的目标子数据,即为流表实例中的至少部分字段(元数据)的字段值。其中,可选地,具体可采用微批模式执行查询,相应可得到所查询字段的微批数据。在查询得到所需的目标子数据后,则可进一步利用所述sql流处理语句中的第二sql语句对查询得到的目标子数据进行所需的流计算,如基于该第二sql语句开启计算线程,并基于该计算线程执行诸如“确定某字段的最大值/最小值”,或者“对查询所得的各个字段值进行综合分析或基于特征提取的模型计算,以确定一个推荐策略(如对查询所得的商品浏览信息、选购信息、收藏信息进行综合分析或基于特征提取的模型计算,进而确定商品推荐信息)”的流计算等等。除此之外,还可以开启写线程,将流计算结果作为新的流数据并写入新的流表,以形成新流表的流表实例,相应为新流表的流计算处理提供数据基础。本实施例通过利用流表管理流数据,并基于流编目进行元数据及流表管理,实现了对每类流数据的格式进行规范、统一,提供了一个稳定统一的流计算应用基础,避免了定制化编制流计算程序的过程,规范了流引擎数据管理,大大提升了流计算应用效率;且开发人员可使用sql直接实现流计算核心功能等的编写工作,进一步为开发人员实现流计算核心功能提供了方便,能进一步提升开发人员的效率。在本申请一可选实施例中,所述计算机设备中的处理器702还可以用于:通过流数据的会话接口,读取sql流控制语句,并利用sql流控制语句对流数据进行流控制;所述会话接口为包括流数据对应的元数据的接口。其中,所述流控制包括:查看流处理功能和/或关闭流处理功能。本实施例提供查看与关闭流处理功能的流控制,具体实现中,同样可在流引擎中对该流控制功能进行实现,并将其实现为sql形式,得到sql流控制语句。后续,当根据实际需求,需要查看或者关闭针对目标类别的流数据的流处理(如包括对流数据的写流表、查询、流计算等)功能时,可通过该目标类别的流数据的会话接口,调用所指示的流引擎、并读取其中的流控制功能具体实现代码即所述sql流控制语句,进而基于该sql流控制语句对会话接口中的元数据所对应流的流处理功能执行查看或关闭等流控制,其中,对于用于查看流处理功能的流控制,具体可展示流处理的相关信息以供查看。本实施例通过提供查看和/或关闭流处理功能的流控制,为随时查看或关闭运行流提供了方便。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实例或者操作与另一个实例或操作区分开来,而不一定要求或者暗示这些实例或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅是本申请的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1