CN115469941A - 基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统 - Google Patents
基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统 Download PDFInfo
- Publication number
- CN115469941A CN115469941A CN202211108450.3A CN202211108450A CN115469941A CN 115469941 A CN115469941 A CN 115469941A CN 202211108450 A CN202211108450 A CN 202211108450A CN 115469941 A CN115469941 A CN 115469941A
- Authority
- CN
- China
- Prior art keywords
- data
- data source
- flink
- configuration
- landing
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统,属于Flink实时批量数据处理技术领域,解决现有技术在Flink应用开发过程中多种数据源、多种结构类型数据和多种数据落地系统的配置和代码冗余杂乱,更新迭代频繁,耦合度高造成的开发效率降低和开发成本增加的问题。本发明包括读取数据流程、数据处理和转换数据落地。本发明用于针对Flink应用开发过程中自定义源数据,数据落地的配置及调用冗乱问题及处理不同结构数据分发处理。
Description
技术领域
一种基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统,用于针对Flink应用开发过程中自定义源数据,数据落地的配置及调用冗乱问题及处理不同结构数据分发处理,属于Flink实时批量数据处理技术领域。
背景技术
Apache Flink(Flink)是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
Flink是一个针对流数据和批数据的分布式处理引擎。它主要是由Java代码实现。目前主要还是依靠开源社区的贡献而发展。对Flink而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。再换句话说,Flink会把所有任务当成流来处理,这也是其最大的特点。Flink可以支持本地的快速迭代,以及一些环形的迭代任务。
Flink功能强大,支持开发和运行多种不同种类的应用程序。它的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink不仅可以运行在包括YARN、Mesos、Kubernetes在内的多种资源管理框架上,还支持在裸机集群上独立部署。在启用高可用选项的情况下,它不存在单点失效问题。事实证明,Flink已经可以扩展到数千核心,其状态可以达到TB级别,且仍能保持高吞吐、低延迟的特性。世界各地有很多要求严苛的流处理应用都运行在Flink之上。
目前Flink在大数据领域应用十分广泛尤其是实时计算方面。但在Flink应用开发过程中,存在如下技术问题:
多种数据源(如Kafka,关系型数据库)、多种结构类型数据和多种数据落地系统(如Es,Kafka,关系型数据库)的配置和代码冗余杂乱,更新迭代频繁,耦合度高造成的开发效率降低和开发成本增加的问题。
发明内容
针对上述研究的问题,本发明的目的在于提供一种基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统,解决现有技术在Flink应用开发过程中多种数据源、多种结构类型数据和多种数据落地系统的配置和代码冗余杂乱,更新迭代频繁,耦合度高造成的开发效率降低和开发成本增加的问题。
为了达到上述目的,本发明采用如下技术方案:
一种基于FlinkSQL的风控指标计算开发的自动配置处理方法,包括如下步骤:
步骤1.读取数据流程:
根据数据源传入数据源类型参数,从数据源类型参数的配置参数据或外部配置文件中读取配置参数,并基于flink自带的已经继承了数据源的消费接口获取数据源连接逻辑来根据配置参数获得消费者实例对象来读取数据,并返回Flink数据集,其中,数据源为Kafka或关系型数据库,关系型数据库包括mysql和oracle,Flink数据集是Flink应用程序中的中间数据结果,包括DataStream数据集或DataSet数据集,最初的数据集是读取数据源后产生;
步骤2.数据处理转换:
基于风控引擎系统获取风控JSON报文中的属性,并将属性与逻辑字段名进行映射并存放在配置表中,基于配置表、sql脚本和给定的伪sql脚本解析得到JSON的java解析代码,并基于JSON的java解析代码和基于步骤1读取风控引擎系统中的数据源的topic引擎数据得到包含topic引擎字段的数据的Flink数据集注册为Flink table,并对应到伪sql脚本中的表名,返回Flink数据集;
步骤3.数据落地:
基于步骤2得到的Flink数据集传入配置参数据进行数据落地。
进一步,所述步骤1的具体步骤为:
步骤1.1定义开发用于数据源读取接口的数据源分发类及方法:
定义数据源分发类来区分批处理及流处理,数据源分发类包括批处理BatchSourceData和流处理StreamSourceDatas;
数据源分发方法getData(),用于基于批处理BatchSourceData或流处理StreamSourceDatas数据源类型参数的传入,调用数据源模板类方法init(),并解析配置文件,其具体过程为:根据批处理BatchSourceData和流处理StreamSourceDatas的传入的数据源类型参数,基于数据源类型参数调用flink连接数据源有内置的接口来调用相应数据源模板类方法init(),flink连接数据源有内置的接口即指flink自带继承有数据源的消费接口,消费接口指数据源与Flink集成的连接器,通过配置参数得到消费者实例对象;
步骤1.2定义开发数据源启动方法:
由于flink自带继承有数据源的消费接口,则定义数据源启动方法onStart()用于获取数据源连接逻辑,无需调用数据源的消费接口,即不需要重写读取数据的操作逻辑,具体为:数据源在前期获取数据库driver的参数建立连接及读数准备逻辑中已定义SQL获取需要读取的表和字段,在数据源启动方法onStart()中将定义好的数据读取逻辑传入执行方法ResultSet中,返回Flink数据集;
步骤1.3基于步骤1.1-步骤1.2定义开发用于数据源配置的数据源模板类及方法:
定义数据源模板类来区分批处理及流处理两种,数据源模板类包括批处理的数据流BatchMysqlSourceData和流处理的数据源StreamKafkaSourceData;
数据源模板类的方法init(),用于接收数据源分发方法getdata()传入的批处理的数据流BatchMysqlSourceData或流处理的数据源StreamKafkaSourceData的数据源类型参数来调用数据源模板类的方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet解析数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数,并调用flink连接数据源有内置的接口返回批处理或者流处理的Flink数据集;
步骤1.4定义开发具体数据源类及方法:
基于步骤1.1-步骤1.3具体数据源类,即基于Flink应用调用A数据源,通过数据源分发方法getData()传入的A数据源的类型的数据源类型参数,基于A数据源的类型的数据源类型参数调用数据源模板类方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet解析A数据源的数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数将配置参数传入数据源模板类方法init()中,接着传入flink中内置的用于读取A数据源的接口创建A数据源的消费者实例对象,然后调用flink的核心方法addSource将消费者实例对象作为参数传入读取数据,数据读取后返回结果集,其中,结果是数据库查询的一个数据集合,A数据源为Kafka、mysql或oracle数据源。
进一步,所述步骤1.2中的数据源启动方法onStart()还定义有数据源异常处理及后置处理方法:
数据源异常处理方法:在获取数据源及读取数据源过程中,使用try catch捕获异常,包括连接超时、配置异常或数据源异常;
后置处理方法:
数据源连接成功并且数据读取完成后,调用数据库驱动创建预编译语句PrepareStatement和连接的接口名Connection的close()方法关闭预编译语句和连接,以回收资源。
进一步,所述步骤2的具体步骤为:
步骤2.1定义源字段与逻辑字段间的映射:
通过风控引擎系统配置获取风控JSON报文中的属性,根据业务逻辑定义逻辑字段名,获取对应渠道及各级路径,将JSON报文中的属性对应到逻辑字段名,根据完整路径获取各层级结构、JSON对象名及JSON对象数组名,其中,JSON属性能对应到A层级的json对象,A层级的json对象能对应到B层级的json对象,依此类推,根据完整路径即可获取多层级结构,风控JSON报文中的属性包括数据源类型和shcema信息,shcema信息是源数据的元数据信息;
步骤2.2将映射关系配置到数据库中,即将步骤2.1中得到的各层级、JSON对象名及JSON对象数组名映射关系配置到、用于存放JSON数据结构的数据库中的配置表中;
步骤2.3开发自动化脚本,封装解析逻辑:
开发计算转换及聚合逻辑形成sql脚本封装到用于存储sql脚本的函数中,基于给定的伪sql脚本(业务人员分析业务指标的给定的数据,如学生、老师等)采用封装后的sql脚本在配置表中解析需要的逻辑字段得到JSON的java解析代码作为函数返回的结果输出,其中,封装后的sql脚本和java解析代码存储在Flink算子中;
步骤2.4根据伪sql脚本,实现Flink自定义风控引擎指标:
基于步骤1读取风控引擎系统中的数据源的topic引擎数据,并基于Flink转换算子中的json解析工具fastjson配合json解析代码来处理topic引擎数据,最后返回到Flink数据集中,其中,Flink转换算子中的json解析工具fastjson为javaassist或asm动态生成方法
步骤2.5注册Flink数据表,计算风控引擎指标:
通过Flink内置方法fromDataStream()将Flink数据集注册为Flink table,并对应到伪sql脚本中的表名,接着调用Flink Sql内置的sqlQuery()方法返回Flink数据集。
进一步,所述步骤3的具体步骤为:
步骤3.1定义开发数据源落地分发类及方法:
定义数据落地封装类,包括批处理及流处理两种,由于批处理和流处理模式,落地目标系统实质是物化和持久化,两种模式本质没有区别因此,定义数据落地目标系统的数据源落地分发类SinkAssigner,以及定义数据源落地分发类SinkAssigner的静态方法sinkAssign()用于基于步骤2.5得到的Flink数据集传入配置参数据,其中,SinkAssigner是落地时传入参数,sink代表数据落地目标系统;
步骤3.2定义开发数据落地模板类及方法:
数据落地模板类名以落地目标系统+Sink命名,定义对应数据落地模板类的数据落地模板类方法handleSink(),当数据源落地分发类SinkAssigner的静态方法sinkAssign()传入参数,判断到数据源是落地目标,此时将数据源类型参数或者配置文件参数据由数据源模板类方法init()调用数据源启动方法onStart()来调用执行方法ResultSet解析配置,解析配置后调用数据落地模板类方法handleSink()处理数据落地,最后由sinkPost()方法处理数据落地异常及数据落库后的后续操作;
步骤3.3定义开发数据落地类及方法:
根据数据源落地板类及方法开发具体数据落地类及方法,具体为:以落数据到A数据源,基于Flink数据集传入参数数据源,即将数据源的url、用户名和密码配置传入,此时分发到数据落地模板类及方法调用数据源模板类方法init()来调用数据源启动方法onStart(),通过数据源启动方法onStart()来调用执行方法ResultSet配置环境,建立数据库连接对象及预编译语句,然后定义调用数据落地模板类方法handleSink()中A数据源的用于写入数据库的sql语句,接着执行sql语句数据落库。
进一步,所述步骤3.2中的sinkPost()方法处理数据落地异常及数据落库后的后续操作的具体步骤为:
数据落地目标的异常处理方法:在获取数据源及读取数据源过程中,使用trycatch捕获异常,包括连接超时、配置异常或数据源异常;
后置处理方法:
数据源连接成功并且数据读取完成后,调用数据库驱动创建预编译语句PrepareStatement和连接的接口名Connection的close()方法关闭预编译语句和连接,以回收资源。
一种基于FlinkSQL的风控指标计算开发的自动配置处理系统,包括:
读取数据流程模块:
根据数据源传入数据源类型参数,从数据源类型参数的配置参数据或外部配置文件中读取配置参数,并基于flink自带的已经继承了数据源的消费接口获取数据源连接逻辑来根据配置参数获得消费者实例对象来读取数据,并返回Flink数据集,其中,数据源为Kafka或关系型数据库,关系型数据库包括mysql和oracle,Flink数据集是Flink应用程序中的中间数据结果,包括DataStream数据集或DataSet数据集,最初的数据集是读取数据源后产生;
数据处理模块:
基于风控引擎系统获取风控JSON报文中的属性,并将属性与逻辑字段名进行映射并存放在配置表中,基于配置表、sql脚本和给定的伪sql脚本解析得到JSON的java解析代码,并基于JSON的java解析代码和基于步骤1读取风控引擎系统中的数据源的topic引擎数据得到包含topic引擎字段的数据的Flink数据集注册为Flink table,并对应到伪sql脚本中的表名,返回Flink数据集;
数据落地模块:
基于步骤2得到的Flink数据集传入配置参数据进行数据落地。
进一步,所述读取数据流程模块的具体实现步骤为:
步骤1.1定义开发用于数据源读取接口的数据源分发类及方法:
定义数据源分发类来区分批处理及流处理,数据源分发类包括批处理BatchSourceData和流处理StreamSourceDatas;
数据源分发方法getData(),用于基于批处理BatchSourceData或流处理StreamSourceDatas数据源类型参数的传入,调用数据源模板类方法init(),并解析配置文件,其具体过程为:根据批处理BatchSourceData和流处理StreamSourceDatas的传入的数据源类型参数,基于数据源类型参数调用flink连接数据源有内置的接口来调用相应数据源模板类方法init(),flink连接数据源有内置的接口即指flink自带继承有数据源的消费接口,消费接口指数据源与Flink集成的连接器,通过配置参数得到消费者实例对象;
步骤1.2定义开发数据源启动方法:
由于flink自带继承有数据源的消费接口,则定义数据源启动方法onStart()用于获取数据源连接逻辑,无需调用数据源的消费接口,即不需要重写读取数据的操作逻辑,具体为:数据源在前期获取数据库driver的参数建立连接及读数准备逻辑中已定义SQL获取需要读取的表和字段,在数据源启动方法onStart()中将定义好的数据读取逻辑传入执行方法ResultSet中,返回Flink数据集;
步骤1.3基于步骤1.1-步骤1.2定义开发用于数据源配置的数据源模板类及方法:
定义数据源模板类来区分批处理及流处理两种,数据源模板类包括批处理的数据流BatchMysqlSourceData和流处理的数据源StreamKafkaSourceData;
数据源模板类的方法init(),用于接收数据源分发方法getdata()传入的批处理的数据流BatchMysqlSourceData或流处理的数据源StreamKafkaSourceData的数据源类型参数来调用数据源模板类的方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet解析数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数,并调用flink连接数据源有内置的接口返回批处理或者流处理的Flink数据集;
步骤1.4定义开发具体数据源类及方法:
基于步骤1.1-步骤1.3具体数据源类,即基于Flink应用调用A数据源,通过数据源分发方法getData()传入的A数据源的类型的数据源类型参数,基于A数据源的类型的数据源类型参数调用数据源模板类方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet解析A数据源的数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数将配置参数传入数据源模板类方法init()中,接着传入flink中内置的用于读取A数据源的接口创建A数据源的消费者实例对象,然后调用flink的核心方法addSource将消费者实例对象作为参数传入读取数据,数据读取后返回结果集,其中,结果是数据库查询的一个数据集合,A数据源为Kafka、mysql或oracle数据源。
进一步,所述数据处理模块的具体实现步骤为:
步骤2.1定义源字段与逻辑字段间的映射:
通过风控引擎系统配置获取风控JSON报文中的属性,根据业务逻辑定义逻辑字段名,获取对应渠道及各级路径,将JSON报文中的属性对应到逻辑字段名,根据完整路径获取各层级结构、JSON对象名及JSON对象数组名,其中,JSON属性能对应到A层级的json对象,A层级的json对象能对应到B层级的json对象,依此类推,根据完整路径即可获取多层级结构,风控JSON报文中的属性包括数据源类型和shcema信息,shcema信息是源数据的元数据信息;
步骤2.2将映射关系配置到数据库中,即将步骤2.1中得到的各层级、JSON对象名及JSON对象数组名映射关系配置到、用于存放JSON数据结构的数据库中的配置表中;
步骤2.3开发自动化脚本,封装解析逻辑:
开发计算转换及聚合逻辑形成sql脚本封装到用于存储sql脚本的函数中,基于给定的伪sql脚本(业务人员分析业务指标的给定的数据,如学生、老师等)采用封装后的sql脚本在配置表中解析需要的逻辑字段得到JSON的java解析代码,作为函数返回的结果输出,其中,封装后的sql脚本和java解析代码存储在Flink算子中;
步骤2.4根据伪sql脚本,实现Flink自定义风控引擎指标:
基于步骤1读取风控引擎系统中的数据源的topic引擎数据,并基于Flink转换算子中的json解析工具fastjson配合json解析代码来处理topic引擎数据,最后返回到Flink数据集中,其中,Flink转换算子中的json解析工具fastjson为javaassist或asm动态生成方法;
步骤2.5注册Flink数据表,计算风控引擎指标:
通过Flink内置方法fromDataStream()将Flink数据集注册为Flink table,并对应到伪sql脚本中的表名,接着调用Flink Sql内置的sqlQuery()方法返回Flink数据集。
进一步,所述数据落地模块的具体实现步骤为:
步骤3.1定义开发数据源落地分发类及方法:
定义数据落地封装类,包括批处理及流处理两种,由于批处理和流处理模式,落地目标系统实质是物化和持久化,两种模式本质没有区别因此,定义数据落地目标系统的数据源落地分发类SinkAssigner,以及定义数据源落地分发类SinkAssigner的静态方法sinkAssign()用于基于步骤2.5得到的Flink数据集传入配置参数据,其中,SinkAssigner是落地时传入参数,sink代表数据落地目标系统;
步骤3.2定义开发数据落地模板类及方法:
数据落地模板类名以落地目标系统+Sink命名,定义对应数据落地模板类的数据落地模板类方法handleSink(),当数据源落地分发类SinkAssigner的静态方法sinkAssign()传入参数,判断到数据源是落地目标,此时将数据源类型参数或者配置文件参数据由数据源模板类方法init()调用数据源启动方法onStart()来调用执行方法ResultSet解析配置,解析配置后调用数据落地模板类方法handleSink()处理数据落地,最后由sinkPost()方法处理数据落地异常及数据落库后的后续操作;
步骤3.3定义开发数据落地类及方法:
根据数据源落地板类及方法开发具体数据落地类及方法,具体为:以落数据到A数据源,基于Flink数据集传入参数数据源,即将数据源的url、用户名和密码配置传入,此时分发到数据落地模板类及方法调用数据源模板类方法init()来调用数据源启动方法onStart(),通过数据源启动方法onStart()来调用执行方法ResultSet配置环境,建立数据库连接对象及预编译语句,然后定义调用数据落地模板类方法handleSink()中A数据源的用于写入数据库的sql语句,接着执行sql语句数据落库。
本发明同现有技术相比,其有益效果表现在:
一、本发明将flink应用中必不可少的三步Source,Tranformation和Sink进行完美解耦和封装规范,以简化了开发流程;
二、本发明基于本案中的数据数据流程、数据处理转换和数据落地解决了Flink应用开发过程中多种数据源、多种结构类型数据和多种数据落地系统的配置和代码冗余杂乱,更新迭代频繁,耦合度高造成的开发效率降低和开发成本增加的问题;
三、本发明提供了对不支持sql的数据系统对sql脚本的支持,方便业务人员对各种系统的数据分析。
附图说明
图1为本发明的流程框架示意图;
图2为本发明中配置表的结构示意图;
图3为本发明中采用封装后的sql脚本解析得到JSON的java解析代码的示意图。
具体实施方式
下面将结合附图及具体实施方式对本发明作进一步的描述。
一种基于FlinkSQL的风控指标计算开发的自动配置处理方法,包括如下步骤:
步骤1.读取数据流程:
根据数据源传入数据源类型参数,从数据源类型参数的配置参数据或外部配置文件中读取配置参数,并基于flink自带的已经继承了数据源的消费接口获取数据源连接逻辑来根据配置参数获得消费者实例对象来读取数据,并返回Flink数据集,其中,数据源为Kafka或关系型数据库,关系型数据库包括mysql和oracle,Flink数据集是Flink应用程序中的中间数据结果,包括DataStream数据集或DataSet数据集,最初的数据集是读取数据源后产生;
具体步骤为:
步骤1.1定义开发用于数据源读取接口的数据源分发类及方法:
定义数据源分发类来区分批处理及流处理,数据源分发类包括批处理BatchSourceData和流处理StreamSourceDatas;
数据源分发方法getData(),用于基于批处理BatchSourceData或流处理StreamSourceDatas数据源类型参数的传入,调用数据源模板类方法init(),并解析配置文件,其具体过程为:根据批处理BatchSourceData和流处理StreamSourceDatas的传入的数据源类型参数,基于数据源类型参数调用flink连接数据源有内置的接口来调用相应数据源模板类方法init(),flink连接数据源有内置的接口(如内置的kafka接口)即指flink自带继承有数据源的消费接口,消费接口指数据源与Flink集成的连接器,通过配置参数得到消费者实例对象;
步骤1.2定义开发数据源启动方法:
由于flink自带继承有数据源的消费接口,则定义数据源启动方法onStart()用于获取数据源连接逻辑,无需调用数据源的消费接口,即不需要重写读取数据的操作逻辑,具体为:数据源在前期获取数据库driver的参数建立连接及读数准备逻辑中已定义SQL获取需要读取的表和字段,在数据源启动方法onStart()中将定义好的数据读取逻辑传入执行方法ResultSet中,返回Flink数据集;
数据源启动方法onStart()还定义有数据源异常处理及后置处理方法:
数据源异常处理方法:在获取数据源及读取数据源过程中,使用try catch包裹捕获异常,包括连接超时、配置异常或数据源异常;
后置处理方法:
数据源连接成功并且数据读取完成后,调用数据库驱动创建预编译语句PrepareStatement和连接的接口名Connection的close()方法关闭预编译语句和连接,以回收资源。
步骤1.3基于步骤1.1-步骤1.2定义开发用于数据源配置的数据源模板类及方法:
定义数据源模板类来区分批处理及流处理两种,数据源模板类包括批处理的数据流BatchMysqlSourceData和流处理的数据源StreamKafkaSourceData;
数据源模板类的方法init(),用于接收数据源分发方法getdata()传入的批处理的数据流BatchMysqlSourceData或流处理的数据源StreamKafkaSourceData的数据源类型参数来调用数据源模板类的方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet解析数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数,并调用flink连接数据源有内置的接口返回批处理或者流处理的Flink数据集;
步骤1.4定义开发具体数据源类及方法:
基于步骤1.1-步骤1.3具体数据源类,即基于Flink应用调用A数据源,通过数据源分发方法getData()传入的A数据源的类型的数据源类型参数(即数据源分发方法getData()根据传送的数据源类型参数判断调用某一个具体数据源类读取数据(如A数据源是mysql时,调用mysql的数据源模板类,A数据源是kafka时,调用kafka的数据源模板类),基于A数据源的类型的数据源类型参数调用数据源模板类方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet(此处的执行方法ResultSet为针对A数据源的执行方法,即在A数据源中查找所查的数据)解析A数据源的数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数将配置参数传入数据源模板类方法init()中,接着传入flink中内置的用于读取A数据源的接口创建A数据源的消费者实例对象,然后调用flink的核心方法addSource将消费者实例对象作为参数传入读取数据,数据读取后返回结果集,其中,结果是数据库查询的一个数据集合,A数据源为Kafka、mysql或oracle数据源。
步骤2.数据处理转换:
基于风控引擎系统获取风控JSON报文中的属性,并将属性与逻辑字段名进行映射并存放在配置表中,基于配置表、sql脚本和给定的伪sql脚本解析得到JSON的java解析代码,并基于JSON的java解析代码和基于步骤1读取风控引擎系统中的数据源的topic引擎数据得到包含topic引擎字段的数据的Flink数据集注册为Flink table,并对应到伪sql脚本中的表名,返回Flink数据集;
具体步骤为:
步骤2.1定义源字段与逻辑字段间的映射:
通过风控引擎系统配置获取风控JSON报文中的属性,根据业务逻辑定义逻辑字段名,获取对应渠道及各级路径,将JSON报文中的属性对应到逻辑字段名,根据完整路径获取各层级结构、JSON对象名及JSON对象数组名,其中,JSON属性能对应到A层级的json对象,A层级的json对象能对应到B层级的json对象,依此类推,根据完整路径即可获取多层级结构,风控JSON报文中的属性包括数据源类型和shcema信息,shcema信息是源数据的元数据信息,如关系型数据据中表的字段名、字段类型和长度等信息;
步骤2.2将映射关系配置到数据库中,即将步骤2.1中得到的各层级、JSON对象名及JSON对象数组名映射关系配置到、用于存放JSON数据结构的数据库中的配置表中;
步骤2.3开发自动化脚本,封装解析逻辑:
开发计算转换及聚合逻辑形成sql脚本封装到用于存储sql脚本的函数中,基于给定的伪sql脚本(业务人员分析业务指标的给定的数据,如学生、老师等)采用封装后的sql脚本在配置表中解析需要的逻辑字段得到JSON的java解析代码,作为函数返回的结果输出,其中,伪sql脚本为给定的字段,sql脚本是基于配置表的完整路径和结构查询获取配置表中对应的逻辑字段到JSON报文中获取java解析代码(比如查询用户id,其查询sql语句:select user_id from user;那么我们可已通过java代码通过sql脚本中的from关键字得到我们需要查询的逻辑字段位user_id,然后将user_id作为参数传入自定义函数,得到逻辑字段(上述步骤2.2中配置表已配置好)的java解析代码),其中,封装后的sql脚本和java解析代码存储在Flink算子中,Flink转换算子包括flatMap和Map;
步骤2.4根据伪sql脚本,实现Flink自定义风控引擎指标:
基于步骤1读取风控引擎系统中的数据源的topic引擎数据,并基于Flink转换算子中的json解析工具fastjson配合json解析代码来处理topic引擎数据,最后返回到Flink数据集中,其中,Flink转换算子中的json解析工具fastjson为javaassist或asm动态生成方法;
具体为:Json中有三种类型,json对象,数组和属性,而需要获取的数据就是属性对应的值(相当于通过key获取value),属性之上存在一层或多层json对象和数组,配置表通过配置属性的完整路径,即获取该属性每一层有哪些json对象,有哪些数组,然后,根据这个规律,java解析代码基于已有的json解析工具fastjson(即调用数据库函数,包括javaassist或asm动态生成方法)(如果是别的报文即采用别的解析工具):如果是json数组,通过getJSONArray(json数组名)该方法获取json数组,并对json数组对象生成循环遍历代码;如果是json对象,则通过getJSONObject(json对象名)该方法获取json对象,接着继续处理下一层json对象或者json数组,知道最后是属性为止,其中属性需要配置数据类型以便生成代码逻辑如类型是字符串,配置表中类型为String,则生成get拼接String(属性名),得到java逻辑getString(属性名),从而获取属性值。其中json对象和json数组标识为层级字段,通过字段值开头两位来区分json对象或json数组(json对象以{}开头,json数组以[]开头,便于解析),最后通过路径层级分组,相同的组的代码进行合并。其中,配置表及封装后的sql脚本解析返回java解析代码的过程如图2和图3所示。
步骤2.5注册Flink数据表,计算风控引擎指标:
通过Flink内置方法fromDataStream()将步骤2.4得到的Flink数据集注册为Flink table,并对应到伪sql脚本中的表名,接着调用Flink Sql内置的sqlQuery()方法返回Flink数据集。
步骤3.数据落地:
基于步骤2得到的Flink数据集传入配置参数据进行数据落地。
具体步骤为:
步骤3.1定义开发数据源落地分发类及方法:
定义数据落地封装类,包括批处理及流处理两种,由于批处理和流处理模式,落地目标系统实质是物化和持久化,两种模式本质没有区别因此,定义数据落地目标系统的数据源落地分发类SinkAssigner,以及定义数据源落地分发类SinkAssigner的静态方法sinkAssign()用于基于步骤2.5得到的Flink数据集传入配置参数据,其中,SinkAssigner是落地时传入参数,sink代表数据落地目标系统;
步骤3.2定义开发数据落地模板类及方法:
数据落地模板类名以落地目标系统+Sink命名,定义对应数据落地模板类的数据落地模板类方法handleSink(),当数据源落地分发类SinkAssigner的静态方法sinkAssign()传入参数,判断到数据源是落地目标,此时将数据源类型参数或者配置文件参数据由数据源模板类方法init()调用数据源启动方法onStart()解析配置,解析配置后调用数据落地模板类方法handleSink()处理数据落地,最后由sinkPost()方法处理数据落地异常及数据落库后的后续操作;
sinkPost()方法处理数据落地异常及数据落库后的后续操作的具体步骤为:
数据落地目标的异常处理方法:在获取数据源及读取数据源过程中,使用trycatch捕获异常,包括连接超时、配置异常或数据源异常;
后置处理方法:
数据源连接成功并且数据读取完成后,调用数据库驱动创建预编译语句PrepareStatement和连接的接口名Connection的close()方法关闭预编译语句和连接,以回收资源。
步骤3.3定义开发数据落地类及方法:
根据数据源落地板类及方法开发具体数据落地类及方法,具体为:以落数据到A数据源,基于Flink数据集传入参数数据源,即将数据源的url、用户名和密码配置传入,此时分发到数据落地模板类及方法调用数据源模板类方法init()来调用数据源启动方法onStart(),通过数据源启动方法onStart()来调用执行方法ResultSet配置环境,建立数据库连接对象及预编译语句,然后定义调用数据落地模板类方法handleSink()中A数据源的用于写入数据库的sql语句(sql语句是具体的写入逻辑,即通过过滤条件查询需要的表,写入哪些字段,即到所需要的表中比如insert into表名1 Select字段1,字段2from表名2where过滤条件),接着执行sql语句数据落库。
实施例
1.业务人员分析风控引擎系统的数据,算计指标,并提供sql脚本并进行封装;
2.开发人员准备风控引擎系统中kakfa相关配置参数,封装好传入数据源分发类;
3.数据源分发类调用数据源类的数据源启动方法init()调用执行方法ResultSet,解析配置参数,读取风控引擎系统中的数据源kafka中相应topic数据,返回flink数据集(DataStream,DataSet);
4.基于给定的伪sql脚本和封装后的sql脚本,在配置表中查找逻辑字段到JSON报文中获取java解析代码;
5.读取风控引擎系统中的数据源的topic引擎数据,并基于Flink转换算子中的json解析工具fastjson配合json解析代码来处理topic引擎数据,最后返回到Flink数据集中,其中,Flink转换算子中的json解析工具fastjson为javaassist或asm动态生成方法;
6.开发人员的数据落地配置参数传入数据落地分发类的分发方法,基于Flink数据集传入参数数据源,调用mysql的数据源模板类方法init()(即落地数据库与数据读取的数据库不相同)来调用执行方法ResultSet配置环境,建立数据库连接对象及预编译语句,然后定义调用数据落地模板类方法handleSink()中mysql数据源的用于写入数据库的sql语句,接着执行sql语句数据落库。
以上仅是本发明众多具体应用范围中的代表性实施例,对本发明的保护范围不构成任何限制。凡采用变换或是等效替换而形成的技术方案,均落在本发明权利保护范围之内。
Claims (10)
1.一种基于FlinkSQL的风控指标计算开发的自动配置处理方法,其特征在于,包括如下步骤:
步骤1.读取数据流程:
根据数据源传入数据源类型参数,从数据源类型参数的配置参数据或外部配置文件中读取配置参数,并基于flink自带的已经继承了数据源的消费接口获取数据源连接逻辑来根据配置参数获得消费者实例对象来读取数据,并返回Flink数据集,其中,数据源为Kafka或关系型数据库,关系型数据库包括mysql和oracle,Flink数据集是Flink应用程序中的中间数据结果,包括DataStream数据集或DataSet数据集,最初的数据集是读取数据源后产生;
步骤2.数据处理转换:
基于风控引擎系统获取风控JSON报文中的属性,并将属性与逻辑字段名进行映射并存放在配置表中,基于配置表、sql脚本和给定的伪sql脚本解析得到JSON的java解析代码,并基于JSON的java解析代码和基于步骤1读取风控引擎系统中的数据源的topic引擎数据得到包含topic引擎字段的数据的Flink数据集注册为Flink table,并对应到伪sql脚本中的表名,返回Flink数据集;
步骤3.数据落地:
基于步骤2得到的Flink数据集传入配置参数据进行数据落地。
2.根据权利要求1所述的一种基于FlinkSQL的风控指标计算开发的自动配置处理方法,其特征在于,所述步骤1的具体步骤为:
步骤1.1定义开发用于数据源读取接口的数据源分发类及方法:
定义数据源分发类来区分批处理及流处理,数据源分发类包括批处理BatchSourceData和流处理StreamSourceDatas;
数据源分发方法getData(),用于基于批处理BatchSourceData或流处理StreamSourceDatas数据源类型参数的传入,调用数据源模板类方法init(),并解析配置文件,其具体过程为:根据批处理BatchSourceData和流处理StreamSourceDatas的传入的数据源类型参数,基于数据源类型参数调用flink连接数据源有内置的接口来调用相应数据源模板类方法init(),flink连接数据源有内置的接口即指flink自带继承有数据源的消费接口,消费接口指数据源与Flink集成的连接器,通过配置参数得到消费者实例对象;
步骤1.2定义开发数据源启动方法:
由于flink自带继承有数据源的消费接口,则定义数据源启动方法onStart()用于获取数据源连接逻辑,无需调用数据源的消费接口,即不需要重写读取数据的操作逻辑,具体为:数据源在前期获取数据库driver的参数建立连接及读数准备逻辑中已定义SQL获取需要读取的表和字段,在数据源启动方法onStart()中将定义好的数据读取逻辑传入执行方法ResultSet中,返回Flink数据集;
步骤1.3基于步骤1.1-步骤1.2定义开发用于数据源配置的数据源模板类及方法:
定义数据源模板类来区分批处理及流处理两种,数据源模板类包括批处理的数据流BatchMysqlSourceData和流处理的数据源StreamKafkaSourceData;
数据源模板类的方法init(),用于接收数据源分发方法getdata()传入的批处理的数据流BatchMysqlSourceData或流处理的数据源StreamKafkaSourceData的数据源类型参数来调用数据源模板类的方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet解析数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数,并调用flink连接数据源有内置的接口返回批处理或者流处理的Flink数据集;
步骤1.4定义开发具体数据源类及方法:
基于步骤1.1-步骤1.3具体数据源类,即基于Flink应用调用A数据源,通过数据源分发方法getData()传入的A数据源的类型的数据源类型参数,基于A数据源的类型的数据源类型参数调用数据源模板类方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet解析A数据源的数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数将配置参数传入数据源模板类方法init()中,接着传入flink中内置的用于读取A数据源的接口创建A数据源的消费者实例对象,然后调用flink的核心方法addSource将消费者实例对象作为参数传入读取数据,数据读取后返回结果集,其中,结果是数据库查询的一个数据集合,A数据源为Kafka、mysql或oracle数据源。
3.根据权利要求2所述的一种基于FlinkSQL的风控指标计算开发的自动配置处理方法,其特征在于,所述步骤1.2中的数据源启动方法onStart()还定义有数据源异常处理及后置处理方法:
数据源异常处理方法:在获取数据源及读取数据源过程中,使用try catch捕获异常,包括连接超时、配置异常或数据源异常;
后置处理方法:
数据源连接成功并且数据读取完成后,调用数据库驱动创建预编译语句PrepareStatement和连接的接口名Connection的close()方法关闭预编译语句和连接,以回收资源。
4.根据权利要求3所述的一种基于FlinkSQL的风控指标计算开发的自动配置处理方法,其特征在于,所述步骤2的具体步骤为:
步骤2.1定义源字段与逻辑字段间的映射:
通过风控引擎系统配置获取风控JSON报文中的属性,根据业务逻辑定义逻辑字段名,获取对应渠道及各级路径,将JSON报文中的属性对应到逻辑字段名,根据完整路径获取各层级结构、JSON对象名及JSON对象数组名,其中,JSON属性能对应到A层级的json对象,A层级的json对象能对应到B层级的json对象,依此类推,根据完整路径即可获取多层级结构,风控JSON报文中的属性包括数据源类型和shcema信息,shcema信息是源数据的元数据信息;
步骤2.2将映射关系配置到数据库中,即将步骤2.1中得到的各层级、JSON对象名及JSON对象数组名映射关系配置到、用于存放JSON数据结构的数据库中的配置表中;
步骤2.3开发自动化脚本,封装解析逻辑:
开发计算转换及聚合逻辑形成sql脚本封装到用于存储sql脚本的函数中,基于给定的伪sql脚本(业务人员分析业务指标的给定的数据,如学生、老师等)采用封装后的sql脚本在配置表中解析需要的逻辑字段得到JSON的java解析代码,作为函数返回的结果输出,其中,封装后的sql脚本和java解析代码存储在Flink算子中;
步骤2.4根据伪sql脚本,实现Flink自定义风控引擎指标:
基于步骤1读取风控引擎系统中的数据源的topic引擎数据,并基于Flink转换算子中的json解析工具fastjson配合json解析代码来处理topic引擎数据,最后返回到Flink数据集中,其中,Flink转换算子中的json解析工具fastjson为javaassist或asm动态生成方法;
步骤2.5注册Flink数据表,计算风控引擎指标:
通过Flink内置方法fromDataStream()将Flink数据集注册为Flink table,并对应到伪sql脚本中的表名,接着调用Flink Sql内置的sqlQuery()方法返回Flink数据集。
5.根据权利要求4所述的一种基于FlinkSQL的风控指标计算开发的自动配置处理方法,其特征在于,所述步骤3的具体步骤为:
步骤3.1定义开发数据源落地分发类及方法:
定义数据落地封装类,包括批处理及流处理两种,由于批处理和流处理模式,落地目标系统实质是物化和持久化,两种模式本质没有区别因此,定义数据落地目标系统的数据源落地分发类SinkAssigner,以及定义数据源落地分发类SinkAssigner的静态方法sinkAssign()用于基于步骤2.5得到的Flink数据集传入配置参数据,其中,SinkAssigner是落地时传入参数,sink代表数据落地目标系统;
步骤3.2定义开发数据落地模板类及方法:
数据落地模板类名以落地目标系统+Sink命名,定义对应数据落地模板类的数据落地模板类方法handleSink(),当数据源落地分发类SinkAssigner的静态方法sinkAssign()传入参数,判断到数据源是落地目标,此时将数据源类型参数或者配置文件参数据由数据源模板类方法init()调用数据源启动方法onStart()来调用执行方法ResultSet解析配置,解析配置后调用数据落地模板类方法handleSink()处理数据落地,最后由sinkPost()方法处理数据落地异常及数据落库后的后续操作;
步骤3.3定义开发数据落地类及方法:
根据数据源落地板类及方法开发具体数据落地类及方法,具体为:以落数据到A数据源,基于Flink数据集传入参数数据源,即将数据源的url、用户名和密码配置传入,此时分发到数据落地模板类及方法调用数据源模板类方法init()来调用数据源启动方法onStart(),通过数据源启动方法onStart()来调用执行方法ResultSet配置环境,建立数据库连接对象及预编译语句,然后定义调用数据落地模板类方法handleSink()中A数据源的用于写入数据库的sql语句,接着执行sql语句数据落库。
6.根据权利要求5所述的一种基于FlinkSQL的风控指标计算开发的自动配置处理方法,其特征在于,所述步骤3.2中的sinkPost()方法处理数据落地异常及数据落库后的后续操作的具体步骤为:
数据落地目标的异常处理方法:在获取数据源及读取数据源过程中,使用try catch捕获异常,包括连接超时、配置异常或数据源异常;
后置处理方法:
数据源连接成功并且数据读取完成后,调用数据库驱动创建预编译语句PrepareStatement和连接的接口名Connection的close()方法关闭预编译语句和连接,以回收资源。
7.一种基于FlinkSQL的风控指标计算开发的自动配置处理系统,其特征在于,包括:
读取数据流程模块:
根据数据源传入数据源类型参数,从数据源类型参数的配置参数据或外部配置文件中读取配置参数,并基于flink自带的已经继承了数据源的消费接口获取数据源连接逻辑来根据配置参数获得消费者实例对象来读取数据,并返回Flink数据集,其中,数据源为Kafka或关系型数据库,关系型数据库包括mysql和oracle,Flink数据集是Flink应用程序中的中间数据结果,包括DataStream数据集或DataSet数据集,最初的数据集是读取数据源后产生;
数据处理模块:
基于风控引擎系统获取风控JSON报文中的属性,并将属性与逻辑字段名进行映射并存放在配置表中,基于配置表、sql脚本和给定的伪sql脚本解析得到JSON的java解析代码,并基于JSON的java解析代码和基于步骤1读取风控引擎系统中的数据源的topic引擎数据得到包含topic引擎字段的数据的Flink数据集注册为Flinktable,并对应到伪sql脚本中的表名,返回Flink数据集:
数据落地模块:
基于步骤2得到的Flink数据集传入配置参数据进行数据落地。
8.根据权利要求7所述的一种基于FlinkSQL的风控指标计算开发的自动配置处理系统,其特征在于,所述读取数据流程模块的具体实现步骤为:
步骤1.1定义开发用于数据源读取接口的数据源分发类及方法:
定义数据源分发类来区分批处理及流处理,数据源分发类包括批处理BatchSourceData和流处理StreamSourceDatas;
数据源分发方法getData(),用于基于批处理BatchSourceData或流处理StreamSourceDatas数据源类型参数的传入,调用数据源模板类方法init(),并解析配置文件,其具体过程为:根据批处理BatchSourceData和流处理StreamSourceDatas的传入的数据源类型参数,基于数据源类型参数调用flink连接数据源有内置的接口来调用相应数据源模板类方法init(),flink连接数据源有内置的接口即指flink自带继承有数据源的消费接口,消费接口指数据源与Flink集成的连接器,通过配置参数得到消费者实例对象;
步骤1.2定义开发数据源启动方法:
由于flink自带继承有数据源的消费接口,则定义数据源启动方法onStart()用于获取数据源连接逻辑,无需调用数据源的消费接口,即不需要重写读取数据的操作逻辑,具体为:数据源在前期获取数据库driver的参数建立连接及读数准备逻辑中已定义SQL获取需要读取的表和字段,在数据源启动方法onStart()中将定义好的数据读取逻辑传入执行方法ResultSet中,返回Flink数据集;
步骤1.3基于步骤1.1-步骤1.2定义开发用于数据源配置的数据源模板类及方法:
定义数据源模板类来区分批处理及流处理两种,数据源模板类包括批处理的数据流BatchMysqlSourceData和流处理的数据源StreamKafkaSourceData:
数据源模板类的方法init(),用于接收数据源分发方法getdata()传入的批处理的数据流BatchMysqlSourceData或流处理的数据源StreamKafkaSourceData的数据源类型参数来调用数据源模板类的方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet解析数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数,并调用flink连接数据源有内置的接口返回批处理或者流处理的Flink数据集;
步骤1.4定义开发具体数据源类及方法:
基于步骤1.1-步骤1.3具体数据源类,即基于Flink应用调用A数据源,通过数据源分发方法getData()传入的A数据源的类型的数据源类型参数,基于A数据源的类型的数据源类型参数调用数据源模板类方法init(),数据源模板类方法init()负责调用数据源启动方法onStart()来调用执行方法ResultSet解析A数据源的数据源类型参数的配置参数据或外部配置文件中,以获取解析好的配置参数将配置参数传入数据源模板类方法init()中,接着传入flink中内置的用于读取A数据源的接口创建A数据源的消费者实例对象,然后调用flink的核心方法addSource将消费者实例对象作为参数传入读取数据,数据读取后返回结果集,其中,结果是数据库查询的一个数据集合,A数据源为Kafka、mysql或oracle数据源。
9.根据权利要求8所述的一种基于FlinkSQL的风控指标计算开发的自动配置处理系统,其特征在于,所述数据处理模块的具体实现步骤为:
步骤2.1定义源字段与逻辑字段间的映射:
通过风控引擎系统配置获取风控JSON报文中的属性,根据业务逻辑定义逻辑字段名,获取对应渠道及各级路径,将JSON报文中的属性对应到逻辑字段名,根据完整路径获取各层级结构、JSON对象名及JSON对象数组名,其中,JSON属性能对应到A层级的json对象,A层级的json对象能对应到B层级的json对象,依此类推,根据完整路径即可获取多层级结构,风控JSON报文中的属性包括数据源类型和shcema信息,shcema信息是源数据的元数据信息;
步骤2.2将映射关系配置到数据库中,即将步骤2.1中得到的各层级、JSON对象名及JSON对象数组名映射关系配置到、用于存放JSON数据结构的数据库中的配置表中;
步骤2.3开发自动化脚本,封装解析逻辑:
开发计算转换及聚合逻辑形成sql脚本封装到用于存储sql脚本的函数中,基于给定的伪sql脚本(业务人员分析业务指标的给定的数据,如学生、老师等)采用封装后的sql脚本在配置表中解析需要的逻辑字段得到JSON的java解析代码,作为函数返回的结果输出,其中,封装后的sql脚本和java解析代码存储在Flink算子中;
步骤2.4根据伪sql脚本,实现Flink自定义风控引擎指标:
基于步骤1读取风控引擎系统中的数据源的topic引擎数据,并基于Flink转换算子中的json解析工具fastjson配合json解析代码来处理topic引擎数据,最后返回到Flink数据集中,其中,Flink转换算子中的json解析工具fastjson为javaassist或asm动态生成方法;
步骤2.5注册Flink数据表,计算风控引擎指标:
通过Flink内置方法fromDataStream()将Flink数据集注册为Flink table,并对应到伪sql脚本中的表名,接着调用Flink Sql内置的sqlQuery()方法返回Flink数据集。
10.根据权利要求9所述的一种基于FlinkSQL的风控指标计算开发的自动配置处理系统,其特征在于,所述数据落地模块的具体实现步骤为:
步骤3.1定义开发数据源落地分发类及方法:
定义数据落地封装类,包括批处理及流处理两种,由于批处理和流处理模式,落地目标系统实质是物化和持久化,两种模式本质没有区别因此,定义数据落地目标系统的数据源落地分发类SinkAssigner,以及定义数据源落地分发类SinkAssigner的静态方法sinkAssign()用于基于步骤2.5得到的Flink数据集传入配置参数据,其中,SinkAssigner是落地时传入参数,sink代表数据落地目标系统;
步骤3.2定义开发数据落地模板类及方法:
数据落地模板类名以落地目标系统+Sink命名,定义对应数据落地模板类的数据落地模板类方法handleSink(),当数据源落地分发类SinkAssigner的静态方法sinkAssign()传入参数,判断到数据源是落地目标,此时将数据源类型参数或者配置文件参数据由数据源模板类方法init()调用数据源启动方法onStart()来调用执行方法ResultSet解析配置,解析配置后调用数据落地模板类方法handleSink()处理数据落地,最后由sinkPost()方法处理数据落地异常及数据落库后的后续操作;
步骤3.3定义开发数据落地类及方法:
根据数据源落地板类及方法开发具体数据落地类及方法,具体为:以落数据到A数据源,基于Flink数据集传入参数数据源,即将数据源的url、用户名和密码配置传入,此时分发到数据落地模板类及方法调用数据源模板类方法init()来调用数据源启动方法onStart(),通过数据源启动方法onStart()来调用执行方法ResultSet配置环境,建立数据库连接对象及预编译语句,然后定义调用数据落地模板类方法handleSink()中A数据源的用于写入数据库的sql语句,接着执行sql语句数据落库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211108450.3A CN115469941A (zh) | 2022-09-09 | 2022-09-09 | 基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211108450.3A CN115469941A (zh) | 2022-09-09 | 2022-09-09 | 基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115469941A true CN115469941A (zh) | 2022-12-13 |
Family
ID=84332817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211108450.3A Pending CN115469941A (zh) | 2022-09-09 | 2022-09-09 | 基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115469941A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904722A (zh) * | 2022-12-14 | 2023-04-04 | 上海汇付支付有限公司 | 一种大数据实时处理平台 |
CN116340363A (zh) * | 2023-04-06 | 2023-06-27 | 河海大学 | 一种基于关系型数据库的数据存储、加载方法及相关装置 |
CN117198474A (zh) * | 2023-11-06 | 2023-12-08 | 天河超级计算淮海分中心 | 医学影像数据实时获取方法、系统、电子设备及存储介质 |
CN117829121A (zh) * | 2024-03-04 | 2024-04-05 | 成方金融科技有限公司 | 数据处理方法、装置、电子设备和介质 |
-
2022
- 2022-09-09 CN CN202211108450.3A patent/CN115469941A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904722A (zh) * | 2022-12-14 | 2023-04-04 | 上海汇付支付有限公司 | 一种大数据实时处理平台 |
CN116340363A (zh) * | 2023-04-06 | 2023-06-27 | 河海大学 | 一种基于关系型数据库的数据存储、加载方法及相关装置 |
CN116340363B (zh) * | 2023-04-06 | 2024-01-30 | 河海大学 | 一种基于关系型数据库的数据存储、加载方法及相关装置 |
CN117198474A (zh) * | 2023-11-06 | 2023-12-08 | 天河超级计算淮海分中心 | 医学影像数据实时获取方法、系统、电子设备及存储介质 |
CN117198474B (zh) * | 2023-11-06 | 2024-03-01 | 天河超级计算淮海分中心 | 医学影像数据实时获取方法、系统、电子设备及存储介质 |
CN117829121A (zh) * | 2024-03-04 | 2024-04-05 | 成方金融科技有限公司 | 数据处理方法、装置、电子设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115469941A (zh) | 基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统 | |
CN107861728B (zh) | 用于传统程序语言向现代程序语言转换的方法及其系统 | |
US8447744B2 (en) | Extensibility platform using data cartridges | |
CN104572122B (zh) | 一种软件应用数据的生成装置及方法 | |
Bockermann et al. | The streams framework | |
US20210357577A1 (en) | Logical, recursive definition of data transformations | |
US20050108684A1 (en) | Method and system for generating an application object repository from application framework metadata | |
US8090735B2 (en) | Statement generation using statement patterns | |
US7926024B2 (en) | Method and apparatus for managing complex processes | |
CN111078555B (zh) | 一种测试文件的生成方法、系统、服务器和存储介质 | |
US7958487B2 (en) | Apparatus, system, and method for modifying an integration software template | |
US10437564B1 (en) | Object mapping and conversion system | |
CN108345691B (zh) | 数据源通用处理框架构建方法、数据源处理方法及装置 | |
KR20100135789A (ko) | 질의 처리 시각화 시스템 및 방법과 컴퓨터 프로그램 제품 | |
CN113238740B (zh) | 代码生成方法、代码生成装置、存储介质及电子设备 | |
CN116795859A (zh) | 数据分析方法、装置、计算机设备和存储介质 | |
CN110704394A (zh) | 报表配置修改方法及装置 | |
US10671411B2 (en) | Cloning for object-oriented environment | |
CN112650526B (zh) | 版本一致性的检测方法、装置、电子设备和介质 | |
CN117640391A (zh) | 一种采用ovf的云制造硬件资源虚拟器件的封装与部署方法 | |
CN103678485A (zh) | 虚拟试验流程节点驱动与活动封装系统 | |
WO2023151239A1 (zh) | 一种创建微服务的方法及相关设备 | |
US10275292B1 (en) | Shadow Java classes provide private metadata | |
JP2021505983A (ja) | 新しいプログラミング言語 | |
US20090157739A1 (en) | Methods and systems for object interpretation within a shared object space |
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 |