流式数据处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及数据处理技术领域,特别是涉及一种流式数据处理方法、装置、计算机设备和存储介质。
背景技术
随着互联网和物联网技术的发展,数字化的广泛应用,大数据技术得到快速发展和应用。例如网站与移动应用场景对各类业务实时分析统计、网络安全实时监测需要对其产生的大量数据进行分析,涉及到流式数据处理。
然而,基于MapReduce的流式数据处理通过时间窗口定时触发流式数据处理,分段处理数据,系统维护和扩展不方便,导致数据处理过程繁琐,数据处理效率低。
发明内容
基于此,有必要针对上述数据处理效率低问题,提供一种能够提高数据处理效率的流式数据处理方法、装置、计算机设备和存储介质。
一种流式数据处理方法,所述方法包括:
当接收到流式数据时,根据所述流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句;
对所述目标SQL语句进行解析,得到所述流式数据对应的事件标识;
当所述事件标识与预先存储的事件标识相匹配时,对所述流式数据进行处理。
在其中一个实施例中,所述对所述目标SQL语句进行解析,得到所述流式数据对应的事件标识之后,所述方法还包括:
获取所述事件标识对应的多个第一数据表;
将所述多个第一数据表合并成一个第二数据表。
在其中一个实施例中,所述对所述目标SQL语句进行解析,得到所述流式数据对应的事件标识包括:
通过解析器中语法分析器和词法分析器对所述目标SQL语句进行解析,得到所述流式数据对应的事件标识及对应的事件处理策略。
在其中一个实施例中,所述在所述对所述目标SQL语句进行解析,得到所述流式数据对应的事件标识之后,所述方法还包括:通过所述解析器将所述事件标识及对应的事件处理策略传输给计算引擎的路由层;
通过所述计算引擎的路由层将所述事件标识及对应的事件处理策略分发到所述计算引擎的存储与计算层;
所述当所述事件标识与预先存储的事件标识相匹配时,对所述流式数据进行处理,包括:
通过所述计算引擎的存储与计算层将所述事件标识与预先存储的事件标识进行比较,若相匹配,则按照所述事件处理策略对所述流式数据进行处理,得到处理结果。
在其中一个实施例中,所述方法还包括:
通过所述计算引擎的存储与计算层将所述处理结果传输给所述计算引擎的输出层。
在其中一个实施例中,所述方法还包括:
将所述流式数据的处理结果写入到第一数据库和第二数据库中,所述第一数据库用于实时查询,所述第二数据库用于离线查询。
在其中一个实施例中,所述方法还包括:
将所述流式数据的处理结果写入到第三数据库;
当所述第三数据库中的数据量达到数量阈值或到达预设时长,则将所述第三数据库中的处理结果存储到所述第二数据库中。
一种流式数据处理装置,所述装置包括:
获取模块,用于所述获取流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句;
处理模块,用于解析器解析所述目标SQL语句,获取所述流式数据对应的事件标识;
触发模块,用于当所述事件标识与预先存储的事件标识相匹配时,对所述流式数据进行处理。
在其中一个实施例中,所述装置还包括:
合并模块,用于将事件标识对应的多个第一数据表合并成一个第二数据表。
在其中一个实施例中,所述装置还包括:
写入模块,用于把流式数据的处理结果写入到第一数据库和第二数据库。
在其中一个实施例中,写入模块,还用于:
将所述流式数据的处理结果写入到第三数据库;
当所述第三数据库中的数据量达到数量阈值或到达预设时长,则将所述第三数据库中的处理结果存储到所述第二数据库中。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
当接收到流式数据时,根据所述流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句;
对所述目标SQL语句进行解析,得到所述流式数据对应的事件标识;
当所述事件标识与预先存储的事件标识相匹配时,对所述流式数据进行处理。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
当接收到流式数据时,根据所述流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句;
对所述目标SQL语句进行解析,得到所述流式数据对应的事件标识;
当所述事件标识与预先存储的事件标识相匹配时,对所述流式数据进行处理。
上述流式数据处理方法、装置、计算机设备和存储介质,当接收到流式数据时,根据流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句,对目标SQL语句进行解析,得到流式数据对应的事件标识,不需要对流式数据进行分段管理;当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理,因此不需要通过消息窗口或者定时器触发执行数据处理,通过事件触发流式数据,优化数据处理过程,提高了数据处理效率,也提高了程序运行性能和系统的稳定性。
附图说明
图1为一个实施例中流式数据处理方法的应用环境图;
图2为一个实施例中流式数据处理方法的流程示意图;
图3为一个实施例中流式数据处理平台架构图;
图4为另一个实施例中流式数据处理方法的流程示意图;
图5为一个实施例中流式数据处理步骤的流程示意图;
图6为一个实施例中流式数据处理装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的流式数据处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。终端102接收当接收到服务器104发送的流式数据时,根据流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句,对目标SQL语句进行解析,得到流式数据对应的事件标识,当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种流式数据处理方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:
步骤202,当接收到流式数据时,根据流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句。
其中,流式数据可以是一组顺序、大量、快速、连续到达的数据序列(value list)。流式数据包含很多种数据,例如,流式数据可以是设备性能参数或设备采集的数据、网购数据、社交网站信息数据、客户端移动或Web应用程序生成的日志文件、金融行业的业务数据以及数据中心连接的设备或仪器的遥控数据等。流式数据可以是从分布式消息系统Kafka中获取的,也可以是其他数据库,这里不做限定。
流式数据处理逻辑指令可以是对流式数据进行处理的方法。流式数据处理逻辑指令可以通过自定义结构化查询语言(SQL语句)体现。不同的应用场景下的流式数据的用途和价值不同,流式数据的处理逻辑也不同。例如,调查线上商品销售市场,要筛选出网购数据中消费者成交商品的数目数据、商品的点击率数据或消费者在该商品停留的时间数据,对获取的这些数据进行流式数据处理。分析影响产品产能原因,要筛选出固定时间段内的温度和/或电导率等参数数据以及固定时间段内的产能数据,对获取的这些数据进行流式处理。
SQL语句有数据的增、删、改、查等基本功能,不同的SQL语句中可以有不同的计算表达式、条件表达式、函数等,例如,SQL查询语句:Select COUNT(*) FROM Persons WHEREAge>20,其中COUNT(*)是一个计算函数,返回表中Persons 的Age>20的行数,WHERE后面部分是查询语句的条件部分。流式数据可以有不同的数据源,可以是注册数据、登录数据,目标SQL语句可以是流式计算逻辑处理指令中计算一天注册成功的次数或一天登录的总时间的SQL语句。具体地,终端接收到流式数据时,调用解析包对流式数据进行解析。其中,解析可以是把流式数据解析为终端102可识别的对象,解析包可以是Json解析包,也可以是自定义的解析包。例如,把字符串类型的流式数据转换为终端可识别的对象,可识别的对象可以是value list的名称(name)、事件id、数据类型等,可识别对象通过映射可获取对应的流式数据处理逻辑指令中的目标SQL语句。
步骤204,对该目标SQL语句进行解析,得到该流式数据对应的事件标识。
其中,目标SQL语句是用于表达数据处理请求的SQL语句。计算引擎仅根据接收的数据处理请求执行不了数据处理,需要根据目标SQL语句的执行规则执行数据处理,即通过对目标SQL语句进行解析,可以是获取SQL查询语句的语句顺序,根据语句顺序确定语句的执行顺序。例如,目标SQL语句可以是:
SELECT DISTINCT<select_list>
FROM<left_table><join_type>
JOIN<right_table>ON<join_condition>
WHERE<where_condition>
GROUP BY<group_by_list>
HAVING<having_condition>
ORDER BY<order_by_condition>
LIMIT<limit_number>
对目标SQL语句进行解析得到执行顺序如下:
FROM<left_table>→ON<join_condition>→<join_type>JOIN <right_table>→WHERE<where_condition>→GROUP BY<group_by_list>→ HAVING<having_condition>→SELECT→DISTINCT<select_list>→ORDER BY <order_by_condition>→LIMIT<limit_number>每个步骤对应一个逻辑算子,例如,SELECT就是一个逻辑算子,每个逻辑算子描述SQL表达式不同操作,逻辑算子组成一个逻辑查询计划。
流式数据可以是数据序列,当接收的流式数据可以是多组不同数据序列,且每个数据序列会有对应事件id、name、属性等,事件标识可以是流式数据中的事件id、name等。
步骤206,当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理。
其中,事件标识可通过解析目标SQL语句得到,事件标识可以是流式数据中的事件id、name、状态等,这里不做限定。预先存储的事件标识可以是事件id、name、状态等。预先存储的事件标识是指根据需要预先配置的事件对应的事件标识。该预先存储的事件标识可采用数据库方式存储或列表方式存储等。将事件标识与预先存储的事件标识进行比较,当事件标识与预先存储的事件标识相同时,则表示事件标识与预先存储的事件标识相匹配。当事件标识与预先存储的事件标识相匹配时,对流式数据进行查询计算,例如,获取的事件标识是“5”、预先存储的事件标识中也有“5”,即事件标识与预先存储的事件标识相同,对事件标识是“5”的流式数据进行处理。
上述流式数据处理方法中,当接收到流式数据时,根据流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句,对目标SQL语句进行解析,得到流式数据对应的事件标识,不需要对流式数据进行分段管理;当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理,因此不需要通过消息窗口或者定时器触发执行数据处理,通过事件触发流式数据,优化数据处理过程,提高了数据处理效率,也提高了程序运行性能和系统的稳定性。SQL表达式支持可配置化、灵活性高,提高程序的伸缩性,扩展了流式数据处理的应用场景。
在一个实施例中,对该目标SQL语句进行解析,得到流式数据对应的事件标识包括:
通过解析器中语法分析器和词法分析器对所述目标SQL语句进行解析,得到所述流式数据对应的事件标识及对应的事件处理策略。
其中,解析器可以是数据库连接池Druid中的Druid SQL解析器、计算引擎自带的SQL解析器。例如,Druid SQL解析器对SQL语句解析包括词法分析、语法分析、输出抽象语法树(AST)。词法解析可以是按照定义的词法将输入中的字符集转换为‘单词’,例如,词法解析select name from user的SQL语句,解析出单独的单词是select,name,from,user;语法分析可以是把词法分析结果作为输入,在词法分析的基础上判断单词组合是否符合语法规则,语法分析器根据语法规则进行解析输出SQL语句的语义,语义可以用AST来表示,AST的结构内容和输入一一对应。
事件处理策略可以是抽象语法树通过编译工具编译输出查询计划,通过查询计划指导物理算子,读取流式数据中表的内容,根据SQL语义执行查询计划,物理算子是查询计划中逻辑算子的实现方式,例如,查询计划中的逻辑算子是 Join,Join的物理算子实现可以用嵌套循环(NestLoop Join)、哈希连接 (HashJoin)等。其中,事件处理策略是指对事件进行处理的规则。事件处理策略可为统计预设时间段内的登录次数和,例如,统计2009年10月1日至2 日登录的次数和。事件处理策略也可为统计在线时长。通过解析目标SQL,获取流式数据的事件标识和事件处理策略,优化了数据处理过程,提高数据处理效率,也提高了程序运行的稳定性。
在一个实施例中,在对目标SQL语句进行解析,得到流式数据对应的事件标识之后,该方法还包括:
通过解析器将事件标识及对应的事件处理策略传输给计算引擎的路由层;
通过计算引擎的路由层将事件标识及对应的事件处理策略分发到计算引擎的存储与计算层;
当所述事件标识与预先存储的事件标识相匹配时,对流式数据进行处理,包括:
通过计算引擎的存储与计算层将事件标识与预先存储的事件标识进行比较,若相匹配,则按照所述事件处理策略对所述流式数据进行处理,得到处理结果。
其中,计算引擎可以是根据一定的策略,负责计算中数据的数据来源、数据操作、数据管理并根据实际需求返回数据计算结果。计算引擎可以是Jstorm,计算引擎包括输入层、路由层、存储与计算层、输出层,计算引擎可以在系统协调(ZooKeeper)的协调下解决计算引擎在流式数据处理中遇到的问题。其中输入层是数据源(Spout),输入层中Spout的数目在这里不做限定;路由层可以是分发处理器(DispatchBolt),DispatchBolt数目在这里不做限定;存储与计算层可以是计算处理器(ComputeBolt),ComputeBolt数目在这里不做限定;输出层可以是结果处理器(ResultBolt),可以有两个ResultBolt,数目在这里不做限定。路由层把事件标识和对应的事件处理策略分发给存储与计算层可以是根据计算引擎的数据流分发策略分发的,数据流分发策略可以是随机分组(Shuffle Grouping)、按字段分组(Fields Grouping)、广播分组(All Grouping)、全局分组(Global Grouping)、不分组(None Grouping)、指向分组(Direct Grouping)、自定义分组(Local or Shufflegrouping)。例如, Shuffle Grouping是可以根据数据序列中的“user-id”这个字段来分组,把相同的user-id的数据序列分到同一个处理器的Task上,进行数据处理。通过事件标识触发流式数据处理,优化数据处理过程,提高了数据处理的效率。
在一个实施例中,该方法还包括:
通过所述计算引擎的存储与计算层将所述处理结果传输给所述计算引擎的输出层。
其中,计算引擎的存储与计算层把处理结果传输给计算引擎的输出层可以根据计算引擎的数据流分发策略传输的,可以优化数据处理,提高数据处理准确性。
下面结合一个具体的实施例来描述流式数据处理平台的结构。如图3所示,在一个实施例中,流式数据处理平台,包括:输入层302、路由层304、存储与计算层306、输出层308、协调层310、外部存储312,其中:
输入层302,用于从Kafka获取流式数据,作为流式数据输入。
其中,输入层数据可以是风控事件(RiskEvent-Spout)、资信数据 (zx-Spout)、导数导入(Dataimport-Spout)数据来源很多,可以是从实时风控、审批系统、Spark批量导数程序中获取,其中,Spark批量导数程序导入的可以是历史数据,RiskEvent-Spout、zx-Spout、Dataimport-Spout可以是计算引擎的数据源,也可以是消息中间件并能不断发送消息。
路由层304,用于对输入层302输入的流式数据与协调层310获取的表达式进行匹配,在进行处理后,分发给存储与计算层。
其中,路由层304中可以是规则匹配与请求分发处理器(DispatchBolt), 数目不限定。在路由层304中还可以对同一事件id不同数据源的数据进行事件合并,减少数据处理的次数,优化处理过程。路由层304根据计算引擎分发策略把处理结果发送给存储与计算层306。
存储与计算层306,可以存储预设事件id和执行表达式计算。
其中,存储与计算层306可以有三个存储与计算处理器(ComputeBolt), 数目不做限定。在存储与计算层306执行表达式计算之前把从输入层302接收的输入数据存储在外部存储312中。
输出层308,用于接收存储与计算层306中ComputeBolt的计算结果,把计算结果进行合并,输出到外部存储312。
其中,输出层308可以有两个输出结果处理器(ResultBolt),这里数目不做限定。
协调层310,用于解决流式数据处理中遇到的数据管理问题。
其中,协调层310可以是一个ZooKeeper集群,(ZK集群),ZK集群里面可以有3台服务器,例如,可以用于规则管理、模型管理等,在这里数目不做限定。
外部存储312,用于存储流式数据处理结果。
其中,外部存储312包括使用不同应用的数据库,比如,可以把流式处理结果缓存到缓存数据库中,缓存数据可以实现实时数据查询,优化数据的获取,提高查询效率,其中,Redis可用来缓存数据。
上述流式数据处理平台架构图,将识别后表达式发送到计算引擎的路由层,根据分发策略把表达式从路由层发送至存储与计算层,在表达式从路由层发送至存储与计算层时,把输入的数据存储到一个开源数据库中,确保数据不被丢失。在存储与计算层,满足表达式计算的触发条件时,可以是识别的事件id与存储的事件id匹配,则执行表达式计算,得到数据计算结果。通过计算引擎的输出层可以把数据输出到不同数据库,实现不同场景的应用。
在一个实施例中,该方法还包括:
将所述流式数据的处理结果写入到第一数据库和第二数据库中,所述第一数据库用于实时查询,所述第二数据库用于离线查询。
其中,第一数据库的数据类型可以是字符串、列表、集合等,第一数据库可以应用于会话缓存、实时消息推送、订阅消息等,第一数据库可以通过设定时间或数据量达到数量阈值对数据库中数据进行删除,提高查询效率。第二数据库数据的数据类型可以是纯文本、Hbase中的文件等,第二数据库可以用于日志分析、海量结构化数据离线分析等会话缓存第二数据库。通过把流式数据写入第一数据库和第二数据库可以满足不同应用场景应用。
在一个实施例中,该方法还包括:
将所述流式数据的处理结果写入到第三数据库;
当所述第三数据库中的数据量达到数量阈值或到达预设时长,则将所述第三数据库中的处理结果存储到所述第二数据库中。
其中,第三数据库可以用于负载分流,例如第三数据库可为HBASE数据库。当第三数据库中的数据量达到数量阈值或到达预设时长时,把处理结果存储到第二数据库中,确保数据的完整性,可实现离线数据处理。
在一个实施例中,如图4所示,提供了一种流式数据处理方法,以该方法应用于图1中的终端102为例进行说明,对所述目标SQL语句进行解析,得到所述流式数据对应的事件标识之后,包括以下步骤:
步骤402,获取所述事件标识对应的多个第一数据表;将所述多个第一数据表合并成一个第二数据表。
具体地,接收的流式数据中多个数据表种度含有相同的事件标识,把包含相同事件标识中数据表进行合并,得到一个新的数据表,减少同一事件标识的数据处理次数,优化数据处理流程,提高数据处理准确率。
步骤404,当所述事件标识与预先存储的事件标识相匹配时,对所述流式数据进行处理。
其中,预先存储的事件标识是指根据需要预先配置的事件对应的事件标识。该预先存储的事件标识可采用数据库方式存储或列表方式存储等。
将事件标识与预先存储的事件标识进行比较,当事件标识与预先存储的事件标识相同时,则表示事件标识与预先存储的事件标识相匹配。
上述流式数据处理方法中,当接收到流式数据时,根据流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句,对目标SQL语句进行解析,得到流式数据对应的事件标识之后获取事件标识对应的多个第一数据表,将多个第一数据表合并成一个第二数据表,减少同一事件标识的数据处理次数;当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理,因此不需要通过消息窗口或者定时器触发执行数据处理,通过事件触发流式数据,优化数据处理过程,提高了数据处理效率,也提高了程序运行性能和系统的稳定性。SQL表达式支持可配置化、灵活性高,提高程序的伸缩性,扩展了流式数据处理的应用场景。
在一个实施例中,如图5所示,提供了一种流式数据处理步骤图,包括:
步骤502,数据输入。
具体地,计算引擎输入层接受从数据库获取的流式数据,其中数据库可以 Kafka,在这里不做限定。
步骤504,通过索引获取表达式。
具体地,计算引擎输入层接受从数据库获取的流式数据时,对流式数据进行分析,可以获取流式数据的信息,信息可以是流式数据的name,流式数据的信息与表达式的索引可以是映射关系,其中,表达式可以是SQL表达式。通过映射获取信息对应的索引,进而获取数据计算规则。索引是用来快速地寻找那些具有特定值的记录,可以快速查找,索引可以是唯一索引、主键、单列索引、多列索引、全局索引等。例如,如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作过程时间越长,准确率越低。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。
步骤506,识别表达式。
其中,表达式不是一般简单可立即计算的表达式,例如,1+2*3对获取的表达式进行识别与计算,可以是具有特殊的内定的语法,通过对表达式特殊内定的语法进行识别,表达式才能进行计算。
具体地,可以以SQL表达式为例,通过Durid中词法分析器和语法分析器对SQL表达式中特殊内定的语法进行解析,可以得到SQL表达式中数据源、字段、约束条件等。通过识别SQL表达式后,才能进行计算。
步骤608,求解表达式。
具体地,将识别后表达式发送到计算引擎的路由层,根据分发策略把表达式从路由层发送至存储与计算层,在表达式从路由层发送至存储与计算层时,把输入的数据存储到一个开源数据库中,确保数据不被丢失。在存储与计算层,满足表达式计算的触发条件时,可以是识别的事件id与与存储的事件id匹配,则执行表达式计算,得到数据计算结果。通过计算引擎的输出层可以把数据输出到不同数据库,实现不同场景的应用。
上述流式数据处理步骤,通过对计算引擎输入层的输入数据识别,在存储与计算层判断是否满足表达式计算的触发条件,当满足表达式计算的触发条件时,执行表达式计算。优化数据处理过程,提高了数据处理效率。
虽然图2、图4、图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图图2、图4、图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种流式数据处理装置,包括:获取模块602、处理模块604、触发模块606,其中:
获取模块602,用于获取流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句。
处理模块604,用于解析器解析所述目标SQL语句,获取流式数据对应的事件标识。
触发模块606,用于当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理。
上述流式数据处理装置,当接收到流式数据时,根据流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句,对目标SQL语句进行解析,得到流式数据对应的事件标识,不需要对流式数据进行分段管理;当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理,因此不需要通过消息窗口或者定时器触发执行数据处理,通过事件触发流式数据,优化数据处理过程,提高了数据处理效率,也提高了程序运行性能和系统的稳定性。SQL表达式支持可配置化、灵活性高,提高程序的伸缩性,扩展了流式数据处理的应用场景。
在一个实施例中,如图6所示,流式数据处理装置600还包括合并模块608、写入模块610,其中:
合并模块608,用于将事件标识对应的多个第一数据表合并成一个第二数据表。
写入模块610,用于把流式数据的处理结果写入到第一数据库和第二数据库。
在一个实施例中,写入模块610,用于将流式数据的处理结果写入到第三数据库;当第三数据库中的数据量达到数量阈值或到达预设时长,则将第三数据库中的处理结果存储到第二数据库中。
在一个实施例中,如图6所示,流式数据处理装置600还包括传送模块612,其中:
传送模块612,用于把事件标识及对应的事件处理策略传输给计算引擎的路由层,通过计算引擎的路由层将事件标识及对应的事件处理策略分发到计算引擎的存储与计算层。
在一个实施例中,传送模块612用于把计算引擎的存储与计算层的处理结果传输给该引擎的输出层。上述装置中各个模块的划分仅用于举例说明,在其他实施例中,可将推荐信息生成装置按照需要划分为不同的模块,以完成上述推荐信息生成装置的全部或部分功能。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种流式数据处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
当接收到流式数据时,根据流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句;
对目标SQL语句进行解析,得到流式数据对应的事件标识;
当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
所述对目标SQL语句进行解析,得到流式数据对应的事件标识之后,所述方法还包括:
获取事件标识对应的多个第一数据表;
将多个第一数据表合并成一个第二数据表。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
所述对目标SQL语句进行解析,得到流式数据对应的事件标识包括:
通过解析器中语法分析器和词法分析器对目标SQL语句进行解析,得到流式数据对应的事件标识及对应的事件处理策略。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在对所述目标SQL语句进行解析,得到流式数据对应的事件标识之后,该方法还包括:通过解析器将事件标识及对应的事件处理策略传输给计算引擎的路由层;
通过计算引擎的路由层将事件标识及对应的事件处理策略分发到所述计算引擎的存储与计算层;
当所述事件标识与预先存储的事件标识相匹配时,对流式数据进行处理,包括:
通过计算引擎的存储与计算层将所述事件标识与预先存储的事件标识进行比较,若相匹配,则按照事件处理策略对流式数据进行处理,得到处理结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过计算引擎的存储与计算层将处理结果传输给计算引擎的输出层。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将流式数据的处理结果写入到第一数据库和第二数据库中,第一数据库用于实时查询,第二数据库用于离线查询。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将流式数据的处理结果写入到第三数据库;
当所述第三数据库中的数据量达到数量阈值或到达预设时长,则将第三数据库中的处理结果存储到第二数据库中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
当接收到流式数据时,根据流式数据获取对应的流式数据处理逻辑指令中的目标SQL语句;
对目标SQL语句进行解析,得到流式数据对应的事件标识;
当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
对目标SQL语句进行解析,得到流式数据对应的事件标识之后,该方法还包括:
获取事件标识对应的多个第一数据表;
将多个第一数据表合并成一个第二数据表。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
对目标SQL语句进行解析,得到流式数据对应的事件标识包括:
通过解析器中语法分析器和词法分析器对目标SQL语句进行解析,得到流式数据对应的事件标识及对应的事件处理策略。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在对目标SQL语句进行解析,得到流式数据对应的事件标识之后,该方法还包括:
通过解析器将所述事件标识及对应的事件处理策略传输给计算引擎的路由层;
通过计算引擎的路由层将所述事件标识及对应的事件处理策略分发到计算引擎的存储与计算层;
当事件标识与预先存储的事件标识相匹配时,对流式数据进行处理,包括:
通过计算引擎的存储与计算层将事件标识与预先存储的事件标识进行比较,若相匹配,则按照事件处理策略对所述流式数据进行处理,得到处理结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
通过计算引擎的存储与计算层将处理结果传输给计算引擎的输出层。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将流式数据的处理结果写入到第一数据库和第二数据库中,第一数据库用于实时查询,第二数据库用于离线查询。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将流式数据的处理结果写入到第三数据库;
当所述第三数据库中的数据量达到数量阈值或到达预设时长,则将第三数据库中的处理结果存储到所述第二数据库中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM (EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM (SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM (DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。