CN109522341B - 实现基于sql的流式数据处理引擎的方法、装置、设备 - Google Patents

实现基于sql的流式数据处理引擎的方法、装置、设备 Download PDF

Info

Publication number
CN109522341B
CN109522341B CN201811423735.XA CN201811423735A CN109522341B CN 109522341 B CN109522341 B CN 109522341B CN 201811423735 A CN201811423735 A CN 201811423735A CN 109522341 B CN109522341 B CN 109522341B
Authority
CN
China
Prior art keywords
sql
streaming data
statistical
statement
tree
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
Application number
CN201811423735.XA
Other languages
English (en)
Other versions
CN109522341A (zh
Inventor
宋永忠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
JD Digital Technology Holdings Co Ltd
Jingdong Technology Holding Co Ltd
Original Assignee
JD Digital Technology Holdings Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by JD Digital Technology Holdings Co Ltd filed Critical JD Digital Technology Holdings Co Ltd
Priority to CN201811423735.XA priority Critical patent/CN109522341B/zh
Publication of CN109522341A publication Critical patent/CN109522341A/zh
Application granted granted Critical
Publication of CN109522341B publication Critical patent/CN109522341B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开一种实现基于SQL的流式数据处理引擎的方法、装置、设备。该方法包括:获得SQL语句;对SQL语句进行词法分析,获得SQL语句的词法分析结果;对词法分析结果进行语法分析,获得SQL语句的语法分析树;根据语法分析树,生成待处理流式数据的统计指标,其中统计指标包括多个维度,多个维度包括时间序列维度;以及根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。该方法能够以标准的SQL实现基于流式数据的指标粒度化处理。

Description

实现基于SQL的流式数据处理引擎的方法、装置、设备
技术领域
本发明涉及大数据处理技术领域,具体而言,涉及一种实现基于SQL的流式数据处理引擎的方法、装置、设备及可读存储介质。
背景技术
数据对象是个完整的实体,每个对象都有唯一的标识,每个对象都有时间序列上的完整状态。并且由于每个行业都有各自的特殊性,因此每个对象都有行业定义的操作方式,也即每个对象都有在行业当中的维度。
以统计报表为例,统计报表一般的处理方式是在数据仓库里根据业务需求编写复杂的统计SQL(Structured Query Language,结构化查询语言),去完成各种不同的报表查询。这样的报表没有统一的粒度,没有统一的规则,完全依赖于需求及实现的SQL。如果是实时流式数据,必须先将数据存储到统一的数据仓库里,才可以根据事先编写好的SQL去计算。该过程需要涉及大量的计算能力,不可能做到实时数据处理。
因此,如何把产生的行业数据抽象成每个对象维度的统计指标,并根据统计指标把数据计算为指标数据,从而可以做到对于实时大数据的及时处理,成为亟待解决的一个问题。
在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明提供一种实现基于SQL的流式数据处理引擎的方法、装置、设备及可读存储介质,能够以标准的SQL实现基于流式数据的指标粒度化处理。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明的一方面,提供一种实现基于SQL的流式数据处理引擎的方法,包括:获得SQL语句;对SQL语句进行词法分析,获得SQL语句的词法分析结果;对词法分析结果进行语法分析,获得SQL语句的语法分析树;根据语法分析树,生成待处理流式数据的统计指标,其中统计指标包括多个维度,多个维度包括时间序列维度;以及根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。
根据本发明的一实施方式,上述方法还包括:将处理后的结果和统计指标合并输出并存储至语义分析树中所制定的目标结果中。
根据本发明的一实施方式,获得SQL语句包括:接收提交的SQL语句;将提交的SQL语句存储至共享存储系统中;以及基于SQL引擎定期同步共享存储系统,加载提交的SQL语句,以获得SQL语句。
根据本发明的一实施方式,根据语法分析树,生成待处理流式数据的统计指标包括:获取SQL语法元数据;以及获取Group By函数的组维度,以生成统计指标中除时间序列维度中的其他维度。
根据本发明的一实施方式,语法分析树中定义的函数包括:SQL标准函数及基于SQL语法的自定义函数。
根据本发明的一实施方式,上述方法基于JVM、SPARK或STORM平台执行根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。
根据本发明的一实施方式,在根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理之前,上述方法还包括:根据语法分析树中的源流式类型及流式配置信息,启动消费流式数据的客户端API。
根据本发明的再一方面,提供一种实现基于SQL的流式数据处理引擎的装置,包括:语句获取模块,用于获得SQL语句;词法分析模块,用于对SQL语句进行词法分析,获得SQL语句的词法分析结果;语法分析模块,用于对词法分析结果进行语法分析,获得SQL语句的语法分析树;指标生成模块,用于根据语法分析树,生成待处理流式数据的统计指标,其中统计指标包括多个维度,多个维度包括时间序列维度;以及数据处理模块,用于根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。。
根据本发明的再一方面,提供一种计算机设备,包括:存储器、处理器及存储在存储器中并可在处理器中运行的可执行指令,其特征在于,处理器执行可执行指令时实现如上述任一种方法。
根据本发明的再一方面,提供一种计算机可读存储介质,其上存储有计算机可执行指令,其特征在于,可执行指令被处理器执行时实现如上述任一种方法。
根据本发明实施方式的实现基于SQL的流式数据处理引擎的方法,通过对SQL进行解析生成语法分析树,根据语法分析树生成针对待处理数据对象的统计指标,并在其中增加时间序列维度,从而能够以标准的SQL实现基于流式数据的指标粒度化处理。
此外,根据一些实施例,本发明实施方式的实现基于SQL的流式数据处理引擎的方法可以应用于多种平台上,如JVM、SPARK、STORM等,从而提供原生的分布式能力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
通过参照附图详细描述其示例实施例,本发明的上述和其它目标、特征及优点将变得更加显而易见。
图1是根据一示例性实施方式示出的一种实现基于SQL的流式数据处理引擎的方法的流程图。
图2是根据一示例性实施方式示出的另一种实现基于SQL的流式数据处理引擎的方法的流程图。
图3是根据一示例性实施方式示出的再一种实现基于SQL的流式数据处理引擎的方法的流程图。
图4是根据一示例性实施方式示出的再一种实现基于SQL的流式数据处理引擎的方法的流程图。
图5是根据一示例性实施方式示出的再一种实现基于SQL的流式数据处理引擎的方法的流程图。
图6是根据一示例性实施方式示出的一种实现基于SQL的流式数据处理引擎的装置的框图。
图7是根据一示例性实施方式示出的一种计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现或者操作以避免喧宾夺主而使得本发明的各方面变得模糊。
图1是根据一示例性实施方式示出的一种实现基于SQL的流式数据处理引擎的方法的流程图。如图1所示,方法10包括:
在步骤S102中,获得SQL语句。
在步骤S104中,对SQL语句进行词法分析,获得SQL语句的词法分析结果。
词法分析的过程是将字符聚集为单词或者词法符号(token)的过程。这和我们的大脑阅读英文文本的过程相类似,我们并不是一个字母(相当于字符)一个字母的去阅读一个句子,而是将句子看做由多个单词组成,先通过将字母聚集为单词,然后获取每个单词的意义,从而理解句子的意义。
在步骤S106中,对词法分析结果进行语法分析,获得SQL语句的语法分析树(parsetree)。
在这个过程中,输入的词法分析结果(即词法符号)被消费以识别语句结构,即为赋值语句。经过语法分析,获得SQL语句的语法分析树。其中,语法分析树的每个中间结点都标记着非终结符,每个叶子结点都标记着终结符。语法分析树的每一棵子树都描述了句子中一个抽象的实例。
在一些实施例中,上述词法分析及语法分析可基于ANTLR4工具来配置语法以解析SQL语法。ANTLR4(Another Tool for Language Recognition)语法解析器是一个通过语法描述来自动构造自定义语言的识别器(recognizer)、编译器(parser)和解释器(translator)的框架。它被广泛的用于构建语言、工具和框架。ANTLR现在已经支持了多种当前流行的开发语言,包括Java、C#、C、C++、Objective-C、Python和Ruby.1等。
在步骤S108中,根据语法分析树,生成待处理流式数据的统计指标。
其中该统计指标包括多个维度,多个维度包括时间序列维度。为了处理实时的流式数据,需要在统计指标中增加时间序列维度信息,其粒度可以根据实际需要而定义,如1分钟粒度、5分钟粒度或1天粒度等,本发明不以此为限。
在步骤S110中,根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。
以统计指标中的时间序列维度和其他维度,按照语法分析树中所定义的函数,计算流式数据,以生成指标数据。
在一些实施例中,所述语法分析树中定义的函数包括:SQL标准函数及基于SQL语法的自定义函数。SQL标准函数例如可以包括:sum、count、avg、distinct、min、max等。基于SQL语法自定义的函数例如可以通过插件形式来加载,并在语法分析树中追加这些基于SQL语法自定义的函数,从而可以根据统计指标执行这些自定义的函数。
进一步地,在一些实施例中,可以在JVM、SPARK或STORM平台上执行步骤S110。
JVM(Java Virtual Machine,Java虚拟机是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。本发明实施方式中的步骤S110可以通过JVM来实现,也即通过JVM来根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。
Apache SPARK是专为大规模数据处理而设计的快速通用的计算引擎。SPARK是UCBerkeley AMP lab(加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架。SPARK拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此SPARK能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。本发明实施方式中的步骤S110可以通过SPARK平台实现,具体地,可以通过创建Spark Job(任务)的方式根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。
STORM是一个免费的开源、分布式、高容错的实时计算系统。STORM令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。STORM经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。STORM的部署管理非常简单,而且,在同类的流式计算工具,STORM的性能也是非常出众的。本发明实施方式中的步骤S110可以通过STORM平台实现,具体地,可以通过创建Storm Job(任务)的方式根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。
此外,在SQL统计过程中,还需要用到一些系统自带的配置变量。为了便于整体的统一性,无需再维护一个需要配置的文件,而可以在引擎设计的时候把系统配置设计到SQL的where条件里,以使其成为SQL语法的关键字,这些内置字段关键字包括:
source.type,其为流式队列的类型,如kafka(卡夫卡)、RocketMQ、ActiveMQ等;
source.url,其为流式队列地址,如IP PORT(端口);
source.topic,其为流式队列主题;
target.type,其为目标队列类型,如kafka、RocketMQ、ActiveMQ等;
target.url,其为目标流式队列地址,如IP PORT;
target.topic,其为目标流式队列主题。
其中,RcoketMQ是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。ActiveMQ是Apache出品,最流行的、能力强劲的开源消息总线,其可以完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现。
根据本发明实施方式的实现基于SQL的流式数据处理引擎的方法,通过对SQL进行解析生成语法分析树,根据语法分析树生成针对待处理数据对象的统计指标,并在其中增加时间序列维度,从而能够以标准的SQL实现基于流式数据的指标粒度化处理。
此外,根据一些实施例,本发明实施方式的实现基于SQL的流式数据处理引擎的方法可以应用于多种平台上,如JVM、SPARK、STORM等,从而提供原生的分布式能力。
应清楚地理解,本发明描述了如何形成和使用特定示例,但本发明的原理不限于这些示例的任何细节。相反,基于本发明公开的内容的教导,这些原理能够应用于许多其它实施方式。
图2是根据一示例性实施方式示出的另一种实现基于SQL的流式数据处理引擎的方法的流程图。相比于图1所示的方法10中的步骤S102,图2所示的方法20中的步骤S202进一步包括:
在步骤S2022中,接收提交的SQL语句。
例如,通过客户端所提供的用户界面,接收用户提交的SQL语句。
在步骤S2024中,将提交的SQL语句存储至共享存储系统中。
将接收到的SQL语句存储至共享存储系统中,该共享存储系统例如可以为Redis系统。Redis是一个开源的、使用ANSI C语言编写的Key-Value数据库。Redis支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set,有序集合)和hash(哈希类型)。这些数据类型都支持推送(push)/取出(pop)、增加(add)/移除(remove)及取交集并集和差集等更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。为了保证效率,Redis系统中的数据都是缓存在内存中,Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
在步骤S2026中,基于SQL引擎定期同步共享存储系统,加载提交的SQL语句,以获得该SQL语句。
方法20中所包含的其他步骤与方法10中的步骤相同,在此不再赘述。
图3是根据一示例性实施方式示出的再一种实现基于SQL的流式数据处理引擎的方法的流程图。相比于图1所示的方法10的步骤S104,图3所示的方法30中的步骤S304进一步包括:
在步骤S3042中,获取SQL语法元数据。
元数据(MetaData)是指定义数据结构的数据。那么SQL语法元数据就是指定义数据库各类对象结构的数据。常见的数据库对象,包括:数据库表、触发器、索引、视图、存储过程及函数等。例如用SQL定义一张表,表名、字段类型、外键约束等信息,都存储在数据库的系统表中。这里数据库系统表就是用来存储数据库元数据的。
在步骤S3044中,获取Group By函数的组维度,生成所述统计指标中除时间序列维度中的其他维度。
在自然语言中,无论是汉语还是英语,我们说的每一个简单句子都有一个主语,剩下的有谓语宾语等。从词性上看,主语为名词,剩下的为形容词、动词、作为宾语的名词等。这样构成了一种文法的表达方式。同时说明了一个主题的内容。
在计算机语言当中,是否可以也用这样的方式来描述数据呢?以关系型数据库中的二维表举例,如果想描述一个主题,比如用户,在设计二维表的时候会有用户名称、用户编号、用户类型等等,这样在多种标签维度的组合中共同构成了一个用户。其实决定用户唯一性的只有ID(即用户编号),不可重复。剩下的用户属性我们可以理解为维度。由此,我们在抽象一个指标的时候可以这样定义:一个指标只有一个主题,即一个名词;其余的属性都为维度。由于本发明是基于实时流式数据,默认会有一个时间维度。实时相对于离线的好处是可以看到时态。
对应到本发明的SQL中,函数统计的字段为主语,Group By中的字段为分组维度数据。函数为要统计方式,如下表述:
select age,type,class,sum(grade),count(type),count(class)from studentgroup by age,type,class
该条SQL有3个函数,即有3个主题,因此SQL引擎会生成3个指标。而每个指标有3个维度,即age、type、class。
此外,默认会有时间序列维度,如1分钟、5分钟、1天等,对应函数的值为在维度下的函数类型计算值。
方法30中所包含的其他步骤与方法10中的步骤相同,在此不再赘述。
图4是根据一示例性实施方式示出的再一种实现基于SQL的流式数据处理引擎的方法的流程图。相比于图1所示的方法10,图4所示的方法40在步骤S110之前还进一步包括:
在步骤S402中,根据所述语法分析树中的源流式类型及流式配置信息,启动消费所述流式数据的客户端API(Application Programming Interface,应用程序编程接口)。
语法分析树中包含有源流式类型及流式配置信息,因此在对流式数据进行处理之前,还可以包括根据这些信息,启动消费这些流式数据的客户端API,从而开始消费数据。
方法40中所包含的其他步骤与方法10中的步骤相同,在此不再赘述。
图5是根据一示例性实施方式示出的再一种实现基于SQL的流式数据处理引擎的方法的流程图。相比于图1所示的方法10,图5所示的方法50在步骤S110之后还进一步包括:
在步骤S502中,将处理后的结果和所述统计指标合并输出并存储至所述语义分析树中所制定的目标结果中。
对于合并计算后的结果,例如可以存储在Kafka(卡夫卡)平台中。Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这些动作包括:网页浏览、搜索和其他用户的行动等。这些数据通常是根据吞吐量的要求而通过处理日志和日志聚合来解决。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
进一步地,对于消费计算(即处理)后的数据则可以进一步地保存至Redis数据库中。
方法50中所包含的其他步骤与方法10中的步骤相同,在此不再赘述。
本领域技术人员可以理解实现上述实施方式的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本发明示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
图6是根据一示例性实施方式示出的一种实现基于SQL的流式数据处理引擎的装置的框图。如图6所示,装置60包括:语句获取模块602、词法分析模块604、语法分析模块606、指标生成模块608及数据处理模块610。
其中,语句获取模块602用于获得SQL语句。
词法分析模块604用于对SQL语句进行词法分析,获得SQL语句的词法分析结果。
语法分析模块606用于对词法分析结果进行语法分析,获得SQL语句的语法分析树。
指标生成模块608用于根据语法分析树,生成待处理流式数据的统计指标,其中统计指标包括多个维度,多个维度包括时间序列维度。
数据处理模块610用于根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。
在一些实施例中,装置60还可以进一步包括:结果输出模块,用于将处理后的结果和统计指标合并输出并存储至语义分析树中所制定的目标结果中。
在一些实施例中,语句获取模块602还可以包括:语句接收子模块、语句存储子模块及语句加载子模块。其中,语句接收子模块用于接收提交的SQL语句;语句存储子模块用于将提交的SQL语句存储至共享存储系统中;语句加载子模块用于基于SQL引擎定期同步共享存储系统,加载提交的SQL语句,以获得SQL语句。
在一些实施例中,指标生成模块608还可以包括:元数据获取子模块及指标生成子模块。其中,元数据获取子模块用于获取SQL语法元数据;指标生成子模块用于获取GroupBy函数的组维度,生成统计指标中除时间序列维度中的其他维度。
在一些实施例中,语法分析树中定义的函数包括:SQL标准函数及基于SQL语法的自定义函数。
在一些实施例中,数据处理模块610还可以基于JVM、SPARK或STORM平台执行根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理。
在一些实施例中,装置60还可以进一步包括:API启动模块,用于在数据处理模块610根据统计指标及语法分析树中定义的函数,对流式数据按时间粒度进行处理之前,根据语法分析树中的源流式类型及流式配置信息,启动消费流式数据的客户端API。
根据本发明实施方式的实现基于SQL的流式数据处理引擎的方法,通过对SQL进行解析生成语法分析树,根据语法分析树生成针对待处理数据对象的统计指标,并在其中增加时间序列维度,从而能够以标准的SQL实现基于流式数据的指标粒度化处理。
此外,根据一些实施例,本发明实施方式的实现基于SQL的流式数据处理引擎的方法可以应用于多种平台上,如JVM、SPARK、STORM等,从而提供原生的分布式能力。
需要注意的是,上述附图中所示的框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图7是根据一示例性实施方式示出的一种计算机系统的结构示意图。需要说明的是,图7示出的计算机系统仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括发送单元、获取单元、确定单元和第一处理单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,发送单元还可以被描述为“向所连接的服务端发送图片获取请求的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序。当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
获得SQL语句;
对所述SQL语句进行词法分析,获得所述SQL语句的词法分析结果;
对所述词法分析结果进行语法分析,获得所述SQL语句的语法分析树;
根据所述语法分析树,生成待处理流式数据的统计指标,其中所述统计指标包括多个维度,所述多个维度包括时间序列维度;以及
根据所述统计指标及所述语法分析树中定义的函数,对所述流式数据按时间粒度进行处理。
以上具体地示出和描述了本发明的示例性实施方式。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

Claims (8)

1.一种实现基于SQL的流式数据处理引擎的方法,其特征在于,包括:
获得SQL语句,包括:
接收提交的SQL语句;
将所述提交的SQL语句存储至共享存储系统中;及
基于SQL引擎定期同步所述共享存储系统,加载所述提交的SQL语句,以获得所述SQL语句;
对所述SQL语句进行词法分析,获得所述SQL语句的词法分析结果;对所述词法分析结果进行语法分析,获得所述SQL语句的语法分析树;
根据所述语法分析树,生成待处理流式数据的统计指标,其中所述统计指标包括多个维度,所述多个维度包括时间序列维度;
根据所述统计指标及所述语法分析树中定义的函数,对所述流式数据按时间粒度进行处理;以及
将处理后的结果和所述统计指标合并输出并存储至所述语法分析树中所制定的目标结果中。
2.根据权利要求1所述的方法,其特征在于,根据所述语法分析树,生成待处理流式数据的统计指标包括:
获取SQL语法元数据;以及
获取Group By函数的组维度,以生成所述统计指标中除时间序列维度中的其他维度。
3.根据权利要求1所述的方法,其特征在于,所述语法分析树中定义的函数包括:SQL标准函数及基于SQL语法的自定义函数。
4.根据权利要求1所述的方法,其特征在于,基于JVM、SPARK或STORM平台执行所述根据所述统计指标及所述语法分析树中定义的函数,对所述流式数据按时间粒度进行处理。
5.根据权利要求1所述的方法,其特征在于,在根据所述统计指标及所述语法分析树中定义的函数,对所述流式数据按时间粒度进行处理之前,还包括:
根据所述语法分析树中的源流式类型及流式配置信息,启动消费所述流式数据的客户端API。
6.一种实现基于SQL的流式数据处理引擎的装置,其特征在于,包括:
语句获取模块,用于获得SQL语句,包括:
语句接收子模块,用于接收提交的SQL语句;
语句存储子模块,用于将所述提交的SQL语句存储至共享存储系统中;及
语句加载子模块,用于基于SQL引擎定期同步所述共享存储系统,加载所述提交的SQL语句,以获得所述SQL语句;
词法分析模块,用于对所述SQL语句进行词法分析,获得所述SQL语句的词法分析结果;
语法分析模块,用于对所述词法分析结果进行语法分析,获得所述SQL语句的语法分析树;
指标生成模块,用于根据所述语法分析树,生成待处理流式数据的统计指标,其中所述统计指标包括多个维度,所述多个维度包括时间序列维度;
数据处理模块,用于根据所述统计指标及所述语法分析树中定义的函数,对所述流式数据按时间粒度进行处理;以及
结果输出模块,用于将处理后的结果和所述统计指标合并输出并存储至所述语法分析树中所制定的目标结果中。
7.一种计算机设备,包括:存储器、处理器及存储在所述存储器中并可在所述处理器中运行的可执行指令,其特征在于,所述处理器执行所述可执行指令时实现如权利要求1-5任一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机可执行指令,其特征在于,所述可执行指令被处理器执行时实现如权利要求1-5任一项所述的方法。
CN201811423735.XA 2018-11-27 2018-11-27 实现基于sql的流式数据处理引擎的方法、装置、设备 Active CN109522341B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811423735.XA CN109522341B (zh) 2018-11-27 2018-11-27 实现基于sql的流式数据处理引擎的方法、装置、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811423735.XA CN109522341B (zh) 2018-11-27 2018-11-27 实现基于sql的流式数据处理引擎的方法、装置、设备

Publications (2)

Publication Number Publication Date
CN109522341A CN109522341A (zh) 2019-03-26
CN109522341B true CN109522341B (zh) 2020-12-22

Family

ID=65794598

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811423735.XA Active CN109522341B (zh) 2018-11-27 2018-11-27 实现基于sql的流式数据处理引擎的方法、装置、设备

Country Status (1)

Country Link
CN (1) CN109522341B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110609852B (zh) * 2019-07-16 2022-09-02 招联消费金融有限公司 流式数据处理方法、装置、计算机设备和存储介质
CN112487068A (zh) * 2019-09-11 2021-03-12 中兴通讯股份有限公司 数据统计分析系统及方法
CN110851514B (zh) * 2019-10-17 2022-10-21 杭州安恒信息技术股份有限公司 基于flink的etl处理方法
CN111026749B (zh) * 2019-11-11 2023-06-30 支付宝(杭州)信息技术有限公司 业务告警方法及装置
CN112422412B (zh) * 2020-11-09 2023-03-24 北京百度网讯科技有限公司 信息处理方法、装置、设备和介质
CN112765166A (zh) * 2021-01-06 2021-05-07 深圳市欢太科技有限公司 数据处理方法、装置及计算机可读存储介质
CN112800091B (zh) * 2021-01-26 2024-06-11 北京明略软件系统有限公司 一种流批一体式计算控制系统及方法
CN117910850A (zh) * 2023-12-18 2024-04-19 北京宇信科技集团股份有限公司 一种指标数据分析引擎、指标数据计算装置和计算方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101008954A (zh) * 2007-01-30 2007-08-01 金蝶软件(中国)有限公司 联机分析处理系统中多维表达式数据缓存的方法和装置
US7873645B2 (en) * 2003-09-05 2011-01-18 Oracle International Corporation Method and mechanism for handling arbitrarily-sized XML in SQL operator tree
CN102609451A (zh) * 2012-01-11 2012-07-25 华中科技大学 面向流式数据处理的sql查询计划生成方法
CN107391719A (zh) * 2017-07-31 2017-11-24 南京邮电大学 一种云环境中分布式流数据处理方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873645B2 (en) * 2003-09-05 2011-01-18 Oracle International Corporation Method and mechanism for handling arbitrarily-sized XML in SQL operator tree
CN101008954A (zh) * 2007-01-30 2007-08-01 金蝶软件(中国)有限公司 联机分析处理系统中多维表达式数据缓存的方法和装置
CN102609451A (zh) * 2012-01-11 2012-07-25 华中科技大学 面向流式数据处理的sql查询计划生成方法
CN107391719A (zh) * 2017-07-31 2017-11-24 南京邮电大学 一种云环境中分布式流数据处理方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向流式处理的SQL查询计划生成技术研究;刘述曦;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130715;第22-28页 *

Also Published As

Publication number Publication date
CN109522341A (zh) 2019-03-26

Similar Documents

Publication Publication Date Title
CN109522341B (zh) 实现基于sql的流式数据处理引擎的方法、装置、设备
CN109582691B (zh) 用于控制数据查询的方法和装置
US9424298B2 (en) Preserving conceptual distance within unstructured documents
US11468342B2 (en) Systems and methods for generating and using knowledge graphs
WO2022052639A1 (zh) 数据查询方法及装置
US8312437B2 (en) Structured search in source code
CN112860727B (zh) 基于大数据查询引擎的数据查询方法、装置、设备及介质
CN111309760A (zh) 数据检索方法、系统、设备及存储介质
US20200112475A1 (en) Real-time adaptive infrastructure scenario identification using syntactic grouping at varied similarity
CN111125064A (zh) 一种生成数据库模式定义语句的方法和装置
CN114091426A (zh) 一种处理数据仓库中字段数据的方法和装置
WO2023000785A1 (zh) 用于处理数据的方法、装置、系统、服务器和介质
CN113326261B (zh) 数据血缘关系提取方法、装置及电子设备
CN116483850A (zh) 数据处理方法、装置、设备以及介质
CN113900944A (zh) 一种应用于Flink SQL的逻辑验证方法和装置
US20200110815A1 (en) Multi contextual clustering
CN112000690B (zh) 解析结构化操作语句的方法和装置
CN113419740A (zh) 程序数据流的分析方法、装置、电子设备及可读存储介质
CN113220710A (zh) 数据查询方法、装置、电子设备以及存储介质
WO2023164294A1 (en) Query splitter for an inverted index datastore
CN113468529B (zh) 一种数据搜索方法和装置
CN113934430A (zh) 数据检索分析方法、装置、电子设备及存储介质
CN113987118A (zh) 语料的获取方法、装置、设备及存储介质
CN109828775B (zh) 一种多语言翻译文本内容的web管理系统及方法
CN111368036A (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
CB02 Change of applicant information

Address after: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone, 100176

Applicant after: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

Address before: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Daxing Economic and Technological Development Zone, Beijing, 100176

Applicant before: BEIJING JINGDONG FINANCIAL TECHNOLOGY HOLDING Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee before: Jingdong Digital Technology Holding Co.,Ltd.

CP01 Change in the name or title of a patent holder
CP03 Change of name, title or address

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee after: Jingdong Digital Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone, 100176

Patentee before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

CP03 Change of name, title or address