CN108694221B - 数据实时分析方法、模块、设备和装置 - Google Patents
数据实时分析方法、模块、设备和装置 Download PDFInfo
- Publication number
- CN108694221B CN108694221B CN201710237867.2A CN201710237867A CN108694221B CN 108694221 B CN108694221 B CN 108694221B CN 201710237867 A CN201710237867 A CN 201710237867A CN 108694221 B CN108694221 B CN 108694221B
- Authority
- CN
- China
- Prior art keywords
- analysis
- real
- time
- data
- statement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种数据实时分析方法、模块、设备和装置。该数据实时分析方法包括:获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果建立用户分析语句对应的逻辑算子树;依据逻辑算子树构建用户分析语句对应的分析组件;提交分析组件到分布式实时流处理平台,根据分析组件,在分布式实时流处理平台实时分析用户分析语句对应的待分析数据。根据本发明实施例提供的数据实时分析方法,提高了用户进行业务实时分析的通用性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及数据实时分析方法、模块、设备和装置。
背景技术
随着大数据时代发展,海量在线数据进入全球经济的各个部门,数据资产就像固定资产和人力资本等其他生产必备要素一样是许多现代经济活动的重要组成要素。海量在线数据的分析应用在各企业应用中越来越广泛,利用海量在线数据可以实现风险快速发现、实时精确的营销、实时预警等应用。
在运营商大数据平台领域,各省接入了企业各域数据后,每次新增的数据量达到百TB级别,为了更有效利用这些数据,提升企业的竞争力,必须有相应的手段来快速、准确、高效地对海量的数据进行分析,挖掘数据中存在的潜在价值,并将其转化成决策的依据。
目前在实时数据分析领域,实时分析技术比较有代表性的是基于大数据Storm分布式实时处理系统,该系统采用Storm流计算框架的相关技术,在分析手段上基于由数据源Spout和数据处理组件Bolt,需要在Bolt提供的接口上进行编码以实现数据处理逻辑。
使用Storm分布式实时处理系统对分析人员的专业技能水平要求较高,并且对于传统数据分析人员来说,在Storm分布式实时处理系统中无法通过像离线数据分析工具那样采用SQL(Structured Query Language,结构化查询语言)作为标准通用的分析方式,通用性与操作便捷性不佳。
发明内容
本发明实施例提供数据实时分析方法、模块、设备和装置,通过语法分析器Anltr解析用户分析语句为相应的分析组件,再将分析组件提交实时平台进行实时运算,降低了用户进行实时分析的技术门槛。
根据本发明实施例的一方面,提供一种数据实时分析方法,包括:获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果建立用户分析语句对应的逻辑算子树;依据逻辑算子树构建用户分析语句对应的分析组件;提交分析组件到分布式实时流处理平台,根据分析组件,在分布式实时流处理平台实时分析用户分析语句对应的待分析数据。
根据本发明实施例的另一方面,提供一种数据实时分析模块,包括:逻辑算子树建立单元,用于获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果建立用户分析语句对应的逻辑算子树;分析组件构建单元,用于依据逻辑算子树构建用户分析语句对应的分析组件;分析组件提交单元,用于提交分析组件到分布式实时流处理平台,根据分析组件,在分布式实时流处理平台实时分析用户分析语句对应的待分析数据。
根据本发明实施例的再一方面,提供一种数据实时分析设备,包括:存储器、处理器、通信接口和总线;存储器、处理器和通信接口通过总线连接并完成相互间的通信;存储器用于存储程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行一种数据实时分析方法,其中,数据实时分析方法包括:获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果建立用户分析语句对应的逻辑算子树;依据逻辑算子树构建用户分析语句对应的分析组件;提交分析组件到分布式实时流处理平台,根据分析组件,在分布式实时流处理平台实时分析用户分析语句对应的待分析数据。
根据本发明实施例的还一方面,提供一种数据实时分析装置,包括:数据接入模块,用于通过日志收集系统flume接入待分析数据,并将待分析数据载入分布式消息队列;数据实时分析模块,用于获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果建立用户分析语句对应的逻辑算子树,依据逻辑算子树构建用户分析语句对应的分析组件,提交分析组件到分布式实时流处理平台,根据分析组件,在分布式实时流处理平台实时分析用户分析语句对应的待分析数据;分布式实时流处理平台,用于访问分布式消息队列中的待分析数据,并且利用Apache Storm实时流处理框架,根据接收的分析组件和待分析数据进行实时计算;数据缓存模块,用于将分布式实时流处理平台的实时计算结果缓存到内存数据库。
根据本发明实施例中的数据实时分析方法、模块、设备和装置,通过语法分析器Anltr解析用户分析语句为相应的分析组件,并将分析得到的分析组件提交给实时平台apache strom进行实时运算,便于用户进行业务实时分析。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是示出根据本发明一实施例的数据实时分析方法的流程图;
图2是示出根据本发明另一实施例提供的数据实时分析方法的流程图;
图3是示出根据本发明实施例的逻辑算子树的第一示意性结构图;
图4是示出图1中依据逻辑算子树构建用户分析语句的分析组件的第一示例性流程图;
图5是示出图1中依据逻辑算子树构建用户分析语句的分析组件的第二示例性流程图;
图6是示出根据本发明实施例的逻辑算子树的第二示意性结构图;
图7是示出根据本发明再一实施例的数据实时分析方法的流程图。
图8是根据本发明一实施例的数据实时分析模块的结构示意图;
图9是示出图8中逻辑算子树建立单元的详细的结构示意图;
图10是示出图8中分析组件构建单元的第一示例性结构示意图;
图11是示出图8中分析组件构建单元的第二示例性结构示意图;
图12是图8中分析组件提交单元的具体的结构示意图;
图13是示出了能够实现根据本发明实施例的数据实时分析方法和模块的数据实时分析设备的示例性硬件架构的结构图;
图14是示出根据本发明实施例的数据实时分析装置的框架结构示意图;
图15是示出根据本发明实施例的数据实时分析装置的功能框架示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
语法分析器Anltr(Another Tool for Language Recognition)是一种语言识别工具,可以通过语法的描述信息来为面向对象的计算机编程语言例如java、C++等编程语言搭建语言识别器、编译器和解释器。使用Antlr可以对计算机语言进行包括词法分析、语法分析、语义分析在内的处理工作,在本发明实施例中,将Anltr结合数据实时分析方法进行改进,从而在基于开源软件apache storm的实时分析平台支持多种数据分析方式和结构化查询语言SQL。
为了更好的理解本发明,下面将结合附图,详细描述根据本发明实施例的数据实时分析方法、模块、设备和装置,应注意,这些实施例并不是用来限制本发明公开的范围。
图1是示出根据本发明实施例的数据实时分析方法的流程图。如图1所示,本实施例中的数据实时分析方法100包括以下步骤:
步骤S110,获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果建立用户分析语句对应的逻辑算子树。
步骤S120,依据逻辑算子树构建用户分析语句对应的分析组件。
步骤S130,提交分析组件到分布式实时流处理平台,根据分析组件,在分布式实时流处理平台实时分析用户分析语句对应的待分析数据。
根据本发明实施例的数据实时分析方法,利用Anltr的类SQL解析能力,对SQL用户分析语言进行词法语法解析,构建分析组件,并将分析组件发送到实时分析平台,以对待分析数据进行实时分析,提高了实时分析的通用性和便捷性。
图2是示出了根据本公开一些示例性实施例的数据实时分析方法的详细的流程图,图2与图1相同或等同的步骤使用相同的标号。如图2所示,本实施例中的数据实时分析方法200包括以下步骤:
步骤S110,获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果建立用户分析语句对应的逻辑算子树。
在一些实施例中,分析页面可以是实时分析工作的入口,通过外部分析应用的分析页面获取SQL用户分析语句,分析页面可以提供语句输入框让用户编写SQL用户分析语句。
在另一些实施例中,SQL用户分析语句也可以是类SQL用户分析语句,类SQL语句的语法和语义与SQL标准定义相同。
在一些实施例中,步骤S110中的利用Anltr解析SQL用户分析语句,并根据解析结果构建所述用户分析语句对应的逻辑算子树的步骤具体可以包括:
步骤S1101,利用Anltr对SQL用户分析语句进行词法分析,得到用户分析语句中的关键字。
步骤S1102,根据关键字对用户分析语句进行语义分析,得到关键字对应的算子以及算子间的对应关系。
步骤S1103,利用算子以及算子间的对应关系,构建用户分析语句对应的逻辑算子树。
在上述实施例中,SQL用户分析语句或类SQL用户分析语句利用Anltr进行词法语法解析之后,被翻译成抽象语法树并根据该抽象语法树构建逻辑算子树,逻辑算子树中的每个算子表示一种实时分析组件或者处理逻辑。
为了便于理解,下面通过一个具体的示例详细介绍根据用户分析语句构建对应的逻辑算子树的步骤。
首先,获取用户分析语句Select S:1,count(S:0)from src groupby S:1。
其次,对获取的用户分析语句进行词法分析后,可以生成包括select、count、from和groupby在内的多个关键词。
接着,根据得到的关键词对获取的用户分析语句进行语义分析,具体地,通过语义分析得到关键字对应的算子以及算子间的对应关系具体可以包括以下步骤:
将from关键字对应内容解析为数据源,对应get算子;groupby关键字的对应内容解析为根据S:1字段进行数据分组,对应groupby算子;count关键字的对应内容解析为数据分组内进行count的统计,对应count算子;select关键字的对应内容解析为输出结果,输出结果的内容为S:1,count(S:0),对应send算子。
最后,通过算子和算子间的对应关系构建如图3所示的逻辑算子树。
图3示出了根据本发明实施例的逻辑算子树的第一示意性结构图。图3中的逻辑算子树包括一份数据源src,并且包含get算子、groupby算子、count算子以及send算子,算子之间的连接箭头表示算子之间的处理逻辑,即算子之间的对应关系。
在步骤S120,依据逻辑算子树构建用户分析语句对应的分析组件。
图4示出了图1中依据逻辑算子树构建用户分析语句的分析组件的第一示例性流程图。如图4所示,在一些实施例中,步骤S120可以包括以下步骤:
步骤S401,获取逻辑算子树中的算子。
步骤S402,根据算子的数量和/或待分析数据的预估量,确定SQL用户分析语句的复杂程度。
在该步骤中,如果算子的数量小于预设的算子数量门限值,和/或待分析数据的预估量小于预设的数据量门限值,则可以确定SQL分析语句的复杂程度为简单或复杂度较低。
步骤S403,SQL用户分析语句的复杂程度为简单,构建简单分析功能组件,简单分析功能组件包括逻辑算子树中的算子。
作为一个示例,继续参考图3,在图3中,待分析的数据即数据源src的数量为1,并且一共4个算子,复杂度较低,可以使用简单分析功能组件进行处理,简单分析功能组件中包括逻辑算子树中的算子,并且在简单分析功能组件内部可以根据逻辑算子树中算子间的逻辑关系构建分析功能,从而输出分析结果。
在上述实施例中,针对用户分析语句用的SQL语句或类SQL语句的复杂度,可以选择不同的处理方式,复杂程度为简单或复杂度较低的分析语句,可以在简单分析功能组件中进行整个逻辑处理,减少系统资源的消耗。
图5示出了图1中依据逻辑算子树构建用户分析语句的分析组件的第二示例性流程图。如图5所示,在一些实施例中,步骤S120可以包括以下步骤:
步骤S501,获取逻辑算子树中的算子及算子间的对应关系。
步骤S502,根据算子的数量和/或待分析数据的预估量,确定SQL用户分析语句的复杂程度。
在该步骤中,如果算子的数量大于等于预设的算子数量门限值,和/或待分析数据的预估量大于等于预设的数据量门限值,则可以确定SQL分析语句的复杂程度为复杂或复杂度较高。
步骤S503,SQL用户分析语句的复杂程度为复杂,提取预置的实时分析组件库中与所述算子对应的分析组件,并根据算子间的对应关系编排所述分析组件。
在该实施例中,针对复杂程度为复杂,也就是复杂度较高的用户分析语句,可以采用拓扑Topology构建的方式进行解析。Topology中每一个Spout对应一个数据源,每一个Blot对应逻辑算子树中的一个算子。
为了更好的阐述该实施例中的实时分析的方法,下面通过一个具体的示例进行说明。
首先,获取用户分析语句:select t1.S:1,t2.S:1 from src1 t1 join(selectS:0,count(S:1)from src2 groupby S:0)t2on t1.S:0=t2.S:0。
其次,对获取的用户分析语句进行词法分析后,可以生成包括select、from、join、count、on和groupby在内的多个关键词。
接着,根据得到的关键词对获取的用户分析语句进行语义分析,具体地,通过语义分析得到关键字对应的算子以及算子间的对应关系具体可以包括以下步骤:
from关键字对应内容解析为数据源,获取src2数据源的所有数据,对应get算子;groupby关键字的对应内容解析为根据S:0字段进行数据分组,对应groupby算子;count关键字的对应内容解析为分组后对S:1字段进行count操作,对应count算子;from关键字对应内容解析为数据源,获取src1所有数据,对应get算子;join关键字的对应内容解析为将数据源src1与count算子对应的操作获取的数据做join操作,对应join算子;select关键字的对应内容解析为输出结果,获取字段t1.S:1以及t2.S:1进行输出,对应send算子。
最后,通过算子和算子间的对应关系构建如图6所示的逻辑算子树。
图6所示的逻辑算子树一共6个算子,2个数据源,并且其中存在关联操作,所以对比上述图3所示的逻辑算子树,复杂度较高,可以构建Topology完成这次的分析应用。
具体地,get算子可以对应数据获取组件,groupby算子可以对应数据分组组件,count算子可以对应统计组件,join算子可以对应关联组件,send算子可以对应数据导出组件。
依据逻辑算子树中的算子和算子间的对应关系构建Topology,Topology中的Spout对应数据源,Blot对应逻辑算子书中的算子。
在一些实施例中,SQL用户分析语句或类SQL用户分析语句中所使用的SQL函数,来源于SQL函数库或类SQL函数库。SQL函数库或类SQL函数库提供了较为简便的扩展能力,对于SQL的扩展函数或类SQL的扩展函数,可以通过注册的方式进行扩展和使用。
在上述实施例中,可以结合SQL用户分析语句的复杂度和/或处理数据预估量,将用户实时分析的应用场景划分为简单分析场景或复杂分析场景,并且针对两种场景分别优化最终的构造执行方式,实现资源和计算能力的合理利用。
在一些实施例的复杂分析场景中,可以对多个数据源进行相互关联运算。
在另外一些实施例中,可以通过数据缓存技术,将配置表等静态表与待分析数据之间进行相互关联的操作运算。
图7示出了根据本发明再一实施例的数据实时分析方法的流程图。图7与图1相同或等同的步骤使用相同的标号。如图7所示,数据实时分析方法700基本相同于数据实时分析方法100,不同之处在于,本实施例中步骤S130中提交分析组件到分布式实时流处理平台的步骤可以包括以下步骤:
步骤S131,基于分析组件构建实时计算拓扑。
步骤S132,提交实时计算拓扑到分布式实时流处理平台。
在该步骤中,分布式实时流处理平台可以是基于开源软件apache storm的实时分析平台。
在该实施例中,分布式实时流处理平台根据实时计算拓扑中的分析组件,实时分析用户分析语句对应的待分析数据。
在本发明上述实施例中,基于分布式实时流处理平台,提供了一种数据实时分析方法,该实时分析方法可以支持多种数据分析方式,例如匹配、统计、分组计算等,使分析手段多样化,并且还可以使用SQL为基础作为分析语言,提供了分析的便捷性。
下面结合附图,详细介绍根据本发明实施例的数据实时分析模块。
图8示出了根据本发明一实施例提供的数据实时分析模块的结构示意图。如图8所示,数据实时分析模块800包括:
逻辑算子树建立单元810,用于获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果建立用户分析语句对应的逻辑算子树。
分析组件构建单元820,用于依据逻辑算子树构建用户分析语句对应的分析组件。
分析组件提交单元830,用于提交分析组件到分布式实时流处理平台,根据分析组件,在分布式实时流处理平台实时分析用户分析语句对应的待分析数据。
根据本发明实施例的数据实时分析模块,通过对SQL用户分析语言进行词法语法解析得到分析组件,并将分析组件发送到实时分析平台,从而对待分析数据进行实时分析,可以提高实时分析的通用性和便捷性。
图9示出了图8中逻辑算子树建立单元810的详细的结构示意图。如图8所示,逻辑算子树建立单元810具体可以包括:
词法分析子单元8101,用于利用Anltr对用户分析语句进行词法分析,得到用户分析语句中的关键字。
语义分析子单元8102,用于根据关键字对用户分析语句进行语义分析,得到关键字对应的算子以及算子间的对应关系。
逻辑算子树建立单元810还用于利用算子以及算子间的对应关系,构建用户分析语句对应的逻辑算子树。
在该实施例中,利用Anltr的类解析能力,对用户分析语句中进行词法语法分析,得到算子和算子间的对应关系,并利用算子和算子间的对应关系构建逻辑算子树,从而得到用户分析语句中的处理逻辑。
图10示出了图8中分析组件构建单元的第一示例性结构示意图。如图10所示,在一些实施例中,分析组件构建单元820具体可以包括:
算子获取子单元1001,用于获取逻辑算子树中的算子。
分析语句复杂度确定子单元1002,用于根据算子的数量和/或待分析数据的预估量,确定SQL用户分析语句的复杂程度。
简单分析功能组件构建子单元1003,用于SQL用户分析语句的复杂程度为简单,构建简单分析功能组件,简单分析功能组件包括逻辑算子树中的算子。
在该实施例中,通过对用户分析语句的复杂程度,对复杂程度为简单的用户分析语句,可以在简单分析功能组件中进行整个逻辑处理,减少系统资源的消耗。
图11示出了图8中分析组件构建单元的第二示例性结构示意图。如图11所示,在一些实施例中,分析组件构建单元820具体可以包括:
算子及对应关系获取子单元1101,用于获取逻辑算子树中的算子及算子间的对应关系。
分析语句复杂度确定子单元1102,用于根据算子的数量和/或待分析数据的预估量,确定SQL用户分析语句的复杂程度。
分析组件提取与编排子单元1103,用于SQL用户分析语句的复杂程度为复杂,提取预置的实时分析组件库中与算子对应的分析组件,并根据算子间的对应关系编排分析组件。
在该实施例中,通过对用户分析语句的复杂程度的确定,对复杂程度为复杂的用户分析语句,可以采用拓扑Topology构建的方式进行解析,从而提高实时分析的效率,实现资源和计算能力的合理利用。
图12示出了图8中分析组件提交单元的具体的结构示意图。如图12所示,在一些实施例中,分析组件提交单元830具体可以包括:
实时计算拓扑构建子单元8301,用于基于分析组件构建实时计算拓扑。
实时计算拓扑提交子单元8302,用于提交实时计算拓扑到分布式实时流处理平台。
在该实施例中,将实时计算拓扑发送到分布式实时流处理平台,在分布式实时流处理平台,根据实时计算拓扑中的分析组件实时分析用户分析语句对应的待分析数据。
根据本发明实施例的数据实时分析模块,可以通过Anltr解析用户分析语句为相应的分析组件组合,提交给实时平台apache strom进行实时运算,便于用户进行业务实时分析。
根据本发明实施例的数据实时分析模块的其他细节与以上结合图1至图7描述的根据本发明实施例的数据实时分析方法类似,在此不再赘述。
结合图1至图12描述的根据本发明实施例的数据实时分析方法和模块可以由数据实时分析设备来实现。图13是示出能够实现根据本发明实施例的数据实时分析方法和模块的数据实时分析设备的示例性硬件架构的结构图。
如图13所示,本实施例中的数据实时分析设备1300包括:处理器1301、存储器1302、通信接口1303和总线1310,其中,处理器1301、存储器1302、通信接口1303通过总线1310连接并完成相互间的通信。
具体地,上述处理器1301可以包括中央处理器(CPU),或者特定集成电路(ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器1302可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1302可包括HDD、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1302可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1302可在数据实时分析设备1300的内部或外部。在特定实施例中,存储器1302是非易失性固态存储器。在特定实施例中,存储器1302包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
通信接口1303,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线1310包括硬件、软件或两者,将数据实时分析设备1300的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线1310可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
也就是说,图13所示的数据实时分析设备1300可以被实现为包括:处理器、存储器、通信接口和总线。处理器、存储器和通信接口通过总线连接并完成相互间的通信;存储器用于存储程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行一种数据实时分析方法,其中,该数据实时分析方法包括:获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果构建用户分析语句对应的逻辑算子树;依据逻辑算子树构建用户分析语句对应的分析组件;提交分析组件到分布式实时流处理平台,根据分析组件,在分布式实时流处理平台实时分析用户分析语句对应的待分析数据。
该数据实时分析设备1300可以基于来自用户分析页面输入的相关信息执行本发明实施例中的数据实时分析方法的步骤S110-S130、步骤S1101-S1103、步骤S401-S403、步骤S501-S503以及步骤S131-S132,从而实现结合图1至图12描述的数据实时分析方法和模块。
下面结合图14,详细描述根据本发明实施例的数据实时分析装置。
图14是示出根据本发明实施例的数据实时分析装置的框架结构示意图。如图14所示,本发明实施例的数据实时分析装置1400包括:数据接入模块1401、数据实时分析模块1402、分布式实时流处理平台1403和数据缓存模块1404,其中:
数据接入模块1401,用于通过日志收集系统flume接入待分析数据,并将待分析数据载入分布式消息队列。
在一些实施例中,flume负责从业务各节点上实时采集数据,并且由于采集数据的速度通常和数据处理的速度不一定同步,因此添加消息中间件,即分布式消息队列kafka,用户载入待分析数据。
在本发明实施例中,kafka可以是一种高吞吐量的分布式消息队列,可以支持载入每秒数十万的消息,并且能够保持长时间的稳定性能。
在该模块中,结合flume与kafka实现实时接入数据功能,外部数据可以由flume完成接入工作,数据接入后载入消息队列kafka的话题队列提供给实时平台进行访问。
在一些实施例中,数据接入模块1401可以被实现为该kafka消息队列。
数据实时分析模块1402,用于获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析用户分析语句,并根据解析结果建立用户分析语句对应的逻辑算子树,依据逻辑算子树构建用户分析语句对应的分析组件,提交分析组件到分布式实时流处理平台,根据分析组件,在分布式实时流处理平台实时分析用户分析语句对应的待分析数据。
在一些实施例中,由于数据实时分析模块中Anltr的类处理能力的应用,数据实时分析模块也可以称为类SQL解析模块。
在一些实施例中,数据实时分析装置还可以包括实时分析组件库,实时分析组件库提供丰富的分析组件,分析组件由分布式实时流处理平台计算引擎Apache Storm的编程语言实现,提供给数据实时分析模块使用,数据实时分析模块可以根据用户分析任务对提取的分析组件编排分析组件库中的分析组件。
因此,用户可以不用跟底层的分布式实时流处理平台的编程技术直接交互,只需将关注的业务分析问题写成SQL用户分析语句提交即可。
根据本发明实施例的数据实时分析模块1402的其他细节与以上结合图1至图13描述的根据本发明实施例的数据实时分析方法、模块和设备类似,在此不再赘述。
分布式实时流处理平台1403,用于访问分布式消息队列中的待分析数据,并且利用Apache Storm实时流处理框架,根据接收的分析组件和待分析数据进行实时计算。
分布式实时流处理平台采用开源软件Apache Storm为基础,是本发明实施例的数据实时分析装置的关键技术选择。Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了分布式系统Hadoop的批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用等领域。Storm的部署管理非常简单,而且在同类的流式计算工具中,Storm的性能也是非常出众的,降低了进行实时处理的复杂性。
数据缓存模块1404,用于将分布式实时流处理平台的实时计算结果缓存到内存数据库。
如图14所示,在一些实施例中,数据缓存模块还可以包括本地缓存;数据实时分析装置还用于根据接收的对实时计算结果的访问请求,查询本地缓存;本地缓存不存在请求的实时计算结果,查询内存数据库,将内存数据库中实时计算结果缓存到本地缓存;返回本地缓存中的实时计算结果。
在数据缓存模块中,可以通过开源内存数据库redis与本地缓存相结合实现二级缓存,提高装置运行速度。
具体地,在数据缓存模块的内存数据库和本地缓存中,数据采用key-value存储格式,即主键-键值存储格式。
在一些实施例中,redis内存数据库和本地缓存可以实现为key-value存储系统。
在一些实施例中,内存数据库还可以是redis集群。
key-value的存储格式具有较高的读写性能,数据缓存模块的key-value存储格式在分布式存储系统中查询速度快、存放数据量大、支持高并发,由于可以保存数据分析结果的数据缓存模块往往是比较简单的关系操作,非常适合通过主键进行数据访问结果的查询,有利于数据可靠性和持久化。
作为具体的示例,在数据缓存模块进行数据访问时,如果该数据访问在本地缓存中存在对应的key值时,可以直接返回对应value;当本地缓存没有对应key值则可以查询redis集群,将从redis集群上查询到的key-value值缓存在本地缓存中,最后将本地缓存中的查询值返回给分析应用。并且,本地缓存中的查询值可以供下次查询时使用。
本发明实施例阐述了一种基于流计算的数据实时分析装置,该实时分析装置通过Anltr解析用户分析语句为相应的分析组件组合,提交给实时平台apache strom进行实时运算,降低了用户进行实时分析工作的技术门槛,并通过本地缓存与内存数据的数据交互机制提高了访问效率。
作为一个更具体的示例,下面结合图15示出的根据本发明实施例的数据实时分析装置的功能框架图描述数据实时分析装置的工作流程。
图15示出了根据本发明另一实施例的数据实时分析装置的功能框架示意图。如图15所示,数据实时分析装置的功能框架可以包括:消息队列1501、分析页面1502、数据实时分析模块1503、实时分析组件库1504、分布式实时流处理平台1505、数据缓存模块1506。
在一些实施例中,消息队列1501,结合flume与kafka实现实时接入数据功能,待分析数据的数据源接入消息队列1501供分布式实时流处理平台1505进行访问。
分析页面1502,是用户使用数据实时分析装置1500进行实时分析工作的入口,分析页面1502提供语句输入框让用户编写SQL分析语句。
数据实时分析模块1503,利用语法分析器Anltr解析分析页面1502输入的SQL用户分析语句,构建该用户分析语句对应的分析组件,并将构建的分析组件提交到分布式实时流处理平台1505。
实时分析组件库1504,提供丰富的分析组件给数据实时分析模块使用,实时分析组件库中的分析组件是由实时平台计算引擎Apache Storm的编程语言实现的。
分布式实时流处理平台1505,根据接收的分析组件对消息队列1501中的待分析数据进行实时计算,并将实时计算的结果存入消息缓存模块1506的内存数据库。
消息缓存模块1506,包括内存数据库和本地缓存在内的二级缓存结构。消息缓存模块1506可以接收外部实时应用对数据访问结果的查询访问。消息缓存模块根据查询访问请求查询本地缓存,如果本地缓存存在请求的数据,返回请求的数据;如果本地缓存不存在请求的数据,查询内存数据库,将所述内存数据库中请求的数据缓存到本地缓存后,返回本地缓存中该请求的数据。
在一些实施例中,请求的数据可以是对待分析数据的实时计算结果。如果本地缓存中也不存在该待分析数据的实时计算结果,可以通过分析页面1502提供的语句输入框让用户编写SQL分析语句,以对待分析数据进行实时分析。
综上所述,本发明实施例可以对目前移动经营分析领域的数据实时分析领域提供了便于用户进行业务实时分析的方法、模块、设备和装置,可以基于实时分析平台,为数据实时分析提供了更丰富的分析手段,提高分析效率。
为更好的提高实时分析效率,可以采用内存数据库与本地缓存混搭作为配置信息等辅助信息的承载体,优化了数据分析主体与辅助信息的交互效率。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (7)
1.一种数据实时分析方法,其特征在于,所述分析方法包括:
获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析所述用户分析语句,并根据解析结果建立所述用户分析语句对应的逻辑算子树;
依据所述逻辑算子树构建所述用户分析语句对应的分析组件;
提交所述分析组件到分布式实时流处理平台,根据所述分析组件构建实时计算拓扑,在所述分布式实时流处理平台根据实时计算拓扑实时分析所述用户分析语句对应的待分析数据;
所述依据所述逻辑算子树构建所述用户分析语句对应的分析组件,包括:获取所述逻辑算子树中的算子以及算子及算子间的对应关系;根据所述算子的数量和/或待分析数据的预估量,确定所述SQL用户分析语句的复杂程度;当所述SQL用户分析语句的复杂程度为简单时,构建简单的分析组件,所述分析组件包括所述逻辑算子树中的算子;当所述SQL用户分析语句的复杂程度为复杂时,提取预置的实时分析组件库中与所述算子对应的分析组件,并根据所述算子间的对应关系编排所述分析组件。
2.根据权利要求1所述的分析方法,其特征在于,所述利用Anltr解析所述用户分析语句,并根据解析结果构建所述用户分析语句对应的逻辑算子树,包括:
利用Anltr对所述用户分析语句进行词法分析,得到所述用户分析语句中的关键字;
根据所述关键字对所述用户分析语句进行语义分析,得到所述关键字对应的算子以及所述算子间的对应关系;
利用所述算子以及所述算子间的对应关系,构建所述用户分析语句对应的逻辑算子树。
3.一种数据实时分析模块,其特征在于,所述分析模块包括:
逻辑算子树建立单元,用于获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析所述用户分析语句,并根据解析结果建立所述用户分析语句对应的逻辑算子树;
分析组件构建单元,用于依据所述逻辑算子树构建所述用户分析语句对应的分析组件;
分析组件提交单元,用于提交所述分析组件到分布式实时流处理平台,根据所述分析组件构建实时计算拓扑,在所述分布式实时流处理平台根据实时计算拓扑实时分析所述用户分析语句对应的待分析数据;
所述分析组件构建单元包括:
算子获取子单元,用于获取所述逻辑算子树中的算子;
分析语句复杂度确定子单元,用于根据所述算子的数量和/或待分析数据的预估量,确定所述SQL用户分析语句的复杂程度;
简单分析功能组件构建子单元,用于当所述SQL用户分析语句的复杂程度为简单时,构建简单的分析组件,所述分析组件包括所述逻辑算子树中的算子;
算子及对应关系获取子单元,用于获取所述逻辑算子树中的算子及算子间的对应关系;
分析组件提取与编排子单元,用于当所述SQL用户分析语句的复杂程度为复杂时,提取预置的实时分析组件库中与所述算子对应的分析组件,并根据所述算子间的对应关系编排所述分析组件。
4.根据权利要求3所述的分析模块,其特征在于,所述逻辑算子树建立单元包括:
词法分析子单元,用于利用Anltr对所述用户分析语句进行词法分析,得到所述用户分析语句中的关键字;
语义分析子单元,用于根据所述关键字对所述用户分析语句进行语义分析,得到所述关键字对应的算子以及所述算子间的对应关系;
所述逻辑算子树建立单元还用于利用所述算子以及所述算子间的对应关系,构建所述用户分析语句对应的逻辑算子树。
5.一种数据实时分析设备,其特征在于,所述分析设备包括:
存储器、处理器、通信接口和总线;
所述存储器、所述处理器和所述通信接口通过所述总线连接并完成相互间的通信;
所述存储器用于存储程序代码;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种数据实时分析方法,其中,所述数据实时分析方法包括:
获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析所述用户分析语句,并根据解析结果构建所述用户分析语句对应的逻辑算子树;
依据所述逻辑算子树构建所述用户分析语句对应的分析组件;
提交所述分析组件到分布式实时流处理平台,根据所述分析组件构建实时计算拓扑,在所述分布式实时流处理平台根据实时计算拓扑实时分析所述用户分析语句对应的待分析数据;
所述依据所述逻辑算子树构建所述用户分析语句对应的分析组件,包括:获取所述逻辑算子树中的算子以及算子及算子间的对应关系;根据所述算子的数量和/或待分析数据的预估量,确定所述SQL用户分析语句的复杂程度;当所述SQL用户分析语句的复杂程度为简单时,构建简单的分析组件,所述分析组件包括所述逻辑算子树中的算子;当所述SQL用户分析语句的复杂程度为复杂时,提取预置的实时分析组件库中与所述算子对应的分析组件,并根据所述算子间的对应关系编排所述分析组件。
6.一种数据实时分析装置,其特征在于,所述分析装置包括:
数据接入模块,用于通过日志收集系统flume接入待分析数据,并将所述待分析数据载入分布式消息队列;
数据实时分析模块,用于获取结构化查询语言SQL用户分析语句,利用语法分析器Anltr解析所述用户分析语句,并根据解析结果建立所述用户分析语句对应的逻辑算子树,依据所述逻辑算子树构建所述用户分析语句对应的分析组件,提交所述分析组件到分布式实时流处理平台,根据所述分析组件构建实时计算拓扑,在所述分布式实时流处理平台根据实时计算拓扑实时分析所述用户分析语句对应的所述待分析数据,其中,所述依据所述逻辑算子树构建所述用户分析语句对应的分析组件,包括:获取所述逻辑算子树中的算子以及算子及算子间的对应关系;根据所述算子的数量和/或待分析数据的预估量,确定所述SQL用户分析语句的复杂程度;当所述SQL用户分析语句的复杂程度为简单时,构建简单的分析组件,所述分析组件包括所述逻辑算子树中的算子;当所述SQL用户分析语句的复杂程度为复杂时,提取预置的实时分析组件库中与所述算子对应的分析组件,并根据所述算子间的对应关系编排所述分析组件;
分布式实时流处理平台,用于访问所述分布式消息队列中的待分析数据,并且利用Apache Storm实时流处理框架,根据接收的所述分析组件和所述待分析数据进行实时计算;
数据缓存模块,用于将所述分布式实时流处理平台的实时计算结果缓存到内存数据库。
7.根据权利要求6所述的数据实时分析装置,其特征在于,所述数据缓存模块还包括本地缓存;
所述数据实时分析装置还用于根据接收的对所述实时计算结果的访问请求,查询所述本地缓存;
所述本地缓存不存在请求的所述实时计算结果,查询所述内存数据库,将所述内存数据库中所述实时计算结果缓存到所述本地缓存;
返回所述本地缓存中的所述实时计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710237867.2A CN108694221B (zh) | 2017-04-12 | 2017-04-12 | 数据实时分析方法、模块、设备和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710237867.2A CN108694221B (zh) | 2017-04-12 | 2017-04-12 | 数据实时分析方法、模块、设备和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108694221A CN108694221A (zh) | 2018-10-23 |
CN108694221B true CN108694221B (zh) | 2021-06-25 |
Family
ID=63843932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710237867.2A Active CN108694221B (zh) | 2017-04-12 | 2017-04-12 | 数据实时分析方法、模块、设备和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108694221B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542941A (zh) * | 2018-11-26 | 2019-03-29 | 上海新炬网络技术有限公司 | 基于antlr的实时流式计算方法 |
CN111221860A (zh) * | 2018-11-27 | 2020-06-02 | 北京奇虎科技有限公司 | 基于大数据的混合查询优化方法及装置 |
CN110333941B (zh) * | 2019-06-28 | 2021-08-24 | 苏宁消费金融有限公司 | 一种基于sql的大数据实时计算方法 |
CN110502559A (zh) * | 2019-07-25 | 2019-11-26 | 浙江公共安全技术研究院有限公司 | 一种可信安全跨域数据交换的数据总线及传输方法 |
CN110554856A (zh) * | 2019-09-06 | 2019-12-10 | 航天科工广信智能技术有限公司 | 一种微服务治理系统 |
CN110874350A (zh) * | 2019-10-14 | 2020-03-10 | 支付宝(杭州)信息技术有限公司 | 结构化日志数据的加工方法和装置 |
CN112883049A (zh) * | 2019-11-29 | 2021-06-01 | 北京中关村科金技术有限公司 | 一种数据实时计算方法、装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544196A (zh) * | 2012-07-16 | 2014-01-29 | 闫忠华 | BigBase高通量大数据在线分析软硬件一体机 |
CN105426504A (zh) * | 2015-11-27 | 2016-03-23 | 陕西艾特信息化工程咨询有限责任公司 | 一种基于内存计算的分布式数据分析处理方法 |
CN105677681A (zh) * | 2014-11-21 | 2016-06-15 | 北京神州泰岳软件股份有限公司 | 基于多个数据库的数据查询方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8819038B1 (en) * | 2013-10-06 | 2014-08-26 | Yahoo! Inc. | System and method for performing set operations with defined sketch accuracy distribution |
-
2017
- 2017-04-12 CN CN201710237867.2A patent/CN108694221B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544196A (zh) * | 2012-07-16 | 2014-01-29 | 闫忠华 | BigBase高通量大数据在线分析软硬件一体机 |
CN105677681A (zh) * | 2014-11-21 | 2016-06-15 | 北京神州泰岳软件股份有限公司 | 基于多个数据库的数据查询方法及装置 |
CN105426504A (zh) * | 2015-11-27 | 2016-03-23 | 陕西艾特信息化工程咨询有限责任公司 | 一种基于内存计算的分布式数据分析处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108694221A (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694221B (zh) | 数据实时分析方法、模块、设备和装置 | |
CN109902105B (zh) | 用于微服务架构的数据查询系统、方法、设备及存储介质 | |
CN110825767A (zh) | 数据查询方法、平台、设备及存储介质 | |
CN109522341B (zh) | 实现基于sql的流式数据处理引擎的方法、装置、设备 | |
US9930113B2 (en) | Data retrieval via a telecommunication network | |
CN114357276A (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
CN112860727B (zh) | 基于大数据查询引擎的数据查询方法、装置、设备及介质 | |
JP2012113706A (ja) | データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム | |
CN113419740B (zh) | 程序数据流的分析方法、装置、电子设备及可读存储介质 | |
CN113312377A (zh) | 一种自动关联的sql查询语句处理方法、装置和电子设备 | |
CN115335821B (zh) | 卸载统计收集 | |
CN111694866A (zh) | 数据搜索及存储方法、数据搜索系统、装置、设备及介质 | |
CN112860730A (zh) | Sql语句的处理方法、装置、电子设备及可读存储介质 | |
CN111427784B (zh) | 一种数据获取方法、装置、设备及存储介质 | |
CN116578585B (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN111221841A (zh) | 基于大数据的实时处理方法及装置 | |
CN111159213A (zh) | 一种数据查询方法、装置、系统和存储介质 | |
CN116049232A (zh) | 一种子查询抽取方法、装置、电子设备和存储介质 | |
CN112988778B (zh) | 一种处理数据库查询脚本的方法和装置 | |
EP2990960A1 (en) | Data retrieval via a telecommunication network | |
CN110995815B (zh) | 一种基于Gaia大数据分析系统的信息传输方法 | |
CN112527880B (zh) | 大数据集群元数据信息的采集方法、装置、设备及介质 | |
CN116257545B (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
CN115563183B (zh) | 查询方法、装置及程序产品 | |
CN113836175B (zh) | 数据访问方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |