CN112100147B - 基于Flink实现Binlog到HIVE的实时采集方法和系统 - Google Patents
基于Flink实现Binlog到HIVE的实时采集方法和系统 Download PDFInfo
- Publication number
- CN112100147B CN112100147B CN202010729412.4A CN202010729412A CN112100147B CN 112100147 B CN112100147 B CN 112100147B CN 202010729412 A CN202010729412 A CN 202010729412A CN 112100147 B CN112100147 B CN 112100147B
- Authority
- CN
- China
- Prior art keywords
- data
- information
- hive
- binlog
- flink
- 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
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000005192 partition Methods 0.000 claims abstract description 51
- 230000005540 biological transmission Effects 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 16
- 230000001960 triggered effect Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 241000287219 Serinus canaria Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file 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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于Flink实现Binlog到HIVE的实时数据采集方法和系统,方法包括:建立Flink Job;在Flink Job的初始化阶段配置并订阅数据源的Binlog增量日志信息;在Flink Job的数据读取阶段对Binlog增量日志信息进行解析,以转换为数据对象;在Flink Job的数据写入阶段,根据数据库信息和需要订阅的Binlog的表名信息获取表结构信息,并根据表结构信息创建HIVE分区表,获取HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入。本发明基于Flink计算框架,通过采集数据源的Binlog增量日志信息,并解析日志信息将数据通过分布式文件系统的方式写入到HIVE数据源之中,同时支持多个HIVE数据库表的同时写入操作,从而实现了高性能、低延迟的流式数据处理方式,实现Binlog到HIVE的数据的实时采集。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种基于Flink实现Binlog到HIVE的实时数据采集方法、一种基于Flink实现Binlog到HIVE的实时数据采集系统、一种电子设备和非临时性计算机可读存储介质。
背景技术
目前的数据采集存在以下问题:单一的canal组件仅提供了MySQL数据库的Binlog增量日志解析的功能,无法满足数据实时采集到HIVE数据源;对HIVE数据源的写入是通过JDBC(Java Database Connectivity,Java数据库连接)的方式将数据插入到目标表,在大数据情况下无法保证数据的吞吐量;Binlog记录了数据库中所有表的增量日志,不同表结构的数据信息无法写入到对应的HIVE表中;数据同步是批处理的、非流式的,无法保证数据的低延迟性、实时性,无法保证任务的数据续传。
发明内容
本发明为解决上述技术问题,提供了一种基于Flink实现Binlog到HIVE的实时数据采集方法,基于Flink计算框架,通过采集数据源的Binlog增量日志信息,并解析日志信息将数据通过分布式文件系统的方式写入到HIVE数据源之中,同时,支持多个HIVE数据库表的同时写入操作,从而实现了高性能、低延迟的流式数据处理方式,实现Binlog到HIVE的数据的实时采集。
本发明采用的技术方案如下:
一种基于Flink实现Binlog到HIVE的实时数据采集方法,包括以下步骤:建立所述Flink Job,并在所述Flink Job的初始化阶段,配置并订阅数据源的Binlog增量日志信息;在所述Flink Job的数据读取阶段,对所述Binlog增量日志信息进行解析,以转换为数据对象,其中,所述数据对象包括:数据库信息和表名信息;在所述Flink Job的数据写入阶段,根据所述数据库信息和需要订阅的Binlog的表名信息获取表结构信息,并根据所述表结构信息创建HIVE分区表,以及获取所述HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入。
根据本发明的一个实施例,在所述Flink Job的初始化阶段,还包括:通过所述Flink Job的CheckPoint功能获取上一次数据采集时保存的偏移量信息;对所述Binlog日志订阅的位置进行修正,以实现数据续传。
根据本发明的一个实施例,在所述Flink Job的数据读取阶段还包括:通过所述Flink Job的CheckPoint记录对所述Binlog增量日志信息进行解析时的日志消费的偏移量,以支持任务在下一次开始时进行数据续传。
根据本发明的一个实施例,所述表结构信息包括:表字段内容、字段类型,所述数据库信息包括:数据库名和数据库连接信息,所述方法还包括:根据所述数据库信息、所述表名信息、所述表结构信息对Binlog采集的所有表建立关联关系,将同一数据库名下相同表结构的表划分为同一组。
根据本发明的一个实施例,所述根据所述表结构信息创建HIVE分区表,以及获取所述HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入包括:配置所述HIVE数据源信息,其中,所述HIVE数据源信息包括:HIVE JDBC连接信息、HIVE库名、分区字段、HDFS(Hadoop Distributed File System,分布式文件系统)配置信息;通过所述HIVE JDBC创建HIVE分区表,并获取分区表所对应的分布式文件系统的文件路径;根据待传输的所述数据对象、所述HDFS配置信息、所述文件路径,将所述数据写入分布式文件系统中,其中,写入的数据暂存于所述文件路径下的临时目录之中。
根据本发明的一个实施例,当所述CheckPoint功能被触发时,将所述临时目录中暂存的数据对象转移至所述HIVE分区表的文件路径中。
一种基于Flink实现Binlog到HIVE的实时数据采集系统,包括:建立组件,用于建立所述Flink Job,并在所述Flink Job的初始化阶段,配置并订阅数据源的Binlog增量日志信息;数据读取组件,用于在所述Flink Job的数据读取阶段,对所述Binlog增量日志信息进行解析,以转换为数据对象,其中,所述数据对象包括:数据库信息和表名信息;分表管理组件,用于在所述Flink Job的数据写入阶段,根据所述数据库信息和需要订阅的Binlog的表名信息获取表结构信息;数据写入组件,用于根据所述表结构信息创建HIVE分区表,以及获取所述HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入。
一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述的基于Flink实现Binlog到HIVE的实时数据采集方法。
一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现上述的基于Flink实现Binlog到HIVE的实时数据采集方法。
本发明的有益效果:
本发明基于Flink计算框架下实现流式数据处理,降低了数据传输的延迟,实现了数据一致性语义;通过直接写入分布式文件系统的方式,实现HIVE数据源的高性能数据写入;通过管理Binlog采集的所有表信息,满足了不同表结构的数据信息写入到对应的HIVE表中。
附图说明
图1为根据本发明实施例的基于Flink实现Binlog到HIVE的实时数据采集方法的流程图;
图2为根据本发明一个具体实施例的数据读取的逻辑示意图;
图3为根据本发明一个具体实施例的数据写入的逻辑示意图;
图4为根据本发明一个具体实施例的数据读取组件的配置示意图;
图5为根据本发明一个具体实施例的数据写入组件的配置示意图;
图6为根据本发明实施例的基于Flink实现Binlog到HIVE的实时数据采集系统的方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为根据本发明实施例的基于Flink实现Binlog到HIVE的实时数据采集方法的流程图。
如图1所示,本发明实施例的基于Flink实现Binlog到HIVE的实时数据采集方法可包括以下步骤:
S1,建立Flink Job,并在Flink Job的初始化阶段,配置并订阅数据源的Binlog增量日志信息。
S2,在Flink Job的数据读取阶段,对Binlog增量日志信息进行解析,以转换为数据对象,其中,数据对象包括:数据库信息和表名信息。
根据本发明的一个实施例,在Flink Job的初始化阶段,还包括:通过Flink Job的CheckPoint功能获取上一次数据采集时保存的偏移量信息;对Binlog日志订阅的位置进行修正,以实现数据续传
进一步地,根据本发明的一个实施例,在Flink Job的数据读取阶段还包括:通过Flink Job的CheckPoint记录对Binlog增量日志信息进行解析时的日志消费的偏移量,以支持任务在下一次开始时进行数据续传。
具体而言,通过数据读取组件BinlogReader,其具体实现是BinlogInputFormat。BinlogInputFormat是对Flink API接口RichInputFormat的具体实现,实现Binlog增量日志信息的订阅与消费、日志信息到数据对象的转化、数据传输到RichOutputFormat,并记录Binlog日志消费时的偏移量。通过Flink的CheckPoint快照功能,对记录的偏移量信息进行保存,保证任务下一次启动时可进行数据续传。
作为一个示例,如图2所示,BinlogReader是数据读取组件,使用BinlogInputFormat对Flink API的RichInputFormat类中的接口进行实现,通过openInputFormat、nextRecord、snapshotState,initializeState等方法实现数据读取组件的功能要求。openInputFormat方法通过配置并启动canal,实现对Binlog增量日志的订阅与消费。initializeState会在openInputFormat方法执行前,通过读取CheckPoint获得偏移量信息,实现对Binlog增量日志偏移量的修正。nextRecord是一个流式数据处理的方法,对Binlog日志信息进行解析转化为一个数据对象,数据对象会传输到Flink API的RichOutputFormat的具体实现中,对Binlog日志信息进行解析时会将日志消费时的偏移量进行记录,数据对象中包含且不限于以下信息内容:数据库名(schemaName)、表名(tableName)、字段变更前内容(beforeColumns)、字段变更后内容(afterColumns)。根据记录的日志消费的偏移量信息,通过snapshotState方法异步地将偏移量信息保存到FlinkCheckPoint之中,以支持任务在下一次开始时进行数据续传。
S3,在Flink Job的数据写入阶段,根据数据库信息和需要订阅的Binlog的表名信息获取表结构信息,并根据表结构信息创建HIVE分区表,以及获取HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入。。
根据本发明的一个实施例,表结构信息包括:表字段内容、字段类型,所述数据库信息包括:数据库名和数据库连接信息,上述的方法还包括:根据数据库信息、表名信息、表结构信息对Binlog采集的所有表建立关联关系,将同一数据库名下相同表结构的表划分为同一组。
具体而言,通过分表管理组件Distributer管理Binlog采集的所有表信息,将同一数据库名下相同表结构的表划分为一组,组中记录了相同表结构下的数据库名+表名。当HiveWriter在写入数据时提供缓存查询支持,可通过数据库名与表名关联得知表结构信息。
作为一个具体示例,根据读取组件中配置并启动canal时的信息,相应的得知数据库连接信息与需要订阅Binlog的表名信息。根据数据库连接信息与表名信息,通过JDBC连接的方式获取表结构信息,包含表字段内容、字段类型等等。根据获取的数据库信息、表名信息、表结构信息,对Binlog采集的所有表建立关联关系,以同一库名下相同表结构的表为一组进行数据缓存。提供查询支持,通过数据库名(schemaName)和表名(tableName),可获得相应的表结构信息:包含字段内容与字段类型等等。
根据本发明的一个实施例,根据表结构信息创建HIVE分区表,以及获取HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入,包括:配置HIVE数据源信息,其中,HIVE数据源信息包括:HIVE JDBC连接信息、HIVE库名、分区字段、HDFS配置信息;通过HIVE JDBC创建HIVE分区表,并获取分区表所对应的分布式文件系统的文件路径;根据待传输的数据对象、HDFS配置信息、文件路径,将数据写入分布式文件系统中,其中,写入的数据暂存于文件路径下的临时目录之中。
进一步地,根据本发明的一个实施例,当CheckPoint功能被触发时,将临时目录中暂存的数据对象转移至HIVE分区表的文件路径中。
具体而言,通过数据写入组件HiveWriter中的HiveOutputFormat对Flink API接口RichOutputFormat的具体实现,实现读取从BinlogReader中传输的数据对象、通过数据对象中数据库名(schemaName)和表名(tableName)获得表结构信息、通过HIVE JDBC创建表和分区字段、通过HDFS文件系统写入数据、通过Flink CheckPoint实现数据一致性。
作为一个具体示例,如图3所示,使用数据写入组件HiveWriter中的HiveOutputFormat对Flink API的RichOutputFormat类中的接口进行实现,通过open、writeRecord、snapshotState等方法实现数据写入组件的功能要求。其中,open方法配置了HIVE数据源的相关信息,包含且不限于HIVE JDBC连接信息、HIVE库名、分区字段、HDFS配置信息等等。writeRecord是一个流式数据处理的方法,对BinlogReader所传输的数据对象进行读取。根据数据对象中的内容数据库名(schemaName)和表名(tableName),并根据上述的提供查询支持可获取该数据对象对应的表结构信息。根据表结构信息,结合HIVE数据源的连接信息、HIVE库名、分区字段等信息,通过HIVE JDBC的方式创建HIVE分区表。通过HIVEJDBC查询“desc formatted”获取分区表所对应HDFS文件系统的文件路径。通过HDFS配置信息与分区表的HDFS文件系统的文件路径,实现将BinlogReader所传输的数据对象写入到HDFS文件系统,写入的所有数据暂存于文件路径下一个临时目录之中。snapshotState方法在Flink CheckPoint触发时会被调用,最终将临时目录下的所有数据转移到分区表的文件路径之下,此时HIVE数据源对应的分区表下即可查询到写入的数据。Flink CheckPoint保证了一致性语义,进而保证了采集任务的数据一致性。
作为本发明的一个具体实施例,通过在界面配置数据同步任务的信息并可相应地使用BinlogReader、Distributer和HiveWriter组件。图4为BinlogReader的相应设置,如图4所示,展示了Binlog采集增量日志,并支持多个不同表结构。图5为HiveWriter的相应配置,如图5所示,展示了HiveWriter会根据选择的HIVE数据源得到HIVE JDBC连接信息、HIVE库名、分区字段、HDFS配置信息等等,并根据schemaName、tableName创建对应的HIVE表;如图5所示的HiveWriter组件会以写入文件系统的方式,将数据对象写入到对应的HIVE表中,以简单的可视化界面配置,即可创建对应的Binlog到HIVE的实时采集任务。
综上所述,本发明基于Flink计算框架下实现流式数据处理,降低了数据传输的延迟并实现了数据一致性语义;通过直接写入HDFS文件系统的方式,实现HIVE数据源的高性能数据写入;通过自定义的Distributer组件管理Binlog采集的所有表信息,满足了不同表结构的数据信息写入到对应的HIVE表中。
图6为根据本发明实施例的基于Flink实现Binlog到HIVE的实时数据采集系统的方框图。
如图6所示,本发明的基于Flink实现Binlog到HIVE的实时数据采集系统可包括:建立组件10、数据读取组件20、分表管理组件20和数据写入组件40。
其中,建立组件10用于建立Flink Job,并在Flink Job的初始化阶段,配置并订阅数据源的Binlog增量日志信息。数据读取组件20用于在Flink Job的数据读取阶段,对Binlog增量日志信息进行解析,以转换为数据对象,其中,数据对象包括:数据库信息和表名信息。分表管理组件30用于在Flink Job的数据写入阶段,根据数据库信息和需要订阅的Binlog的表名信息获取表结构信息。数据写入组件40用于根据表结构信息创建HIVE分区表,以及获取HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入。
根据本发明的一个实施例,数据读取组件20还用于:通过Flink Job的CheckPoint功能获取上一次数据采集时保存的偏移量信息;对Binlog日志订阅的位置进行修正,以实现数据续传
根据本发明的一个实施例,数据读取组件10还用于:在Flink Job的数据读取阶段,通过Flink Job的CheckPoint记录对Binlog增量日志信息进行解析时的日志消费的偏移量,以支持任务在下一次开始时进行数据续传。
根据本发明的一个实施例,表结构信息包括:表字段内容、字段类型,数据库信息包括:数据库名和数据库连接信息,分表管理组件30还用于:根据数据库信息、表名信息、表结构信息对Binlog采集的所有表建立关联关系,将同一数据库名下相同表结构的表划分为同一组。
根据本发明的一个实施例,数据写入组件40根据表结构信息创建HIVE分区表,以及获取HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入,具体用于:配置HIVE数据源信息,其中,HIVE数据源信息包括:HIVE JDBC连接信息、HIVE库名、分区字段、HDFS配置信息;通过HIVE JDBC创建HIVE分区表,并获取分区表所对应的分布式文件系统的文件路径;根据待传输的数据对象、HDFS配置信息、文件路径,将数据写入分布式文件系统中,其中,写入的数据暂存于文件路径下的临时目录之中。
根据本发明的一个实施例,数据写入组件40还用于:当CheckPoint功能被触发时,将临时目录中暂存的数据对象转移至HIVE分区表的文件路径中。
需要说明的是,本发明实施例的基于Flink实现Binlog到HIVE的实时数据采集系统中未披露的细节,请参照本发明实施例的基于Flink实现Binlog到HIVE的实时数据采集方法中所披露的细节,具体这里不再赘述。
本发明基于Flink计算框架下实现流式数据处理,降低了数据传输的延迟并实现了数据一致性语义;通过直接写入HDFS文件系统的方式,实现HIVE数据源的高性能数据写入;通过自定义的Distributer组件管理Binlog采集的所有表信息,满足了不同表结构的数据信息写入到对应的HIVE表中。
另外,本发明还提出了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序,以实现上述的基于Flink实现Binlog到HIVE的实时数据采集方法。
此外,本发明还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现上述的基于Flink实现Binlog到HIVE的实时数据采集方法。
在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (5)
1.一种基于Flink实现Binlog到HIVE的实时数据采集方法,其特征在于,包括以下步骤:
建立所述Flink Job,并在所述Flink Job的初始化阶段,配置并订阅数据源的Binlog增量日志信息;
在所述Flink Job的数据读取阶段,对所述Binlog增量日志信息进行解析,以转换为数据对象,其中,所述数据对象包括:数据库信息和表名信息;
在所述Flink Job的数据写入阶段,根据所述数据库信息和需要订阅的Binlog的表名信息获取表结构信息,并根据所述表结构信息创建HIVE分区表,以及获取所述HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入,
所述根据所述表结构信息创建HIVE分区表,以及获取所述HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入,包括:配置所述HIVE数据源信息,其中,所述HIVE数据源信息包括:HIVE JDBC连接信息、HIVE库名、分区字段、HDFS配置信息;通过所述HIVE JDBC创建HIVE分区表,并获取分区表所对应的分布式文件系统的文件路径;根据待传输的所述数据对象、所述HDFS配置信息、所述文件路径,将所述数据写入分布式文件系统中,其中,写入的数据暂存于所述文件路径下的临时目录之中,
在所述Flink Job的初始化阶段,还包括:通过所述Flink Job的CheckPoint功能获取上一次数据采集时保存的偏移量信息;对所述Binlog日志订阅的位置进行修正,以实现数据续传,
在所述Flink Job的数据读取阶段,还包括:通过所述Flink Job的CheckPoint记录对所述Binlog增量日志信息进行解析时的日志消费的偏移量,以支持任务在下一次开始时进行数据续传,
当所述CheckPoint功能被触发时,将所述临时目录中暂存的数据对象转移至所述HIVE分区表的文件路径中。
2.根据权利要求1所述的基于Flink实现Binlog到HIVE的实时数据采集方法,其特征在于,所述表结构信息包括:表字段内容、字段类型,所述数据库信息包括:数据库名和数据库连接信息,所述方法还包括:
根据所述数据库信息、所述表名信息、所述表结构信息对Binlog采集的所有表建立关联关系,将同一数据库名下相同表结构的表划分为同一组。
3.一种基于Flink实现Binlog到HIVE的实时数据采集系统,其特征在于,包括:
建立组件,用于建立所述Flink Job,并在所述Flink Job的初始化阶段,配置并订阅数据源的Binlog增量日志信息;
数据读取组件,用于在所述Flink Job的数据读取阶段,对所述Binlog增量日志信息进行解析,以转换为数据对象,其中,所述数据对象包括:数据库信息和表名信息;
分表管理组件,用于在所述Flink Job的数据写入阶段,根据所述数据库信息和需要订阅的Binlog的表名信息获取表结构信息;
数据写入组件,用于根据所述表结构信息创建HIVE分区表,以及获取所述HIVE分区表对应的分布式系统下的存储路径,实现数据对分布式系统的直接写入,数据写入组件具体用于:配置HIVE数据源信息,其中,HIVE数据源信息包括:HIVE JDBC连接信息、HIVE库名、分区字段、HDFS配置信息;通过HIVE JDBC创建HIVE分区表,并获取分区表所对应的分布式文件系统的文件路径;根据待传输的数据对象、HDFS配置信息、文件路径,将数据写入分布式文件系统中,其中,写入的数据暂存于文件路径下的临时目录之中,
数据读取组件还用于:通过Flink Job的CheckPoint功能获取上一次数据采集时保存的偏移量信息;对Binlog日志订阅的位置进行修正,以实现数据续传,
数据读取组件还用于:在Flink Job的数据读取阶段,通过Flink Job的CheckPoint记录对Binlog增量日志信息进行解析时的日志消费的偏移量,以支持任务在下一次开始时进行数据续传,
数据写入组件还用于:当CheckPoint功能被触发时,将临时目录中暂存的数据对象转移至HIVE分区表的文件路径中。
4.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1或2所述的基于Flink实现Binlog到HIVE的实时数据采集方法。
5.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1或2所述的基于Flink实现Binlog到HIVE的实时数据采集方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010729412.4A CN112100147B (zh) | 2020-07-27 | 2020-07-27 | 基于Flink实现Binlog到HIVE的实时采集方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010729412.4A CN112100147B (zh) | 2020-07-27 | 2020-07-27 | 基于Flink实现Binlog到HIVE的实时采集方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100147A CN112100147A (zh) | 2020-12-18 |
CN112100147B true CN112100147B (zh) | 2024-06-07 |
Family
ID=73749502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010729412.4A Active CN112100147B (zh) | 2020-07-27 | 2020-07-27 | 基于Flink实现Binlog到HIVE的实时采集方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100147B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948486B (zh) * | 2021-02-04 | 2024-08-16 | 北京淇瑀信息科技有限公司 | 批量数据同步方法、系统及电子设备 |
CN113010608A (zh) * | 2021-04-07 | 2021-06-22 | 亿企赢网络科技有限公司 | 数据实时同步方法、装置及计算机可读存储介质 |
CN113177091B (zh) * | 2021-05-19 | 2023-10-10 | 杭州华橙软件技术有限公司 | 增量数据的存储方法及装置、存储介质、电子装置 |
CN113282555A (zh) * | 2021-06-18 | 2021-08-20 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN113326238A (zh) * | 2021-06-25 | 2021-08-31 | 深信服科技股份有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN113468177B (zh) * | 2021-07-06 | 2024-08-13 | 杭州玳数科技有限公司 | 数据构建方法 |
CN113535856B (zh) * | 2021-07-29 | 2022-11-04 | 上海哔哩哔哩科技有限公司 | 数据同步方法及系统 |
CN113961570A (zh) * | 2021-12-22 | 2022-01-21 | 四川新网银行股份有限公司 | 一种应用于MYSQL BINLog变更数据的实时采集方法 |
CN114969083B (zh) * | 2022-06-24 | 2024-06-14 | 在线途游(北京)科技有限公司 | 一种实时数据分析方法及系统 |
CN116578655B (zh) * | 2023-07-06 | 2023-09-15 | 舟谱数据技术南京有限公司 | 一种数据传输系统及其控制方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874133A (zh) * | 2017-01-17 | 2017-06-20 | 北京百度网讯科技有限公司 | 流式计算系统中计算节点的故障处理 |
CN107391719A (zh) * | 2017-07-31 | 2017-11-24 | 南京邮电大学 | 一种云环境中分布式流数据处理方法及系统 |
CN108205576A (zh) * | 2016-12-20 | 2018-06-26 | 航天信息股份有限公司 | 一种基于数据仓库工具hive分区存储使用和分析数据的方法及系统 |
CN109376154A (zh) * | 2018-10-26 | 2019-02-22 | 杭州玳数科技有限公司 | 数据读取、写入方法及数据读取、写入系统 |
CN109902126A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 支持hive自动分区的加载系统及其实现方法 |
CN110275927A (zh) * | 2019-06-26 | 2019-09-24 | 浪潮卓数大数据产业发展有限公司 | 一种基于MySQL的流式实时数据同步系统 |
CN110781197A (zh) * | 2019-09-29 | 2020-02-11 | 北京淇瑀信息科技有限公司 | 一种hive离线同步校验方法、装置及电子设备 |
CN111008246A (zh) * | 2019-11-26 | 2020-04-14 | 中盈优创资讯科技有限公司 | 数据库日志同步方法、装置、计算机设备及可读存储介质 |
CN111209278A (zh) * | 2018-11-21 | 2020-05-29 | 北京京东尚科信息技术有限公司 | 流式实时处理线上生产数据的装置和方法 |
CN111339073A (zh) * | 2020-02-24 | 2020-06-26 | 天津满运软件科技有限公司 | 实时数据处理方法、装置、电子设备及可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103780638B (zh) * | 2012-10-18 | 2019-02-19 | 腾讯科技(深圳)有限公司 | 数据同步方法及系统 |
US9411866B2 (en) * | 2012-12-19 | 2016-08-09 | Sap Global Ip Group, Sap Ag | Replication mechanisms for database environments |
US10387426B2 (en) * | 2017-10-27 | 2019-08-20 | Streamsimple, Inc. | Streaming microservices for stream processing applications |
US10756952B2 (en) * | 2018-05-30 | 2020-08-25 | International Business Machines Corporation | Determining a storage network path utilizing log data |
-
2020
- 2020-07-27 CN CN202010729412.4A patent/CN112100147B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205576A (zh) * | 2016-12-20 | 2018-06-26 | 航天信息股份有限公司 | 一种基于数据仓库工具hive分区存储使用和分析数据的方法及系统 |
CN106874133A (zh) * | 2017-01-17 | 2017-06-20 | 北京百度网讯科技有限公司 | 流式计算系统中计算节点的故障处理 |
CN107391719A (zh) * | 2017-07-31 | 2017-11-24 | 南京邮电大学 | 一种云环境中分布式流数据处理方法及系统 |
CN109376154A (zh) * | 2018-10-26 | 2019-02-22 | 杭州玳数科技有限公司 | 数据读取、写入方法及数据读取、写入系统 |
CN111209278A (zh) * | 2018-11-21 | 2020-05-29 | 北京京东尚科信息技术有限公司 | 流式实时处理线上生产数据的装置和方法 |
CN109902126A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 支持hive自动分区的加载系统及其实现方法 |
CN110275927A (zh) * | 2019-06-26 | 2019-09-24 | 浪潮卓数大数据产业发展有限公司 | 一种基于MySQL的流式实时数据同步系统 |
CN110781197A (zh) * | 2019-09-29 | 2020-02-11 | 北京淇瑀信息科技有限公司 | 一种hive离线同步校验方法、装置及电子设备 |
CN111008246A (zh) * | 2019-11-26 | 2020-04-14 | 中盈优创资讯科技有限公司 | 数据库日志同步方法、装置、计算机设备及可读存储介质 |
CN111339073A (zh) * | 2020-02-24 | 2020-06-26 | 天津满运软件科技有限公司 | 实时数据处理方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112100147A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112100147B (zh) | 基于Flink实现Binlog到HIVE的实时采集方法和系统 | |
CN109918349B (zh) | 日志处理方法、装置、存储介质和电子装置 | |
CN110147411B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN110297759B (zh) | 一种制作测试页面脚本的方法、装置、设备及存储介质 | |
US11507594B2 (en) | Bulk data distribution system | |
US8615499B2 (en) | Estimating data reduction in storage systems | |
CN111177161B (zh) | 数据处理方法、装置、计算设备和存储介质 | |
CN109710614A (zh) | 一种实时数据存储与查询的方法及装置 | |
CN107423404B (zh) | 流程实例数据同步处理方法和装置 | |
EP2767912A2 (en) | In-memory real-time synchronized database system and method | |
CN104572856A (zh) | 一种服务起源数据的融合存储方法 | |
US20130046798A1 (en) | Method and apparatus for visualization of infrastructure using a non-relational graph data store | |
CN112632035A (zh) | 面向自主可控数据库迁移方法及存储介质 | |
CN112417033A (zh) | 一种分布式图数据库多节点数据一致性实现方法和系统 | |
CN113391973B (zh) | 一种物联网云容器日志收集方法及装置 | |
CN108520052A (zh) | 慢查询信息检索方法、装置、服务器及可读存储介质 | |
CN114153895A (zh) | 一种实时数仓框架的搭建方法以及实时数仓框架 | |
CN100545842C (zh) | 服务器设备、数据处理方法、程序、及通信方法 | |
CN111752916B (zh) | 数据采集方法及装置、计算机可读存储介质、电子设备 | |
US8924789B2 (en) | System and method for providing virtual machine diagnostic information using a flight recorder functionality | |
CN116594958A (zh) | 一种图数据集加载方法、系统、电子设备、介质 | |
CN113297245A (zh) | 获取执行信息的方法及装置 | |
CN115904876A (zh) | 解决不同格式日志数据冲突的方法、系统、终端及介质 | |
CN114490558A (zh) | 一种ott视频业务监控的方法及装置 | |
CN115357459A (zh) | 一种基于kubernetes的日志搜集方法 |
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: 311121 room 102-1 / F, room 102-2 / F, building 6, Haizhi center, 2301 yuhangtang Road, Cangqian street, Yuhang District, Hangzhou, Zhejiang Province Applicant after: HANGZHOU DAISHU TECHNOLOGY Co.,Ltd. Address before: 310030 8F, building 2, Hangzhou Internet innovation and entrepreneurship Park, 176 Zixia street, Xihu District, Hangzhou City, Zhejiang Province Applicant before: HANGZHOU DAISHU TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant |