CN111666296A - 基于Flink的SQL数据实时处理方法、装置、计算机设备和介质 - Google Patents

基于Flink的SQL数据实时处理方法、装置、计算机设备和介质 Download PDF

Info

Publication number
CN111666296A
CN111666296A CN202010349334.5A CN202010349334A CN111666296A CN 111666296 A CN111666296 A CN 111666296A CN 202010349334 A CN202010349334 A CN 202010349334A CN 111666296 A CN111666296 A CN 111666296A
Authority
CN
China
Prior art keywords
sql
flink
sql data
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.)
Granted
Application number
CN202010349334.5A
Other languages
English (en)
Other versions
CN111666296B (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.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China 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 Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN202010349334.5A priority Critical patent/CN111666296B/zh
Publication of CN111666296A publication Critical patent/CN111666296A/zh
Application granted granted Critical
Publication of CN111666296B publication Critical patent/CN111666296B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请属于数据处理领域,公开了一种基于Flink的SQL数据实时处理方法、装置、计算机设备及可读存储介质。所述方法包括通过客户端将用户输入的数据存在tidb中,然后在flink集群对sql数据表中的SQL语句进行分类得到分类后的SQL语句,并对分类后的SQL语句进行对应的封装生成作业算子;再按照SQL语句本有的逻辑将作业算子进行串接后生成算子流提交到taskmanager进行执行,实现对SQL数据的实时处理。采用本方法对SQL语句进行封装使得用户可以以较少的SQL代码代替大量的Java代码的编写,解决了现有技术中通过flink对SQL数据实施处理的实现复杂的技术问题。本申请还涉及区块链技术,所述用户输入的数据可存储于区块链节点中。

Description

基于Flink的SQL数据实时处理方法、装置、计算机设备和介质
技术领域
本申请涉及数据处理领域,特别是涉及一种基于Flink的SQL数据实时处理方法、装置、计算机设备和存储介质。
背景技术
Flink SQL是Flink实时计算为简化计算模型降低用户使用实时计算门槛而设计的一套符合标准SQL语义的开发语言。开源的Flink编程开发的成本较大,学习成本高,调试复杂,上线周期长。对每一种数据源连接都要采用不同的开发方式,消耗大量的学习成本和开发时间。将Flink应用在对SQL数据的实时处理上时,若要实现source、sink、维表等功能都需要用户继承Flink的各种function(函数)进行开发,而维表也需要用户通过实现map内连接数据库或者异步查询的方式才能实现,需要用户编写大量的代码,实现较为复杂。因此亟需一种简单易行的基于Flink的SQL数据实时处理方式,用户解决现有技术中实时处理SQL数据复杂的技术问题。
发明内容
基于此,有必要针对上述技术问题,本申请提供一种基于Flink的SQL数据实时处理方法、装置、计算机设备及存储介质,以解决现有技术中实时处理SQL数据复杂的技术问题。
一种基于Flink的SQL数据实时处理方法,所述方法包括:
将通过客户端提交的SQL数据表存储到关系型数据库TiDB中,生成SQL数据表,并为所述SQL数据表生成对应的任务id;
通过RESTful API将与所述任务id对应的处理程序提交到Flink集群,其中,所述处理程序为随提交的SQL数据生成的用于指示Flink集群对SQL数据表进行相应处理的程序;
在所述Flink集群上根据所述处理程序从所述TiDB获取与所述任务id对应的SQL数据表,并对所述SQL数据表中的SQL语句进行分类,得到分类后的SQL语句;
将分类后的SQL语句封装为对应类型的作业算子,并串接所述作业算子,生成算子流;
调用Flink execute接口将所述算子流提交给所述Flink集群的taskmanager执行所述算子流,实现对所述SQL数据的实时处理。
一种基于Flink的SQL数据实时处理装置,所述装置包括:
数据存储模块,用于将通过客户端提交的SQL数据表存储到关系型数据库TiDB中,生成SQL数据表,并为所述SQL数据表生成对应的任务id;
程序提交模块,用于通过RESTful API将与所述任务id对应的处理程序提交到Flink集群,其中,所述处理程序为随提交的SQL数据生成的用于指示Flink集群对SQL数据表进行相应处理的程序;
数据分类模块,用于在所述Flink集群上根据所述处理程序从所述TiDB获取与所述任务id对应的SQL数据表,并对所述SQL数据表中的SQL语句进行分类,得到分类后的SQL语句;
算子串接模块,用于将分类后的SQL语句封装为对应类型的作业算子,并串接所述作业算子,生成算子流;
数据处理模块,用于调用Flink execute接口将所述算子流提交给所述Flink集群的taskmanager执行所述算子流,实现对所述SQL数据的实时处理。
一种计算机设备,包括存储器和处理器,以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于Flink的SQL数据实时处理方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于Flink的SQL数据实时处理方法的步骤。
上述基于Flink的SQL数据实时处理方法、装置、计算机设备和存储介质,直接通过客户端将用户输入的数据存在tidb中,然后在flink集群对sql数据表进行分类得到分类后的SQL语句,并对分类后的SQL语句进行对应的封装生成作业算子;再按照SQL语句本有的逻辑将作业算子进行串接后生成算子流提交到taskmanager进行执行,实现对SQL数据的实时处理。通过对SQL语句进行封装使得用户可以以较少的SQL代码代替大量的Java代码的编写,解决了现有技术中通过flink对SQL数据实施处理的实现复杂的技术问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为基于Flink的SQL数据实时处理方法的应用环境示意图;
图2为基于Flink的SQL数据实时处理方法的流程示意图;
图3为图2中步骤208的流程示意图;
图4为另一实施例中图2中步骤208的流程示意图;
图5为基于Flink的SQL数据实时处理装置的示意图;
图6为一个实施例中计算机设备的示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本申请的目的、技术方案及优点更加清楚明白,下面结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的基于Flink的SQL数据实时处理方法,可以应用于如图1所示的应用环境中。其中,该应用环境可以包括终端102、网络以及服务端104,网络用于在终端102和服务端104之间提供通信链路介质,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端102通过网络与服务端104交互,以接收或发送消息等。终端102上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端102可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group AudioLayer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts GroupAudio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务端104可以是提供各种服务的服务器,例如对终端102上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的基于Flink的SQL数据实时处理方法一般由服务端/终端执行,相应地,基于Flink的SQL数据实时处理装置一般设置于服务端/终端设备中。
应该理解,图1中的终端、网络和服务端的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
其中,终端102通过网络与服务端104进行通信。服务端104直接通过终端102将用户输入的SQL数据存在tidb中,然后在flink集群对sql数据表进行解析分类得到分类后的SQL语句,并对分类后的SQL语句进行对应的封装生成作业算子;再按照SQL语句本有的逻辑将作业算子进行串接后生成算子流提交到taskmanager进行执行,实现对SQL数据的实时处理。其中,终端102和服务端104之间通过网络进行连接,该网络可以是有线网络或者无线网络,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务端104可以用独立的服务器或者是多个组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种基于Flink的SQL数据实时处理方法,以该方法应用于图1中的服务端为例进行说明,包括以下步骤:
步骤202,将通过客户端提交的SQL数据表存储到关系型数据库TiDB中,生成SQL数据表,并为SQL数据表生成对应的任务id。
SQL数据表中包括用户输入的SQL语句。用户可以通过可视化的客户端将需要处理的数据以SQL数据的形式输入,客户端会定义SQL数据,并提交SQL数据到服务端,服务端接收到SQL数据后,会将其保存到关系型数据库TiDB中,其中,TiDB是PingCAP公司受GoogleSpanner/F1论文启发而设计的开源分布式HTAP(Hybrid Transactional and AnalyticalProcessing)数据库,结合了传统的RDBMS和NoSQL的最佳特性。TiDB兼容MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB的目标是为OLTP(Online TransactionalProcessing)和OLAP(Online Analytical Processing)场景提供一站式的解决方案。具有在大多数情况下,无需修改代码即可将SQL数据从MySQL轻松迁移至TiDB的能力,分库分表后的MySQL集群亦可通过TiDB工具进行实时迁移的优点。任务ID一般按照生成时间戳设定,如当前时间戳1577079198312。
步骤204,通过RESTful API将与任务id对应的处理程序提交到Flink集群,其中,处理程序为随提交的SQL数据生成的用于指示Flink集群对SQL数据表进行相应处理的程序。
RESTful API(Representational State Transfer,表现层状态转化)是一套用来规范多种形式的前端和同一后端的交互方式的协议。
处理程序是在客户端上随着用户提交SQL数据而生成的用于指示Flink集群对与任务id对应的SQL数据表进行相应处理的代码段。当用户在提交作业后,在TiDB内会生成对应的任务ID与用户写的SQL数据。而FLINK集群在真正提交用户的作业时,会将该任务ID作为其中之一的入参,传入处理程序中,处理程序读到ID后查询对应用户的SQL数据,然后将SQL数据进行翻译和分类,封装为基于datastream算子的底层API(即代码段,这里是采用类加载器,通过不同的SQL连接定义,加载对应的执行类,即执行代码),生成算子流操作后提交给execute执行器后,再被提交给flink集群的taskmanager执行真正的逻辑。
通过RESTful API将与任务id对应的处理程序提交到Flink的流程:
建立http连接,将jar包在本地路径作为入参提交给flink提供的url下的jar/upload,完成上传;
主函数作为入参,上传后的jar路径作为入参,任务ID作为入参,提交给url下的/run,即可提交到flink集群执行。
步骤206,在Flink集群上根据处理程序从TiDB获取与任务id对应的SQL数据表,并对SQL数据表中的SQL语句进行分类,得到分类后的SQL语句。
任务id与SQL数据表之间形成映射,只需要得到任务id就可以从TiDB上将对应的SQL数据表提取出来,SQL数据表包括SQL语句。
读取到对应的任务id的sql数据表后,需要对其中的SQL数据进行分类,其具体的分类流程是:
获取预设关键字,并根据预设关键字确定SQL语句的类型,得到建表语句和执行语句。
进一步地,用户输入的SQL语句的类型不仅可以包括建表语句和执行语句,还可以包括udf语句,但是至少包括建表语句和执行语句。比如:
如将以create table开头的SQL语句归为建表语句,以insert into开头的归为执行语句,以create function开头的归为创建udf(自创建函数)语句,解析时将用户的sql语句,作为字符串读入内存中,读入后才能进入解析等操作。
进一步地,可以通过正则表达式进行SQL语句的分类。
步骤208,将分类后的SQL语句封装为对应类型的作业算子,并串接作业算子,生成算子流。
采用flink table api对建表语句、执行语句或者UDF语句等进行底层封装,即赋予它们可执行的意义,再加上SQL语句本身的insert执行语句,即可直接使用。解析后有利于语言的标准化,对于不能进行flink编程的开发人员,能直接利用SQL开发分析作业。比如,遇到create table开头的建表语句,则通过正则表达式获取建表语句所声名的变量、变量的连接串信息等属性信息;若建表语句后的执行语句为需要更新建表语句声名的变量,则只需要对变量信息进行更新即可。其中,update是一个flink table的一个操作命令,将最终的执行sql交给update语句,进入update操作,即一些真正的insert操作,这里简单称之为更新操作;遇到create function,则将用户自定义的方法注册为udf,并读取到对应的方法地址(用户定义了udf上传后,读取方法地址是其主运行类的地址,如com.paic.common.MyUdf类),以便在执行时进行加载,因为udf实际是执行类,虽然是用户上传的代码,但需要在执行时,加载到作业环境中,这里是通过告知类加载器其类的地址,从而加载对应类。将分类后的SQL语句封装为对应的类型的作业算子。
串接作业算子时,需要获取每一个变量之间的关系信息,根据变量之间的关系信息串接作业算子形成算子流。比如,建表语句定义了变量、哪个变量是源数据、哪个变量为输出数据、变量的具体属性:表(table)、列(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。显示了变量及其相互之间的关系。
步骤210,调用Flink execute接口将算子流提交给Flink集群的taskmanager执行算子流,实现对SQL数据的实时处理。
TaskManager是基于Quartz.NET的一款开源任务管理系统,使用Window服务来承载。目前系统集成了四个常用任务,代理IP爬虫,快递进度,消息通知,动态修改Job任务。当一个任务被JobManager部署到TaskManager之后,它将会被执行。
Execute是flink自带的提交作业的API。通过execute执行,是真正作业开始提交执行的操作。FLINK集群分为jobmanager和taskmanager两种角色,其中jobmanager相当于整个集群的管理节点,负责集群的任务管理和资源管理,taskmanager相当于集群的工作节点,负责执行具体的任务和向jobmanager申请具体任务的资源。开始执行时,任务被提交给jobmanager,jobmanager会根据taskmanager的资源情况,选择有资源的taskmanager,执行具体的任务。
上述种基于Flink的SQL数据实时处理方法中,通过客户端将用户输入的数据存在TiDB中,然后在flink集群对SQL数据表中的SQL语句进行分类,并将分类后的SQL语句封装为作业算子;再按照SQL语句的数据信息将作业算子进行串接后生成算子流提交到taskmanager进行执行,实现对SQL数据的实时处理。通过对SQL语句进行封装使得用户可以以较少的SQL代码代替大量的Java代码的编写,解决了现有技术中通过flink对SQL数据实施处理的实现复杂的技术问题。
在一个实施例中,如图3所示,步骤208,包括:
步骤302,获取SQL语句中的变量;
步骤304,根据执行语句确定变量之间的执行关系;
步骤306,根据执行关系映射后将变量封装为作业算子。
作业算子本质是数据处理、传输,每个算子之间,都要进行数据传输,传输就需要有数据的序列化和反序列化。序列化就是数据或者代码对象在多台机器之间传播,为了保证传输速率、数据加密等特性,将数据或者代码对象进行序列化。可以根据用户定义的schema,将schema解析、包装生成序列化的比特流。
而且,作业算子也是有类别的,如输入流算子、输出流算子,都是通过DDL建表语句中声名的变量以及变量的属性、变量之间的关系来的。而作业算子的本质就是数据处理、传输,每个算子之间带遵从进行数据传输。
例如,SQL语句:
ddl:a,b{name,age}
insert table_a select from table_b
其中,建表语句ddl声名了变量a和b的类型,为表(table)格式、其中name和age形成映射;而执行语句insert设定了变量a和b之间的执行关系,执行表a从表b中选取数据,那么表b为源数据,而表a为输出数据,即a为输入流算子,而b为输出流算子。
本实施例通过预先处理建表语句DDL得到变量以及变量属性信息,从执行语句中获取变量之间的连接方式,即执行关系,确定不同变量需要封装的作业算子的类型,通过该种方式将不便于处理的SQL语句封装为作业算子,提高了对SQL数据实时处理的速度。
在一个实施例中,如图4所示,步骤208,还包括:
步骤402,根据建表语句确定变量的类型,并根据变量的类型确定作业算子的类型。
步骤404,根据执行关系将不同类型的作业算子串接为算子流。通过变量的执行关系后,根据执行关系将作业算子按照执行关系串接起来。
本实施例将作业算子按照执行关系串接为算子流进行SQL语句的执行,通过对SQL语句进行封装使得用户可以以较少的SQL代码代替大量的Java代码的编写,解决了现有技术中通过flink对SQL数据实施处理的实现复杂的技术问题。
应该理解的是,虽然图2-图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种基于Flink的SQL数据实时处理装置,该基于Flink的SQL数据实时处理装置与上述实施例中基于Flink的SQL数据实时处理方法一一对应。该基于Flink的SQL数据实时处理装置包括:
数据存储模块502,用于将通过客户端提交的SQL数据存储到关系型数据库TiDB中,生成SQL数据表,并为SQL数据表生成对应的任务id;
程序提交模块504,用于通过RESTful API将与任务id对应的处理程序提交到Flink集群,其中,处理程序为随提交的SQL数据生成的用于指示Flink集群对SQL数据表进行相应处理的程序;
数据分类模块506,用于在Flink集群上根据处理程序从TiDB获取与任务id对应的SQL数据表,并对SQL数据表中的SQL语句进行分类,得到分类后的SQL语句;
算子串接模块508,用于将分类后的SQL语句封装为对应类型的作业算子,并串接作业算子,生成算子流;
数据处理模块510,用于调用Flink execute接口将算子流提交给Flink集群的taskmanager执行算子流,实现对SQL数据的实时处理。
进一步地,算子串接模块508,包括:
变量获取子模块,用于获取SQL语句中的变量;
关系确定子模块,用于根据执行语句确定变量之间的执行关系;
算子封装子模块,用于根据执行关系映射后将变量封装为作业算子。
进一步地,算子串接模块508,还包括:
类型确认子模块,用于根据建表语句确定变量的类型,并根据变量的类型确定作业算子的类型;
算子串接子模块,用于根据执行关系将不同类型的作业算子串接为算子流。
上述基于Flink的SQL数据实时处理装置,通过客户端将用户输入的数据存在tidb中,然后在flink集群对sql数据表进行解析分类得到分类后的SQL语句,并对分类后的SQL语句进行对应的封装生成作业算子;再按照SQL语句本有的逻辑将作业算子进行串接后生成算子流提交到taskmanager进行执行,实现对SQL数据的实时处理。通过对SQL语句进行封装使得用户可以以较少的SQL代码代替大量的Java代码的编写,解决了现有技术中通过flink对SQL数据实施处理的实现复杂的技术问题。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储SQL数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于Flink的SQL数据实时处理方法。通过客户端将用户输入的数据存在tidb中,然后在flink集群对sql数据表进行解析分类得到分类后的SQL语句,并对分类后的SQL语句进行对应的封装生成作业算子;再按照SQL语句本有的逻辑将作业算子进行串接后生成算子流提交到taskmanager进行执行,实现对SQL数据的实时处理。通过对SQL语句进行封装使得用户可以以较少的SQL代码代替大量的Java代码的编写,解决了现有技术中通过flink对SQL数据实施处理的实现复杂的技术问题。
其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中基于Flink的SQL数据实时处理方法的步骤,例如图2所示的步骤202至步骤210,或者,处理器执行计算机程序时实现上述实施例中基于Flink的SQL数据实时处理装置的各模块/单元的功能,例如图5所示模块502至模块510的功能。为避免重复,此处不再赘述。通过客户端将用户输入的数据存在tidb中,然后在flink集群对sql数据表进行解析分类得到分类后的SQL语句,并对分类后的SQL语句进行对应的封装生成作业算子;再按照SQL语句本有的逻辑将作业算子进行串接后生成算子流提交到taskmanager进行执行,实现对SQL数据的实时处理。通过对SQL语句进行封装使得用户可以以较少的SQL代码代替大量的Java代码的编写,解决了现有技术中通过flink对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)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形、改进或者对部分技术特征进行等同替换,而这些修改或者替换,并不使相同技术方案的本质脱离本发明个实施例技术方案地精神和范畴,都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于Flink的SQL数据实时处理方法,其特征在于,所述方法包括:
将通过客户端提交的SQL数据表存储到关系型数据库TiDB中,生成SQL数据表,并为所述SQL数据表生成对应的任务id;
通过RESTful API将与所述任务id对应的处理程序提交到Flink集群,其中,所述处理程序为随提交的SQL数据生成的用于指示Flink集群对SQL数据表进行相应处理的程序;
在所述Flink集群上根据所述处理程序从所述TiDB获取与所述任务id对应的SQL数据表,并对所述SQL数据表中的SQL语句进行分类,得到分类后的SQL语句;
将分类后的SQL语句封装为对应类型的作业算子,并串接所述作业算子,生成算子流;
调用Flink execute接口将所述算子流提交给所述Flink集群的taskmanager执行所述算子流,实现对所述SQL数据的实时处理。
2.根据权利要求1所述的方法,其特征在于,所述为所述SQL数据表生成对应的任务id,包括:
按照所述SQL数据表的生成时间戳设定所述任务id。
3.根据权利要求1所述的方法,其特征在于,所述对所述SQL数据表进行分类,包括:
根据预设关键字确定所述SQL语句的类型,得到建表语句和执行语句。
4.根据权利要求3所述的方法,其特征在于,所述根据预设关键字确定所述SQL语句的类型,包括:
将以create table开头的SQL语句归为建表语句,以insert into开头的SQL语句归为执行语句。
5.根据权利要求3所述的方法,其特征在于,所述将分类后的SQL语句封装为对应类型的作业算子,包括:
获取SQL语句中的变量;
根据所述执行语句确定所述变量之间的执行关系;并
根据所述执行关系映射后将所述变量封装为作业算子。
6.根据权利要求5所述的方法,其特征在于,所述串接所述作业算子,生成算子流,包括:
根据所述建表语句确定所述变量的类型,并根据所述变量的类型确定所述作业算子的类型;
根据所述执行关系将不同类型的所述作业算子串接为算子流。
7.一种基于Flink的SQL数据实时处理装置,其特征在于,包括:
数据存储模块,用于将通过客户端提交的SQL数据表存储到关系型数据库TiDB中,生成SQL数据表,并为所述SQL数据表生成对应的任务id;
程序提交模块,用于通过RESTful API将与所述任务id对应的处理程序提交到Flink集群,其中,所述处理程序为随提交的SQL数据生成的用于指示Flink集群对SQL数据表进行相应处理的程序;
数据分类模块,用于在所述Flink集群上根据所述处理程序从所述TiDB获取与所述任务id对应的SQL数据表,并对所述SQL数据表中的SQL语句进行分类,得到分类后的SQL语句;
算子串接模块,用于将分类后的SQL语句封装为对应类型的作业算子,并串接所述作业算子,生成算子流;
数据处理模块,用于调用Flink execute接口将所述算子流提交给所述Flink集群的taskmanager执行所述算子流,实现对所述SQL数据的实时处理。
8.根据权利要求7所述的装置,其特征在于,所述数据分类模块,包括:
SQL解析子模块,用于通过calcite解析工具对所述SQL数据进行解析,得到解析出的SQL语句;
SQL分类子模块,用于按照预设开头关键字确定所述SQL语句的类型。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN202010349334.5A 2020-04-28 2020-04-28 基于Flink的SQL数据实时处理方法、装置、计算机设备和介质 Active CN111666296B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010349334.5A CN111666296B (zh) 2020-04-28 2020-04-28 基于Flink的SQL数据实时处理方法、装置、计算机设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010349334.5A CN111666296B (zh) 2020-04-28 2020-04-28 基于Flink的SQL数据实时处理方法、装置、计算机设备和介质

Publications (2)

Publication Number Publication Date
CN111666296A true CN111666296A (zh) 2020-09-15
CN111666296B CN111666296B (zh) 2024-07-09

Family

ID=72382894

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010349334.5A Active CN111666296B (zh) 2020-04-28 2020-04-28 基于Flink的SQL数据实时处理方法、装置、计算机设备和介质

Country Status (1)

Country Link
CN (1) CN111666296B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112287007A (zh) * 2020-10-30 2021-01-29 常州微亿智造科技有限公司 基于Flink SQL引擎的工业生产数据实时处理方法、系统
CN112417014A (zh) * 2020-11-16 2021-02-26 杭州安恒信息技术股份有限公司 动态修改执行计划方法、系统、计算机可读存储介质
CN112486709A (zh) * 2020-12-17 2021-03-12 中国农业银行股份有限公司 一种基于具象状态传输服务进行作业管理的方法和装置
CN112765166A (zh) * 2021-01-06 2021-05-07 深圳市欢太科技有限公司 数据处理方法、装置及计算机可读存储介质
CN113010542A (zh) * 2021-03-12 2021-06-22 中国平安财产保险股份有限公司 业务数据处理方法、装置、计算机设备及存储介质
CN113760242A (zh) * 2021-03-09 2021-12-07 北京京东振世信息技术有限公司 一种数据处理方法、装置、服务器和介质
CN113900944A (zh) * 2021-10-12 2022-01-07 北京沃东天骏信息技术有限公司 一种应用于Flink SQL的逻辑验证方法和装置
CN114385140A (zh) * 2021-12-29 2022-04-22 武汉达梦数据库股份有限公司 基于flink框架的ETL流程组件多个不同输出的处理方法与装置
CN114780827A (zh) * 2022-04-01 2022-07-22 四三九九网络股份有限公司 网页端调试执行Flink SQL文本的方法
CN114969085A (zh) * 2022-03-16 2022-08-30 杭州半云科技有限公司 一种基于可视化技术算法建模的方法和系统
CN115756586A (zh) * 2022-11-25 2023-03-07 中电金信软件有限公司 Flink作业的执行方法、装置、计算机设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170103106A1 (en) * 2015-10-07 2017-04-13 International Business Machines Corporation Processing sql statement in alternating modes
US20180075107A1 (en) * 2016-09-15 2018-03-15 Oracle International Corporation Data serialization in a distributed event processing system
CN109726216A (zh) * 2018-12-29 2019-05-07 北京九章云极科技有限公司 一种基于有向无环图的数据处理方法和处理系统
CN110083625A (zh) * 2019-03-18 2019-08-02 北京奇艺世纪科技有限公司 实时流处理方法、设备、数据处理设备及介质
CN110704479A (zh) * 2019-09-12 2020-01-17 新华三大数据技术有限公司 任务处理方法、装置、电子设备及存储介质
CN111026779A (zh) * 2019-12-19 2020-04-17 厦门安胜网络科技有限公司 一种基于Flink SQL的数据处理方法、装置、存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170103106A1 (en) * 2015-10-07 2017-04-13 International Business Machines Corporation Processing sql statement in alternating modes
US20180075107A1 (en) * 2016-09-15 2018-03-15 Oracle International Corporation Data serialization in a distributed event processing system
CN109726216A (zh) * 2018-12-29 2019-05-07 北京九章云极科技有限公司 一种基于有向无环图的数据处理方法和处理系统
CN110083625A (zh) * 2019-03-18 2019-08-02 北京奇艺世纪科技有限公司 实时流处理方法、设备、数据处理设备及介质
CN110704479A (zh) * 2019-09-12 2020-01-17 新华三大数据技术有限公司 任务处理方法、装置、电子设备及存储介质
CN111026779A (zh) * 2019-12-19 2020-04-17 厦门安胜网络科技有限公司 一种基于Flink SQL的数据处理方法、装置、存储介质

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112287007A (zh) * 2020-10-30 2021-01-29 常州微亿智造科技有限公司 基于Flink SQL引擎的工业生产数据实时处理方法、系统
CN112287007B (zh) * 2020-10-30 2022-02-11 常州微亿智造科技有限公司 基于Flink SQL引擎的工业生产数据实时处理方法、系统
CN112417014A (zh) * 2020-11-16 2021-02-26 杭州安恒信息技术股份有限公司 动态修改执行计划方法、系统、计算机可读存储介质
CN112486709A (zh) * 2020-12-17 2021-03-12 中国农业银行股份有限公司 一种基于具象状态传输服务进行作业管理的方法和装置
CN112765166A (zh) * 2021-01-06 2021-05-07 深圳市欢太科技有限公司 数据处理方法、装置及计算机可读存储介质
CN113760242A (zh) * 2021-03-09 2021-12-07 北京京东振世信息技术有限公司 一种数据处理方法、装置、服务器和介质
CN113010542B (zh) * 2021-03-12 2023-09-19 中国平安财产保险股份有限公司 业务数据处理方法、装置、计算机设备及存储介质
CN113010542A (zh) * 2021-03-12 2021-06-22 中国平安财产保险股份有限公司 业务数据处理方法、装置、计算机设备及存储介质
CN113900944A (zh) * 2021-10-12 2022-01-07 北京沃东天骏信息技术有限公司 一种应用于Flink SQL的逻辑验证方法和装置
CN114385140A (zh) * 2021-12-29 2022-04-22 武汉达梦数据库股份有限公司 基于flink框架的ETL流程组件多个不同输出的处理方法与装置
CN114969085A (zh) * 2022-03-16 2022-08-30 杭州半云科技有限公司 一种基于可视化技术算法建模的方法和系统
CN114780827A (zh) * 2022-04-01 2022-07-22 四三九九网络股份有限公司 网页端调试执行Flink SQL文本的方法
CN114780827B (zh) * 2022-04-01 2024-07-26 四三九九网络股份有限公司 网页端调试执行Flink SQL文本的方法
CN115756586A (zh) * 2022-11-25 2023-03-07 中电金信软件有限公司 Flink作业的执行方法、装置、计算机设备和存储介质
CN115756586B (zh) * 2022-11-25 2024-01-19 中电金信软件有限公司 Flink作业的执行方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN111666296B (zh) 2024-07-09

Similar Documents

Publication Publication Date Title
CN111666296B (zh) 基于Flink的SQL数据实时处理方法、装置、计算机设备和介质
US20210374134A1 (en) Automatic transformation of data by patterns
CN112506946A (zh) 业务数据查询方法、装置、设备及存储介质
CN111310427A (zh) 业务数据配置处理方法、装置、计算机设备和存储介质
CN111414350B (zh) 一种服务生成方法及装置
CN111198863B (zh) 一种规则引擎及其实现方法
WO2021217846A1 (zh) 接口数据处理方法、装置、计算机设备和存储介质
CN107644286A (zh) 工作流处理方法及装置
US20170242665A1 (en) Generation of hybrid enterprise mobile applications in cloud environment
CN103136201A (zh) 页面信息的展示方法和装置
US20200142674A1 (en) Extracting web api endpoint data from source code
CN113435608A (zh) 联邦学习模型的生成方法、装置、计算机设备及存储介质
CN109710220A (zh) 关系型数据库查询方法、装置、设备及存储介质
CN117114909A (zh) 一种核算规则引擎构建方法、装置、设备及存储介质
CN115392501A (zh) 数据采集方法、装置、电子设备及存储介质
CN113806429A (zh) 基于大数据流处理框架的画布式日志分析方法
CN115114146A (zh) 接口测试方法、装置、设备及存储介质
CN112965721B (zh) 基于Android的项目编译方法、装置、计算机设备及存储介质
CN108701153B (zh) 响应自然语言查询的方法、系统和计算机可读存储介质
CN112035466A (zh) 一种区块链查询外置索引开发框架
US20120203744A1 (en) Maintaining data integrity across execution environments
CN114139039B (zh) 服务稳定性确定方法、装置、设备以及存储介质
CN115543428A (zh) 一种基于策略模板的模拟数据生成方法和装置
US20210382699A1 (en) Data processing method, electronic device, and storage medium
Tarasiev et al. Developing Prototype of CASE-Tool to Create Automation Systems Based on Web Applications Using Code Generation

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