CN110851514B - 基于flink的etl处理方法 - Google Patents
基于flink的etl处理方法 Download PDFInfo
- Publication number
- CN110851514B CN110851514B CN201910985841.5A CN201910985841A CN110851514B CN 110851514 B CN110851514 B CN 110851514B CN 201910985841 A CN201910985841 A CN 201910985841A CN 110851514 B CN110851514 B CN 110851514B
- Authority
- CN
- China
- Prior art keywords
- sql
- flink
- etl
- syntax
- job
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种基于FLINK的ETL处理方法:包括以下步骤:1)、输入定义ETL任务的结构化查询语言SQL;执行步骤2;2)、控制程序解析SQL。本发明通过SQL定义ETL的方式ETL降低任务的开发成本,可以让业务人员能够直接定义ETL任务,而不用开发人员介入处理,从而降低执行ETL任务的成本,在数据处理过程中,会有大量不同的ETL任务需要执行,从而避免开发人员针对每一个ETL任务都需要开发一个新的应用程序。
Description
技术领域
本发明涉及一种ETL系统,具体涉及一种基于FLINK的ETL处理方法。
背景技术
ETL是构建数据仓库中的必要环节,ETL是常用的数据过程。
现有的ETL方案如logstash,需要用户学习logstash特有的配置格式,需要学习ruby脚本语言;通过spark,flink等计算引擎直接构建ETL任务的方案中需要用户开发新的应用程序才能完成。现有的方案问题在与ETL任务的构建需要开发人员介入,而ETL任务的逻辑还需要业务人员定义,会带来较大的成本。
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。Flink支持有界或无界数据流的数据流API、用于有界数据集的数据集API、表API。
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
因此,需要对现有技术进行改进。
发明内容
本发明要解决的技术问题是提供一种高效的基于FLINK的ETL处理方法。
为解决上述技术问题,本发明提供一种基于FLINK的ETL处理方法:包括以下步骤:
1)、输入定义ETL任务的结构化查询语言SQL;执行步骤2;
2)、控制程序解析SQL。
作为对本发明基于FLINK的ETL处理方法的改进:
步骤2包括以下步骤:
2.1)、验证SQL是否语法正确;如正确,执行步骤2.2;如不正确,返回用户SQL不正确的提示信息;
2.2)、对SQL进行语法解析;执行步骤2.3;
2.3)、构建flink运行配置。
作为对本发明基于FLINK的ETL处理方法的进一步改进:
步骤2.1包括:通过Antlr定义的SQL解析器解析SQL来验证SQL是否符合SQL语法定义;如符合,执行步骤2.2;如不符合,返回用户SQL不正确的提示信息。
作为对本发明基于FLINK的ETL处理方法的进一步改进:
步骤2.2包括:从SQL中提取出数据源配置信息、数据目的配置信息和数据变换配置信息。
作为对本发明基于FLINK的ETL处理方法的进一步改进:
步骤2.3包括:
2.31)、将数据源配置信息、数据目的配置信息和数据变换配置信息拼装成为flink的StreamGraph;执行步骤2.32;
2.32)、通过flink API将StreamGraph提交到flink集群上执行。
作为对本发明基于FLINK的ETL处理方法的进一步改进:
步骤2.31中拼装过程是通过调用flink提供的flink API来拼接。
作为对本发明基于FLINK的ETL处理方法的进一步改进:
在步骤2.32中,提交过程中会指定job运行错误重试的策略,也会指定运行使用的资源情况。
作为对本发明基于FLINK的ETL处理方法的进一步改进:
Antlr是开源语法分析器,SQL语法定义是在标准SQL的基础上,增加了createwith语法和时间窗口标记语法。
本发明基于FLINK的ETL处理方法的技术优势为:
本发明通过SQL定义ETL的方式ETL降低任务的开发成本,可以让业务人员能够直接定义ETL任务,而不用开发人员介入处理,从而降低执行ETL任务的成本,在数据处理过程中,会有大量不同的ETL任务需要执行,从而避免开发人员针对每一个ETL任务都需要开发一个新的应用程序。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为本发明基于FLINK的ETL处理方法的流程示意图;
图2为本发明基于FLINK的ETL系统的模块结构示意图;
图3为构建的streamGraph运行图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。
实施例1、基于FLINK的ETL处理方法,如图1-3所示,包括以下步骤:
1)、输入定义ETL任务的结构化查询语言SQL;执行步骤2;
2)、控制程序解析SQL:
2.1)、验证SQL是否语法正确,如正确,执行步骤2.2;如不正确,会返回用户SQL不正确的提示信息
通过Antlr定义的SQL解析器解析SQL来验证SQL是否符合SQL语法定义。
Antlr是开源语法分析器,SQL语法定义是在标准SQL的基础上,增加了createtable with语法。对现有的SQL语法做拓展过程中会形成新SQL语法定义文件,Antlr会根据输入的SQL和拓展后的SQL语法定义文件来检查输入的SQL是否正确,如果符合拓展后的SQL定义就继续下述流程。如果输入的SQL不符合拓展后的SQL语法定义会产生错误,发现错误之后就提示用户输入SQL是错误的。
SQL是现有的技术,create table with是对现有的SQL语法所做的拓展。现有的SQL语法如下:
create table表名称
(
列名1数据类型
列名2数据类型
……
)
拓展后的SQL语法的如下:
create table表名称
(
列名1数据类型
列名2数据类型
……
)with(
数据存储系统
针对当前数据存储类型的具体配置
)
数据存储系统现在可以支持的是kafka,elasticsearch,后续可以通过插件的形式的支持其它的数据存储系统。
Kafka是一种高吞吐量的分布式发布订阅消息系统,具有很高的吞吐量,能够在系统内部缓存大量数据。elasticsearch是一个全文搜索引擎,能够存储和检索数据。这两个组件都能够作为数据存储系统使用。
2.2)、对SQL进行语法解析;从SQL中提取出数据源配置信息、数据目的配置信息和数据变换配置信息;执行步骤2.3;
2.3)、构建flink运行配置:
2.31)、将解析过了的SQL拼装成为flink的StreamGraph:
SQL解析完毕之后,会得到数据源配置信息、数据目的配置信息和数据变换配置信息。这三种配置信息会用来拼装成为flink的StreamGraph,拼装过程是通过调用flink提供的flinkAPI来自动拼接。
2.32)、得到StreamGraph之后,控制模块会通过flink API将StreamGraph提交到flink集群上执行。在提交过程中会指定job运行错误重试的策略,也会指定运行使用的资源情况。
job运行错误重试的策略:现在可以指定的策略是发生了错误后job重试的次数和每次重试之间的时间间隔,重试的次数是指出现问题后job重启自己的最大次数,重启达到最大次数会将当前job判断为失败,并关闭掉当前job。每次重试之间的时间间隔指的是如果job刚刚重启立刻发生错误的话,下次重启之间等待的时间。例如指定重试策略为重试30次,每次重试的间隔是60秒。
通过控制程序和flink集群做交互,这样就是实现了通过SQL定义ETLJob的全过程。
处理流程图如图1所示;程序模块结构图如图2所示。
具体实例如下所示:
1)、输入结构化查询语言SQL如下:
create table source1(
id int,
destHostName string,
srcAddress string,
destAddress string
)
With(
type=’kafka’,
topic=’com.dbapp.rawevent’
);
create table sink(
id int,
destHostName string,
destAddress string)
with(
type=’kafka’,
topic=’com.dbapp.rawevent’
);
insert into sink
select id,destHostName,destAddress from source1 where srcAddress=’1.1.1.1’;
2.1)、通过语法解析器验证SQL的正确性;
2.2)、解析上述输入的SQL脚本,提取出flink的Source和Sink配置信息和对数据流的变换操作信息
通过Source,sink的配置信息和数据流变换操作信息,得到如下配置信息,解析结果如下:
2.31)、根据解析结果构建StreamGraph,构建的streamGraph如下:
streamGraph运行图如图3所示;
2.32)、控制程序提交streamGraph到flink集群上运行。
最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。
Claims (2)
1.基于FLINK的ETL处理方法,其特征在于:包括以下步骤:
1)、输入定义ETL任务的结构化查询语言SQL;执行步骤2);
2)、控制程序解析SQL;
包括以下步骤:
2.1)、验证SQL是否语法正确;如正确,执行步骤2.2;如不正确,返回用户SQL不正确的提示信息;
通过Antlr定义的SQL解析器解析SQL来验证SQL是否符合SQL语法定义;
Antlr是开源语法分析器,SQL语法定义是在标准SQL的基础上,增加了create tablewith 语法;对现有的SQL语法做拓展过程中会形成新 SQL语法定义文件,Antlr会根据输入的SQL和拓展后的SQL语法定义文件来检查输入的SQL是否正确,如果符合拓展后的SQL定义就继续下述流程;如果输入的SQL不符合拓展后的SQL语法定义会产生错误,发现错误之后就提示用户输入SQL是错误的;
2.2)、对SQL进行语法解析;从SQL中提取出数据源配置信息、数据目的配置信息和数据变换配置信息;执行步骤2.3);
2.3)、构建flink 运行配置:
2.31)、将解析过了的SQL拼装成为flink的 StreamGraph:
SQL解析完毕之后,会得到数据源配置信息、数据目的配置信息和数据变换配置信息;这三种配置信息会用来拼装成为flink的StreamGraph,拼装过程是通过调用flink提供的flink API来自动拼接;
2.32)、得到StreamGraph 之后,控制模块会通过flink API 将StreamGraph 提交到flink集群上执行;在提交过程中会指定job运行错误重试的策略,也会指定运行使用的资源情况;
job运行错误重试的策略:现在指定的策略是发生了错误后 job 重试的次数和每次重试之间的时间间隔,重试的次数是指出现问题后job重启自己的最大次数,重启达到最大次数会将当前job 判断为失败,并关闭掉当前job;每次重试之间的时间间隔指的是如果job刚刚重启立刻发生错误的话,下次重启之间等待的时间;通过控制程序和flink 集群做交互,这样就是实现了通过SQL定义ETL Job的全过程。
2.根据权利要求1所述的基于FLINK的ETL处理方法,其特征在于:
Antlr是开源语法分析器,SQL语法定义是在标准SQL的基础上,增加了create with 语法和时间窗口标记语法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910985841.5A CN110851514B (zh) | 2019-10-17 | 2019-10-17 | 基于flink的etl处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910985841.5A CN110851514B (zh) | 2019-10-17 | 2019-10-17 | 基于flink的etl处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851514A CN110851514A (zh) | 2020-02-28 |
CN110851514B true CN110851514B (zh) | 2022-10-21 |
Family
ID=69597510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910985841.5A Active CN110851514B (zh) | 2019-10-17 | 2019-10-17 | 基于flink的etl处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851514B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287007B (zh) * | 2020-10-30 | 2022-02-11 | 常州微亿智造科技有限公司 | 基于Flink SQL引擎的工业生产数据实时处理方法、系统 |
CN114385136B (zh) * | 2021-12-29 | 2022-11-22 | 武汉达梦数据库股份有限公司 | 一种Flink框架运行ETL的流程分解方法和装置 |
CN114385140B (zh) * | 2021-12-29 | 2023-03-24 | 武汉达梦数据库股份有限公司 | 基于flink框架的ETL流程组件多个不同输出的处理方法与装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799622A (zh) * | 2012-06-19 | 2012-11-28 | 北京大学 | 基于MapReduce扩展框架的分布式SQL查询方法 |
CN103942234A (zh) * | 2013-01-21 | 2014-07-23 | 中国电信股份有限公司 | 对多个异构数据库操作的方法、中间件装置及系统 |
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
CN108519914A (zh) * | 2018-04-09 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 大数据计算方法、系统和计算机设备 |
CN109522341A (zh) * | 2018-11-27 | 2019-03-26 | 北京京东金融科技控股有限公司 | 实现基于sql的流式数据处理引擎的方法、装置、设备 |
CN110046169A (zh) * | 2019-03-12 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 基于结构化查询语言语句的计算服务实现方案 |
CN110222091A (zh) * | 2019-06-10 | 2019-09-10 | 帷幄匠心科技(杭州)有限公司 | 一种海量数据实时统计分析方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9779133B2 (en) * | 2014-11-25 | 2017-10-03 | Sap Se | Contextual debugging of SQL queries in database-accessing applications |
US10503706B2 (en) * | 2015-06-01 | 2019-12-10 | Sap Se | Deferred data definition statements |
US10311047B2 (en) * | 2016-10-19 | 2019-06-04 | Salesforce.Com, Inc. | Streamlined creation and updating of OLAP analytic databases |
CN109684319B (zh) * | 2018-12-25 | 2021-06-04 | 北京小米移动软件有限公司 | 数据清洗系统、方法、装置及存储介质 |
CN109684352B (zh) * | 2018-12-29 | 2020-12-01 | 江苏满运软件科技有限公司 | 数据分析系统、方法、存储介质及电子设备 |
CN109951463A (zh) * | 2019-03-07 | 2019-06-28 | 成都古河云科技有限公司 | 一种基于流计算和新型列式存储的物联网大数据分析方法 |
CN110083600A (zh) * | 2019-04-04 | 2019-08-02 | 网宿科技股份有限公司 | 一种日志收集处理的方法、装置、计算设备及存储介质 |
CN110309108A (zh) * | 2019-05-08 | 2019-10-08 | 江苏满运软件科技有限公司 | 数据采集及储存方法、装置、电子设备、存储介质 |
-
2019
- 2019-10-17 CN CN201910985841.5A patent/CN110851514B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799622A (zh) * | 2012-06-19 | 2012-11-28 | 北京大学 | 基于MapReduce扩展框架的分布式SQL查询方法 |
CN103942234A (zh) * | 2013-01-21 | 2014-07-23 | 中国电信股份有限公司 | 对多个异构数据库操作的方法、中间件装置及系统 |
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
CN108519914A (zh) * | 2018-04-09 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 大数据计算方法、系统和计算机设备 |
CN109522341A (zh) * | 2018-11-27 | 2019-03-26 | 北京京东金融科技控股有限公司 | 实现基于sql的流式数据处理引擎的方法、装置、设备 |
CN110046169A (zh) * | 2019-03-12 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 基于结构化查询语言语句的计算服务实现方案 |
CN110222091A (zh) * | 2019-06-10 | 2019-09-10 | 帷幄匠心科技(杭州)有限公司 | 一种海量数据实时统计分析方法 |
Non-Patent Citations (2)
Title |
---|
"Benchmarking Streaming Computation Engines: Storm, Flink and Spark Streaming";Sanket Chintapalli 等;《2016 IEEE International Parallel and Distributed Processing Symposium Workshops》;20160804;第1789-1792页 * |
"关联大数据管理技术:挑战、对策与实践";沈志宏 等;《数据分析与知识发现》;20180131;第9-20页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110851514A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10162612B2 (en) | Method and apparatus for inventory analysis | |
US9489418B2 (en) | Processing database queries embedded in application source code from within integrated development environment tool | |
US9767147B2 (en) | Method of converting query plans to native code | |
CN110851514B (zh) | 基于flink的etl处理方法 | |
CN111949541B (zh) | 多源数据库语句检查方法及装置 | |
US8392880B2 (en) | Rapid application development for database-aware applications | |
US8566793B2 (en) | Detecting and displaying errors in database statements within integrated development environment tool | |
US9047337B2 (en) | Database connectivity and database model integration within integrated development environment tool | |
US20130097593A1 (en) | Computer-Guided Holistic Optimization of MapReduce Applications | |
US20200104241A1 (en) | Behavior driven development integration with test tool | |
CN110825767A (zh) | 数据查询方法、平台、设备及存储介质 | |
US6374261B1 (en) | Expert system knowledge-deficiency reduction through automated database updates from semi-structured natural language documents | |
CN113901083B (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
CN111309751A (zh) | 大数据处理方法及装置 | |
US20090119641A1 (en) | Programming language extensions in structured queries | |
CN112783867A (zh) | 为满足实时大数据业务需求的数据库优化方法及云服务器 | |
CN113934786A (zh) | 一种构建统一etl的实施方法 | |
US11921763B2 (en) | Methods and systems to parse a software component search query to enable multi entity search | |
CN111694738B (zh) | 一种sql测试脚本的生成方法 | |
CN115407997A (zh) | 基于低代码的敏捷开发应用方法及系统 | |
CN114547083A (zh) | 数据处理方法、装置及电子设备 | |
CN114461454A (zh) | 数据恢复方法、装置、存储介质及电子设备 | |
CN113836164A (zh) | 统一sql的方法、系统、设备及介质 | |
Xie et al. | CodeFuse-Query: A Data-Centric Static Code Analysis System for Large-Scale Organizations | |
Liu et al. | ConFL: Constraint-guided Fuzzing for Machine Learning Framework |
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 |