CN111026779A - 一种基于Flink SQL的数据处理方法、装置、存储介质 - Google Patents
一种基于Flink SQL的数据处理方法、装置、存储介质 Download PDFInfo
- Publication number
- CN111026779A CN111026779A CN201911318804.5A CN201911318804A CN111026779A CN 111026779 A CN111026779 A CN 111026779A CN 201911318804 A CN201911318804 A CN 201911318804A CN 111026779 A CN111026779 A CN 111026779A
- Authority
- CN
- China
- Prior art keywords
- data
- sql
- flink
- task
- data source
- 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
Links
Images
Classifications
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于Flink SQL的数据处理方法装置、存储介质,该方法包括:获取数据源中的待处理的数据并发送至SQL任务提交平台;在SQL任务提交平台中编写SQL语句对数据进行标准化的映射,并在SQL语句中定义数据源表、数据目标表,并为数据选择udf函数;SQL任务提交平台将编写好的SQL语句提交至Flink集群,Flink集群对所述SQL语句进行解析获得UDF函数、数据源表和数据目标表,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理,并将处理后的数据输出。本发明提出了风格统一的SQL任务提交平台,使用语法简洁、易学易用的SQL语句来完成数据处理过程中的数据清洗等处理,方便非专业的工作人员进行数据处理,提高了用户体验。
Description
技术领域
本发明涉及数据库处理技术领域,一种基于Flink SQL的数据处理方法、装置、存储介质。
背景技术
大数据系统中的数据通常具有一个或多个数据源,这些数据源可以包括同构/异构的(大)数据库、文件系统、服务接口等。这些数据源中的数据来源现实世界,容易受到噪声数据、数据值缺失与数据冲突等的影响。
数据治理、分析、可视化过程中的算法与实现技术复杂多样,往往需要对数据的组织、数据的表达形式、数据的位置等进行一系列前置处理。这就对研发提出了较高的要求,不仅需要了解业务、数据标准、较高的代码水平,而现实中研发的能力往往参差不齐,这就造就了数据治理质量有好有坏。而数据治理的好坏直接影响到整套系统的可用性、准确性、完整性、时效性、可信性与可解释性等。
可见,在现有技术中,多源数据处理的效率较低、准确性差,且界面不够友好,不方便工作人员进行多源数据的处理。
发明内容
本发明针对上述现有技术中的缺陷,提出了如下技术方案。
一种基于Flink SQL的数据处理方法,该方法包括:
获取步骤,获取数据源中的待处理的数据并发送至SQL任务提交平台;
编写步骤,在SQL任务提交平台中编写SQL语句对数据进行标准化的映射,并在SQL语句中定义数据源表、数据目标表,并为数据选择udf函数;
处理步骤,SQL任务提交平台将编写好的SQL语句提交至Flink集群,Flink集群对所述SQL语句进行解析获得UDF函数、数据源表和数据目标表,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理,并将处理后的数据输出。
更进一步地,所述数据源为分布式发布订阅消息系统Kafka。
更进一步地,所述SQL任务提交平台还用于:
查看所述Kafka上汇集的实时推送和离线推送的数据并计算某个范围内数据的空值率及校验数据的准确率;
在编写的SQL语句中定义SQL任务的并行度、检查点及备份点;
以及用于查看SQL任务的执行情况、执行统计和取消SQL任务。
更进一步地,所述Flink集群对所述SQL语句进行解析的操作为:所述Flink集群采用apache calcite解析SQL语句,通过SQL Parser解析SQL语句,并基于正则表达式判定SQL语句的类型,并通过JavaCC将SQL语句解析成AST语法树SqlNode,并且结合元数据验证SQL语句是否符合规范;通过对解析出来的语法树SqlNode再进行解析获得udf函数、数据源表和数据目标表的集合。
更进一步地,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理的操作为:对获得的udf函数集合进行遍历,通过class.forName方法动态加载class对象注册到flink Table Environment,使用Scalar Functions对字段进行数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识;对获得的源表集合进行遍历,然后根据解析出来的field字段和type类型转换成flink Table可识别的InternalType类型然后注册到flink Table Environment,通过flink Table Environment执行sqlQuery获得FlinkTable结果集,通过flink Table Environment将Flink Table结果集转换成FlinkDataStream。
本发明还提出了一种基于Flink SQL的数据处理装置,该装置包括:
获取单元,获取数据源中的待处理的数据并发送至SQL任务提交平台;
编写单元,在SQL任务提交平台中编写SQL语句对数据进行标准化的映射,并在SQL语句中定义数据源表、数据目标表,并为数据选择udf函数;
处理单元,SQL任务提交平台将编写好的SQL语句提交至Flink集群,Flink集群对所述SQL语句进行解析获得UDF函数、数据源表和数据目标表,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理,并将处理后的数据输出。
更进一步地,所述数据源为分布式发布订阅消息系统Kafka。
更进一步地,所述SQL任务提交平台还用于:
查看所述Kafka上汇集的实时推送和离线推送的数据并计算某个范围内数据的空值率及校验数据的准确率;
在编写的SQL语句中定义SQL任务的并行度、检查点及备份点;
以及用于查看SQL任务的执行情况、执行统计和取消SQL任务。
更进一步地,所述Flink集群对所述SQL语句进行解析的操作为:所述Flink集群采用apache calcite解析SQL语句,通过SQL Parser解析SQL语句,并基于正则表达式判定SQL语句的类型,并通过JavaCC将SQL语句解析成AST语法树SqlNode,并且结合元数据验证SQL语句是否符合规范;通过对解析出来的语法树SqlNode再进行解析获得udf函数、数据源表和数据目标表的集合。
更进一步地,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理的操作为:对获得的udf函数集合进行遍历,通过class.forName方法动态加载class对象注册到flink Table Environment,使用Scalar Functions对字段进行数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识;对获得的源表集合进行遍历,然后根据解析出来的field字段和type类型转换成flink Table可识别的InternalType类型然后注册到flink Table Environment,通过flink Table Environment执行sqlQuery获得FlinkTable结果集,通过flink Table Environment将Flink Table结果集转换成FlinkDataStream。
本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的装置。
本发明的技术效果在于:本发明的一种基于Flink SQL的数据处理方法,该方法包括:获取步骤,获取数据源中的待处理的数据并发送至SQL任务提交平台;编写步骤,在SQL任务提交平台中编写SQL语句对数据进行标准化的映射,并在SQL语句中定义数据源表、数据目标表,并为数据选择udf函数;处理步骤,SQL任务提交平台将编写好的SQL语句提交至Flink集群,Flink集群对所述SQL语句进行解析获得UDF函数、数据源表和数据目标表,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理,并将处理后的数据输出。本发明提出了风格统一的SQL任务提交平台,使用语法简洁、易学易用的SQL语句来完成数据处理过程中的数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识,且在数据处理过程中可以实时查看任务的执行情况、并进行执行统计等,该方法界面友好,方便非专业的工作人员进行数据处理,提高了用户体验。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。
图1是根据本发明的实施例的一种基于Flink SQL的数据处理方法流程图。
图2是根据本发明的实施例的一种基于Flink SQL的数据处理装置的结构图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了本发明的一种基于Flink SQL的数据处理方法,该方法包括:
获取步骤S101,获取数据源中的待处理的数据并发送至SQL任务提交平台;更进一步地,所述数据源为分布式发布订阅消息系统Kafka,Kafka具有高吞吐量、持久化、多副本备份、横向扩展能力的优点,当然也可以是其他数据源。
编写步骤S102,在SQL任务提交平台中编写SQL语句对数据进行标准化的映射,并在SQL语句中定义数据源表、数据目标表,并为数据选择udf函数;选择的合适udf函数用于对数据字段进行清洗、校验、去重、归一化、比对、标识等动作。本发明构建的SQL语句(也称为SQL任务)提交平台为一个WEB应用,这样方便用户这样可以联网便可以进行数据的处理,且WEB的界面统一,方便用户的使用,提高了用户体验。
处理步骤S103,SQL任务提交平台将编写好的SQL语句提交至Flink集群,Flink集群对所述SQL语句进行解析获得UDF函数、数据源表和数据目标表,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理,并将处理后的数据输出。Flink SQL是Flink实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准SQL语义的开发语言。
在一个实施例中,所述SQL任务提交平台还提供以下功能:
查看所述Kafka上汇集的实时推送和离线推送的数据并计算某个范围内数据的空值率及校验数据的准确率;即通过查看消息队列kafka上汇集了哪些实时推送和离线推送上来的数据(数据探查)。计算某个范围内数据的空值率、校验数据的准确率。
在编写的SQL语句中定义SQL任务的并行度、检查点(checkpoint)、备份点(savepoint)等参数。
以及用于查看SQL任务的执行情况、执行统计和取消SQL任务。例如,通过调用Flink/overview接口查看集群的task manager数量、使用资源slot数量、耗费资源slot数量、集群cpu使用情况、集群内存使用情况、集群job执行情况。通过调用Flink/jobs/jobid接口查看任务的执行时间、执行状态、任务的并行度、拉取数据源的数量、已经处理的数据量等等情况。通过调用Flink/plan接口查看待执行sql的执行计划。通过调用Flink/yarn-cancel接口取消sql任务。通过调用Flink/run接口提交sql启动Flink SQL数据处理程序,即SQL任务提交平台将编写好的SQL语句提交至Flink集群是调用Flink/run接口提交sql启动Flink SQL数据处理程序实现的。
在一个实施例中,所述Flink集群对所述SQL语句进行解析的操作为:所述Flink集群采用apache calcite解析SQL语句,通过SQL Parser解析SQL语句,并基于正则表达式判定SQL语句的类型,并通过JavaCC将SQL语句解析成AST语法树SqlNode,并且结合元数据验证SQL语句是否符合规范;通过对解析出来的语法树SqlNode再进行解析获得udf函数、数据源表和数据目标表的集合。
在一个实施例中,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理的操作为:对获得的udf函数集合进行遍历,通过class.forName方法动态加载class对象注册到flink Table Environment,使用Scalar Functions对字段进行数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识;对获得的源表集合进行遍历,然后根据解析出来的field字段和type类型转换成flink Table可识别的InternalType类型然后注册到flink Table Environment,通过flink Table Environment执行sqlQuery获得FlinkTable结果集,通过flink Table Environment将Flink Table结果集转换成FlinkDataStream。
目前flink主要支持Scalar Functions标量函数、Table Functions表函数和Aggregation Functions聚合函数三种。实现一个Scalar Functions标量函数需要继承ScalarFunction,并且实现一个或者多个evaluation方法。标量函数的行为就是通过evaluation方法来实现的。evaluation方法必须定义为public,命名为eval。通过ScalarFunctions可以对字段进行数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识。
实现一个Table Functions表函数需要继承TableFunction,实现一个或者多个evaluation方法。表函数的行为定义在这些evaluation方法内部,函数名为eval并且必须是public。通过Table Functions表函数我们可以实现表的join获得结果集。
实现一个聚合函数需要继承AggregateFunction,通过调用AggregateFunction函数的createAccumulator()方法来创建一个空accumulator。随后,每个输入行都会调用accumulate()方法来更新accumulator。一旦所有的行被处理了,getValue()方法就会被调用,计算和返回最终的结果。通过聚合函数我们可以实现数据的实时统计。
对获得的源表集合进行遍历,然后根据解析出来的field字段和type类型转换成flink Table可识别的InternalType类型然后注册到flink Table Environment。
对获得的源表集合进行遍历,通过flink Table Environment执行sqlQuery获得Flink Table结果集。
通过flink Table Environment将Flink Table结果集转换成Flink DataStream,即完成了数据的处理。
在一个实施例中,需要将处理后的数据输出,是通过继承org.apache.flink.streaming.api.functions.sink.RichSinkFunction实现flink自定义Sink(结果输出),通过重写RichSinkFunction的open方法初始化下游系统(数据库)接口实例,通过重写RichSinkFunction的invoke方法对flink从数据源获取到的每条数据进行组装和储存处理(输出到数据库),通过重写RichSinkFunction的close方法关闭下游系统(数据库)的接口实例。从而完成了将处理后的数据写入到下游数据库。
本发明的方法通过风格统一的SQL任务提交平台,使用语法简洁、易学易用的SQL语句来完成数据处理过程中的数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识,且在数据处理过程中可以实时查看任务的执行情况、并进行执行统计等,该方法界面友好,方便非专业的工作人员进行数据处理,提高了用户体验,这是本发明的重要发明点。
图2示出了本发明的一种基于Flink SQL的数据处理装置,该装置包括:
获取单元201,获取数据源中的待处理的数据并发送至SQL任务提交平台;更进一步地,所述数据源为分布式发布订阅消息系统Kafka,Kafka具有高吞吐量、持久化、多副本备份、横向扩展能力的优点,当然也可以是其他数据源。
编写单元202,在SQL任务提交平台中编写SQL语句对数据进行标准化的映射,并在SQL语句中定义数据源表、数据目标表,并为数据选择udf函数;选择的合适udf函数用于对数据字段进行清洗、校验、去重、归一化、比对、标识等动作。本发明构建的SQL语句(也称为SQL任务)提交平台为一个WEB应用,这样方便用户这样可以联网便可以进行数据的处理,且WEB的界面统一,方便用户的使用,提高了用户体验。
处理单元203,SQL任务提交平台将编写好的SQL语句提交至Flink集群,Flink集群对所述SQL语句进行解析获得UDF函数、数据源表和数据目标表,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理,并将处理后的数据输出。Flink SQL是Flink实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准SQL语义的开发语言。
在一个实施例中,所述SQL任务提交平台还提供以下功能:
查看所述Kafka上汇集的实时推送和离线推送的数据并计算某个范围内数据的空值率及校验数据的准确率;即通过查看消息队列kafka上汇集了哪些实时推送和离线推送上来的数据(数据探查)。计算某个范围内数据的空值率、校验数据的准确率。
在编写的SQL语句中定义SQL任务的并行度、检查点(checkpoint)、备份点(savepoint)等参数。
以及用于查看SQL任务的执行情况、执行统计和取消SQL任务。例如,通过调用Flink/overview接口查看集群的task manager数量、使用资源slot数量、耗费资源slot数量、集群cpu使用情况、集群内存使用情况、集群job执行情况。通过调用Flink/jobs/jobid接口查看任务的执行时间、执行状态、任务的并行度、拉取数据源的数量、已经处理的数据量等等情况。通过调用Flink/plan接口查看待执行sql的执行计划。通过调用Flink/yarn-cancel接口取消sql任务。通过调用Flink/run接口提交sql启动Flink SQL数据处理程序,即SQL任务提交平台将编写好的SQL语句提交至Flink集群是调用Flink/run接口提交sql启动Flink SQL数据处理程序实现的。
在一个实施例中,所述Flink集群对所述SQL语句进行解析的操作为:所述Flink集群采用apache calcite解析SQL语句,通过SQL Parser解析SQL语句,并基于正则表达式判定SQL语句的类型,并通过JavaCC将SQL语句解析成AST语法树SqlNode,并且结合元数据验证SQL(也可以写作sql)语句是否符合规范;通过对解析出来的语法树SqlNode再进行解析获得udf函数、数据源表和数据目标表的集合。
在一个实施例中,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理的操作为:对获得的udf函数集合进行遍历,通过class.forName方法动态加载class对象注册到flink Table Environment,使用Scalar Functions对字段进行数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识;对获得的源表集合进行遍历,然后根据解析出来的field字段和type类型转换成flink Table可识别的InternalType类型然后注册到flink Table Environment,通过flink Table Environment执行sqlQuery获得FlinkTable结果集,通过flink Table Environment将Flink Table结果集转换成FlinkDataStream。
目前flink主要支持Scalar Functions标量函数、Table Functions表函数和Aggregation Functions聚合函数三种。实现一个Scalar Functions标量函数需要继承ScalarFunction,并且实现一个或者多个evaluation方法。标量函数的行为就是通过evaluation方法来实现的。evaluation方法必须定义为public,命名为eval。通过ScalarFunctions可以对字段进行数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识。
实现一个Table Functions表函数需要继承TableFunction,实现一个或者多个evaluation方法。表函数的行为定义在这些evaluation方法内部,函数名为eval并且必须是public。通过Table Functions表函数我们可以实现表的join获得结果集。
实现一个聚合函数需要继承AggregateFunction,通过调用AggregateFunction函数的createAccumulator()方法来创建一个空accumulator。随后,每个输入行都会调用accumulate()方法来更新accumulator。一旦所有的行被处理了,getValue()方法就会被调用,计算和返回最终的结果。通过聚合函数我们可以实现数据的实时统计。
实现一个聚合函数需要继承AggregateFunction,通过调用AggregateFunction函数的createAccumulator()方法来创建一个空accumulator。随后,每个输入行都会调用accumulate()方法来更新accumulator。一旦所有的行被处理了,getValue()方法就会被调用,计算和返回最终的结果。通过聚合函数我们可以实现数据的实时统计。
对获得的源表集合进行遍历,然后根据解析出来的field字段和type类型转换成flink Table可识别的InternalType类型然后注册到flink Table Environment。
对获得的源表集合进行遍历,通过flink Table Environment执行sqlQuery获得Flink Table结果集。
通过flink Table Environment将Flink Table结果集转换成Flink DataStream,即完成了数据的处理。
在一个实施例中,需要将处理后的数据输出,是通过继承org.apache.flink.streaming.api.functions.sink.RichSinkFunction实现flink自定义Sink(结果输出),通过重写RichSinkFunction的open方法初始化下游系统(数据库)接口实例,通过重写RichSinkFunction的invoke方法对flink从数据源获取到的每条数据进行组装和储存处理(输出到数据库),通过重写RichSinkFunction的close方法关闭下游系统(数据库)的接口实例。从而完成了将处理后的数据写入到下游数据库。
本发明的装置通过风格统一的SQL任务提交平台,使用语法简洁、易学易用的SQL语句来完成数据处理过程中的数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识,且在数据处理过程中可以实时查看任务的执行情况、并进行执行统计等,该方法界面友好,方便非专业的工作人员进行数据处理,提高了用户体验,这是本发明的重要发明点。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的装置。
最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
Claims (11)
1.一种基于Flink SQL的数据处理方法,其特征在于,该方法包括:
获取步骤,获取数据源中的待处理的数据并发送至SQL任务提交平台;
编写步骤,在SQL任务提交平台中编写SQL语句对数据进行标准化的映射,并在SQL语句中定义数据源表、数据目标表,并为数据选择udf函数;
处理步骤,SQL任务提交平台将编写好的SQL语句提交至Flink集群,Flink集群对所述SQL语句进行解析获得UDF函数、数据源表和数据目标表,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理,并将处理后的数据输出。
2.根据权利要求1所述的方法,其特征在于,所述数据源为分布式发布订阅消息系统Kafka。
3.根据权利要求1或2所述的方法,其特征在于,所述SQL任务提交平台还用于:
查看所述Kafka上汇集的实时推送和离线推送的数据并计算某个范围内数据的空值率及校验数据的准确率;
在编写的SQL语句中定义SQL任务的并行度、检查点及备份点;
以及用于查看SQL任务的执行情况、执行统计和取消SQL任务。
4.根据权利要求3所述的方法,其特征在于,所述Flink集群对所述SQL语句进行解析的操作为:所述Flink集群采用apache calcite解析SQL语句,通过SQL Parser解析SQL语句,并基于正则表达式判定SQL语句的类型,并通过JavaCC将SQL语句解析成AST语法树SqlNode,并且结合元数据验证SQL语句是否符合规范;通过对解析出来的语法树SqlNode再进行解析获得udf函数、数据源表和数据目标表的集合。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理的操作为:对获得的udf函数集合进行遍历,通过class.forName方法动态加载class对象注册到flink Table Environment,使用ScalarFunctions对字段进行数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识;对获得的源表集合进行遍历,然后根据解析出来的field字段和type类型转换成flinkTable可识别的InternalType类型然后注册到flink Table Environment,通过flinkTable Environment执行sqlQuery获得Flink Table结果集,通过flink TableEnvironment将Flink Table结果集转换成Flink DataStream。
6.一种基于Flink SQL的数据处理装置,其特征在于,该装置包括:
获取单元,获取数据源中的待处理的数据并发送至SQL任务提交平台;
编写单元,在SQL任务提交平台中编写SQL语句对数据进行标准化的映射,并在SQL语句中定义数据源表、数据目标表,并为数据选择udf函数;
处理单元,SQL任务提交平台将编写好的SQL语句提交至Flink集群,Flink集群对所述SQL语句进行解析获得UDF函数、数据源表和数据目标表,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理,并将处理后的数据输出。
7.根据权利要求6所述的装置,其特征在于,所述数据源为分布式发布订阅消息系统Kafka。
8.根据权利要求6或7所述的装置,其特征在于,所述SQL任务提交平台还用于:
查看所述Kafka上汇集的实时推送和离线推送的数据并计算某个范围内数据的空值率及校验数据的准确率;
在编写的SQL语句中定义SQL任务的并行度、检查点及备份点;
以及用于查看SQL任务的执行情况、执行统计和取消SQL任务。
9.根据权利要求8所述的装置,其特征在于,所述Flink集群对所述SQL语句进行解析的操作为:所述Flink集群采用apache calcite解析SQL语句,通过SQL Parser解析SQL语句,并基于正则表达式判定SQL语句的类型,并通过JavaCC将SQL语句解析成AST语法树SqlNode,并且结合元数据验证SQL语句是否符合规范;通过对解析出来的语法树SqlNode再进行解析获得udf函数、数据源表和数据目标表的集合。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述Flink集群基于UDF函数、数据源表和数据目标表进行数据处理的操作为:对获得的udf函数集合进行遍历,通过class.forName方法动态加载class对象注册到flink Table Environment,使用ScalarFunctions对字段进行数据清洗、数据校验、数据去重、数据归一化、数据比对和数据标识;对获得的源表集合进行遍历,然后根据解析出来的field字段和type类型转换成flinkTable可识别的InternalType类型然后注册到flink Table Environment,通过flinkTable Environment执行sqlQuery获得Flink Table结果集,通过flink TableEnvironment将Flink Table结果集转换成Flink DataStream。
11.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行权利要求1-5之任一的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911318804.5A CN111026779B (zh) | 2019-12-19 | 2019-12-19 | 一种基于Flink SQL的数据处理方法、装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911318804.5A CN111026779B (zh) | 2019-12-19 | 2019-12-19 | 一种基于Flink SQL的数据处理方法、装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111026779A true CN111026779A (zh) | 2020-04-17 |
CN111026779B CN111026779B (zh) | 2023-10-17 |
Family
ID=70210645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911318804.5A Active CN111026779B (zh) | 2019-12-19 | 2019-12-19 | 一种基于Flink SQL的数据处理方法、装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111026779B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666296A (zh) * | 2020-04-28 | 2020-09-15 | 中国平安财产保险股份有限公司 | 基于Flink的SQL数据实时处理方法、装置、计算机设备和介质 |
CN111767433A (zh) * | 2020-06-23 | 2020-10-13 | Oppo(重庆)智能科技有限公司 | 数据处理方法、装置、存储介质以及终端 |
CN112287007A (zh) * | 2020-10-30 | 2021-01-29 | 常州微亿智造科技有限公司 | 基于Flink SQL引擎的工业生产数据实时处理方法、系统 |
CN113111131A (zh) * | 2021-04-30 | 2021-07-13 | 苏州科达科技股份有限公司 | 基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置 |
CN113504912A (zh) * | 2021-07-22 | 2021-10-15 | 浙江大华技术股份有限公司 | 实时任务的处理方法和装置、存储介质及电子装置 |
CN113590094A (zh) * | 2021-07-29 | 2021-11-02 | 国泰君安证券股份有限公司 | 基于Flink的一站式任务开发、部署、运维平台系统、方法、装置、存储器及存储介质 |
CN113590445A (zh) * | 2021-07-30 | 2021-11-02 | 杭州玳数科技有限公司 | 数据处理任务运行的检测方法、计算机设备和存储介质 |
CN113641572A (zh) * | 2021-07-02 | 2021-11-12 | 多点生活(成都)科技有限公司 | 一种基于sql的海量大数据计算开发的调试方法 |
CN113672628A (zh) * | 2021-10-22 | 2021-11-19 | 中航金网(北京)电子商务有限公司 | 数据血缘分析方法、终端设备及介质 |
CN113900944A (zh) * | 2021-10-12 | 2022-01-07 | 北京沃东天骏信息技术有限公司 | 一种应用于Flink SQL的逻辑验证方法和装置 |
CN114116683A (zh) * | 2022-01-27 | 2022-03-01 | 深圳市明源云科技有限公司 | 计算平台的多语法处理方法、设备及可读存储介质 |
CN114297189A (zh) * | 2022-01-10 | 2022-04-08 | 成都国铁电气设备有限公司 | 一种基于Flink流处理的地铁轨道几何检测数据清洗方法 |
CN116450668A (zh) * | 2023-04-20 | 2023-07-18 | 广州飞狮数字科技有限公司 | 一种实时计算任务开发方法及系统 |
CN116894577A (zh) * | 2023-06-21 | 2023-10-17 | 中国人民银行数字货币研究所 | 数据处理方法、装置、设备及存储介质 |
CN117312281A (zh) * | 2023-06-30 | 2023-12-29 | 江苏中科西北星信息科技有限公司 | 一种多源异构数据自动融合方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209700A (zh) * | 2019-05-24 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 一种数据流关联方法、装置、电子设备及存储介质 |
US20190280947A1 (en) * | 2017-10-18 | 2019-09-12 | Proov Systems Ltd. | Software proof-of-concept platform, including simulation of production behavior and/or data |
CN110399384A (zh) * | 2018-04-23 | 2019-11-01 | 阿里巴巴集团控股有限公司 | Udf适配方法、数据处理方法、设备及存储介质 |
-
2019
- 2019-12-19 CN CN201911318804.5A patent/CN111026779B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190280947A1 (en) * | 2017-10-18 | 2019-09-12 | Proov Systems Ltd. | Software proof-of-concept platform, including simulation of production behavior and/or data |
CN110399384A (zh) * | 2018-04-23 | 2019-11-01 | 阿里巴巴集团控股有限公司 | Udf适配方法、数据处理方法、设备及存储介质 |
CN110209700A (zh) * | 2019-05-24 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 一种数据流关联方法、装置、电子设备及存储介质 |
Non-Patent Citations (5)
Title |
---|
BOILEDWATER: "Flink table&Sql中使用Calcite", 《博客园》 * |
CONGTUO7221: "flink通过继承RichSinkFunction实现自定义sink,将数据录入数据库", 《HTTPS://BLOG.CSDN.NET/CONGTUO7221/ARTICLE/DETAILS/100373727》 * |
白习习_C942: "Flink学习----自定义Data Sink", 《EVENTS.JIANSHU.IO/P/682A51F11OA9》 * |
袋鼠云DTSTACK: "用短平快的方式告诉你:Flink-SQL的扩展实现", 《博客园》 * |
飞不高的老鸟: "flink学习笔记一自定义Sink函数", 《HTTPS://WWW.JIANSHU.COM/P/3FBB22726DD7》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666296A (zh) * | 2020-04-28 | 2020-09-15 | 中国平安财产保险股份有限公司 | 基于Flink的SQL数据实时处理方法、装置、计算机设备和介质 |
CN111767433A (zh) * | 2020-06-23 | 2020-10-13 | Oppo(重庆)智能科技有限公司 | 数据处理方法、装置、存储介质以及终端 |
CN112287007A (zh) * | 2020-10-30 | 2021-01-29 | 常州微亿智造科技有限公司 | 基于Flink SQL引擎的工业生产数据实时处理方法、系统 |
CN113111131A (zh) * | 2021-04-30 | 2021-07-13 | 苏州科达科技股份有限公司 | 基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置 |
CN113641572A (zh) * | 2021-07-02 | 2021-11-12 | 多点生活(成都)科技有限公司 | 一种基于sql的海量大数据计算开发的调试方法 |
CN113641572B (zh) * | 2021-07-02 | 2023-06-13 | 多点生活(成都)科技有限公司 | 一种基于sql的海量大数据计算开发的调试方法 |
CN113504912A (zh) * | 2021-07-22 | 2021-10-15 | 浙江大华技术股份有限公司 | 实时任务的处理方法和装置、存储介质及电子装置 |
CN113504912B (zh) * | 2021-07-22 | 2024-06-18 | 浙江大华技术股份有限公司 | 实时任务的处理方法和装置、存储介质及电子装置 |
CN113590094A (zh) * | 2021-07-29 | 2021-11-02 | 国泰君安证券股份有限公司 | 基于Flink的一站式任务开发、部署、运维平台系统、方法、装置、存储器及存储介质 |
CN113590445A (zh) * | 2021-07-30 | 2021-11-02 | 杭州玳数科技有限公司 | 数据处理任务运行的检测方法、计算机设备和存储介质 |
CN113900944A (zh) * | 2021-10-12 | 2022-01-07 | 北京沃东天骏信息技术有限公司 | 一种应用于Flink SQL的逻辑验证方法和装置 |
CN113672628A (zh) * | 2021-10-22 | 2021-11-19 | 中航金网(北京)电子商务有限公司 | 数据血缘分析方法、终端设备及介质 |
CN114297189A (zh) * | 2022-01-10 | 2022-04-08 | 成都国铁电气设备有限公司 | 一种基于Flink流处理的地铁轨道几何检测数据清洗方法 |
CN114297189B (zh) * | 2022-01-10 | 2024-05-10 | 成都国铁电气设备有限公司 | 一种基于Flink流处理的地铁轨道几何检测数据清洗方法 |
CN114116683A (zh) * | 2022-01-27 | 2022-03-01 | 深圳市明源云科技有限公司 | 计算平台的多语法处理方法、设备及可读存储介质 |
CN116450668A (zh) * | 2023-04-20 | 2023-07-18 | 广州飞狮数字科技有限公司 | 一种实时计算任务开发方法及系统 |
CN116894577A (zh) * | 2023-06-21 | 2023-10-17 | 中国人民银行数字货币研究所 | 数据处理方法、装置、设备及存储介质 |
CN117312281A (zh) * | 2023-06-30 | 2023-12-29 | 江苏中科西北星信息科技有限公司 | 一种多源异构数据自动融合方法、系统、设备及存储介质 |
CN117312281B (zh) * | 2023-06-30 | 2024-05-24 | 江苏中科西北星信息科技有限公司 | 一种多源异构数据自动融合方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111026779B (zh) | 2023-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111026779A (zh) | 一种基于Flink SQL的数据处理方法、装置、存储介质 | |
US9996592B2 (en) | Query relationship management | |
US9305109B2 (en) | Method and system of adapting a data model to a user interface component | |
US9576037B2 (en) | Self-analyzing data processing job to determine data quality issues | |
CN106104533B (zh) | 处理大型数据储存库中的数据集 | |
Dimou et al. | Assessing and refining mappingsto rdf to improve dataset quality | |
US20150234642A1 (en) | User Interfaces of Application Porting Software Platform | |
JP2020522790A (ja) | 異種にプログラムされたデータ処理システムの自動依存性アナライザ | |
KR20170031750A (ko) | 계보 정보의 관리 | |
US20120331010A1 (en) | Systems And Methods For Performing A Query On A Distributed Database | |
US11269880B2 (en) | Retroreflective clustered join graph generation for relational database queries | |
CN112416369B (zh) | 一种面向异构混合环境的智能化部署方法 | |
CN112434046B (zh) | 一种数据血缘分析方法、装置、设备及存储介质 | |
CN110489446B (zh) | 基于分布式数据库的查询方法及装置 | |
CN115686850A (zh) | 基于Spark的目标任务的处理方法、装置和电子设备 | |
CN114691658A (zh) | 一种数据回溯方法、装置、电子设备及存储介质 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
CN113590094A (zh) | 基于Flink的一站式任务开发、部署、运维平台系统、方法、装置、存储器及存储介质 | |
CN108255852B (zh) | Sql执行方法及装置 | |
CN112632082B (zh) | 一种创建Flink作业的方法及装置 | |
CN108932225B (zh) | 用于将自然语言需求转换成为语义建模语言语句的方法和系统 | |
US20200356885A1 (en) | Service management in a dbms | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
US20140372488A1 (en) | Generating database processes from process models | |
US20220171775A1 (en) | Retroreflective join graph generation for relational database queries |
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 |