CN117668112A - 一种数仓数据同步方法、装置、设备、存储介质和产品 - Google Patents
一种数仓数据同步方法、装置、设备、存储介质和产品 Download PDFInfo
- Publication number
- CN117668112A CN117668112A CN202311662250.7A CN202311662250A CN117668112A CN 117668112 A CN117668112 A CN 117668112A CN 202311662250 A CN202311662250 A CN 202311662250A CN 117668112 A CN117668112 A CN 117668112A
- Authority
- CN
- China
- Prior art keywords
- record
- file
- binlog
- records
- target
- 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
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000006243 chemical reaction Methods 0.000 claims abstract description 17
- 230000008569 process Effects 0.000 claims abstract description 17
- 230000015654 memory Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 abstract description 8
- 238000005192 partition Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000002354 daily effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种数仓数据同步方法、装置、设备、存储介质和产品,其中方法包括:由SQL数据库中采集设定时段内的binlog日志;将所述binlog日志转化为自定义json格式,转化过程中记录所述binlog日志中每条记录的生成时间;将转化后的binlog日志写入与SQL数据库对应的目标数仓库表下的hdfs文件中;根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表;将所述目标hive表加载至目标数仓中,完成数仓数据同步。本说明书实施例能够保障数据进入数仓时的完整性和同步效率,能够满足半小时级、小时级、天级别同步频率要求。
Description
技术领域
本说明书实施例涉及数据同步领域,特别地,涉及一种数仓数据同步方法、装置、设备、存储介质和产品。
背景技术
数仓的数据来源主要是各业务系统的mysql数据库,数据同步阶段是利用技术手段将mysql端数据同步的hive数仓,其基本要求就是要保证数据的完整性。当前业界的同步方案主要有三类:一是使用datax、sqoop等工具每天全量同步mysql表到数仓后再使用离线任务覆盖目标表;二是基于mysql表的时间戳每天增量同步到数仓后再使用离线任务合并到目标表;三是基于mysql binlog和kafka、hbase等中间件实现增量同步到hdfs后再使用离线任务合并到目标表。
上述第一种同步方案能够保证数据的完整性,但是每天全量导出,在数据量大的情况下,资源开销大、效率低,此外对mysql的查询压力也较大;第二种同步方案能够保证同步效率,但必须要求mysql表都有更新时间戳字段,在实际生产中业务系统的开发人员偶尔在执行数据修复sql时没有变更时间戳字段,会导致此部分数据无法同步到数仓,此外对于物理删除的记录也无法同步到数仓,都会造成同步到数仓的数据无法保证完整性;第三种同步方案需要额外部署开源canal、kafka或hbase集群,占用大量服务器资源,且增加了整体运维成本和难度。
因此,现在亟需一种数仓数据同步方法,能够提高数仓数据同步的效率和数据完整性。
发明内容
本说明书实施例的目的在于提供一种数仓数据同步方法、装置、设备、存储介质和产品,以提高数仓数据同步的效率和数据完整性。
为达到上述目的,一方面,本说明书实施例提供了一种数仓数据同步方法,包括:
由SQL数据库中采集设定时段内的binlog日志;
将所述binlog日志转化为自定义json格式,转化过程中记录所述binlog日志中每条记录的生成时间;
将转化后的binlog日志写入与SQL数据库对应的目标数仓库表下的hdfs文件中;
根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表;
将所述目标hive表加载至目标数仓中,完成数仓数据同步。
优选的,所述转化过程中记录所述binlog日志中每条记录的生成时间进一步包括:
将binlog日志中每条记录新增两个字段,其中第一个字段记录每条记录生成时对应的毫秒级时刻,第二个字段记录每条记录在相应毫秒级时刻下对应的自增序号。
优选的,所述目标数仓库表下的hdfs文件包括同时包含转化后的binlog日志中的新增记录和修改记录的第一文件,以及仅包含转化后的binlog日志中的删除记录的第二文件。
优选的,所述根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表进一步包括:
根据所述第一文件,选取关键字段的值相同的所有记录中最新时刻对应的最新记录;
合并所述第一文件中所有最新记录,得到合并后的记录;
基于所述第二文件对所述合并后的记录进行删除,得到目标hive表。
优选的,所述根据所述第一文件,选取关键字段的值相同的所有记录中最新时刻对应的最新记录进一步包括:
将所述第一文件中的所有记录按照关键字段的值进行聚类,得到聚类后的记录;
将所述聚类后的记录按照第一字段和第二字段的值进行倒序排序,得到排序结果;
将所述排序结果中位于首位的记录作为最新时刻对应的最新记录。
优选的,所述基于所述第二文件对所述合并后的记录进行删除,得到目标hive表进一步包括:
逐一判断所述第二文件中某一记录对应的关键字段的值是否为所述合并后的记录中某一记录的关键字段的值;
若是,则将所述第二文件中所述某一记录对应的第一字段和第二字段与所述合并后的记录中所述某一记录对应的第一字段和第二字段进行比较,判断所述第二文件中所述某一记录与所述合并后的记录中所述某一记录的生成顺序;
若所述第二文件中所述某一记录的生成时刻早于所述合并后的记录中所述某一记录的生成时刻,则无需删除所述合并后的记录;
若所述第二文件中所述某一记录的生成时刻晚于所述合并后的记录中所述某一记录的生成时刻,则将所述合并后的记录中所述某一记录删除;
若否,则无需删除所述合并后的记录;
当所述第二文件中的所有记录对应的关键字段的值均判断完毕后,得到目标hive表。
优选的,一种数仓数据同步装置,所述装置包括:
采集模块,用于由SQL数据库中采集设定时段内的binlog日志;
转化模块,用于将所述binlog日志转化为自定义json格式,转化过程中记录所述binlog日志中每条记录的生成时间;
写入模块,用于将转化后的binlog日志写入与SQL数据库对应的目标数仓库表下的hdfs文件中;
合并模块,用于根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表;
同步模块,用于将所述目标hive表加载至目标数仓中,完成数仓数据同步。
另一方面,本说明书实施例提供了一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时,执行上述任意一项所述方法的指令。
又一方面,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器运行时,执行上述任意一项所述方法的指令。
又一方面,本说明书实施例还提供了一种计算机程序产品,所述计算机程序产品被计算机设备的处理器运行时,执行上述任意一项所述方法的指令。
由以上本说明书实施例提供的技术方案可见,通过本说明书实施例的方法,在需要进行数仓和SQL数据之间的数据同步时,由SQL数据库中采集binlog日志,将binlog日志转化为自定义json格式后将binlog日志写入SQL数据库对应的目标数仓库表下的hdfs文件中,并根据hdfs文件合并转化后binlog日志中的新增记录、修改记录和删除记录,得到目标hive表,将目标hive表加载至目标数仓中,目标数仓依据目标hive表对数仓中的数据进行更新,即可完成数仓数据同步,进而提高数仓数据同步的效率,确保数据在同步过程中的完整性。
为让本说明书的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本说明书实施例提供的一种数仓数据同步方法的流程示意图;
图2示出了本说明书实施例提供的合并转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表的流程示意图;
图3示出了本说明书实施例提供的根据第一文件,选取关键字段的值相同的所有记录中最新时刻对应的最新记录的流程示意图;
图4示出了本说明书实施例提供的基于第二文件对所述合并后的记录进行删除,得到目标hive表的流程示意图;
图5示出了本说明书实施例提供的一种数仓数据同步装置的模块结构示意图;
图6示出了本说明书实施例提供的计算机设备的结构示意图。
附图符号说明:
100、采集模块;
200、转化模块;
300、写入模块;
400、合并模块;
500、同步模块;
602、计算机设备;
604、处理器;
606、存储器;
608、驱动机构;
610、输入/输出模块;
612、输入设备;
614、输出设备;
616、呈现设备;
618、图形用户接口;
620、网络接口;
622、通信链路;
624、通信总线。
具体实施方式
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书实施例保护的范围。
数仓的数据来源主要是各业务系统的mysql数据库,数据同步阶段是利用技术手段将mysql端数据同步的hive数仓,其基本要求就是要保证数据的完整性。当前业界的同步方案主要有三类:一是使用datax、sqoop等工具每天全量同步mysql表到数仓后再使用离线任务覆盖目标表;二是基于mysql表的时间戳每天增量同步到数仓后再使用离线任务合并到目标表;三是基于mysql binlog和kafka、hbase等中间件实现增量同步到hdfs后再使用离线任务合并到目标表。
上述第一种同步方案能够保证数据的完整性,但是每天全量导出,在数据量大的情况下,资源开销大、效率低,此外对mysql的查询压力也较大;第二种同步方案能够保证同步效率,但必须要求mysql表都有更新时间戳字段,在实际生产中业务系统的开发人员偶尔在执行数据修复sql时没有变更时间戳字段,会导致此部分数据无法同步到数仓,此外对于物理删除的记录也无法同步到数仓,都会造成同步到数仓的数据无法保证完整性;第三种同步方案需要额外部署开源canal、kafka或hbase集群,占用大量服务器资源,且增加了整体运维成本和难度。
为了解决上述问题,本说明书实施例提供了一种数仓数据同步方法。图1是本说明书实施例提供的一种数仓数据同步方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
需要说明的是,本说明书实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本说明书的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
参照图1,在本说明书实施例中提供了一种数仓数据同步方法,包括:
S101:由SQL数据库中采集设定时段内的binlog日志;
S102:将所述binlog日志转化为自定义json格式,转化过程中记录所述binlog日志中每条记录的生成时间;
S103:将转化后的binlog日志写入与SQL数据库对应的目标数仓库表下的hdfs文件中;
S104:根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表;
S105:将所述目标hive表加载至目标数仓中,完成数仓数据同步。
初始状态时,SQL数据库中的数据表会同步至数仓中,随着SQL数据库中数据的增删改操作,需要将SQL端的增删改操作同步至数仓中以保证数据的完整性,具体的同步方法即为本说明书实施例中S101-S105的方法。其中SQL数据库一般指MySQL数据库,当然也可以是SQLsever数据库等,binlog日志为SQL数据库的日志,用来记录数据库中数据的增删改操作。
其中设定时段内的binlog日志可以是前一天的binlog日志,也可以根据实际需求进行其他设置,采集binlog日志的具体方法可以是通过部署cannal中间件集群或者flinkcdc技术进行采集,也可以通过集成有canal中间件的插件采集binlog日志。
进一步需要将binlog日志转化为自定义json格式,转化过程中需要记录binlog日志中每条记录的生成时间,具体为:将binlog日志中每条记录新增两个字段,其中第一个字段记录每条记录生成时对应的毫秒级时刻,第二个字段记录每条记录在相应毫秒级时刻下对应的自增序号。对于binlog日志来说,日志中每条记录至少包括关键字段,例如日志的记录中包括ID字段(关键字段)和姓名字段,其中一条记录为001张三,此时新增第一字段为20231101152102307,第一字段记录该条记录的生成时对应的毫秒级时刻,同时还需要新增第二字段为01,由于同一毫秒下可能生成多条记录,通过自增序号可以将多条记录区分开,自增序号为01代表该条记录是在生成时对应的毫秒级时刻下的第一条记录,后续在相同毫秒级时刻下还有其他记录需要在01的基础上自增。
进一步的,需要将转换后的binlog日志写入与SQL数据库对应的目标数仓库表下的hdfs文件中,一般来说,SQL数据库不止一个,数仓也不止一个,需要建立SQL数据库与数仓之间的关联关系,进行有关联关系的SQL数据库和数仓之间的同步。其中hdfs常用于存储和管理数仓的大规模数据,将binlog日志写入对应的hdfs文件后,可以根据hdfs文件,合并转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表。其中hive为数据仓库工具,能够将结构化的数据文件映射为数据表,即可以将hdfs文件转换为表格形式进行查询和分析。
新增记录例如为:002李四20231101184502201 01,修改记录例如为:001王五20231101184502201 02,删除记录例如为:002李四20231101194502201 01。
通过本说明书实施例的方法,在需要进行数仓和SQL数据之间的数据同步时,由SQL数据库中采集binlog日志,将binlog日志转化为自定义json格式后将binlog日志写入SQL数据库对应的目标数仓库表下的hdfs文件中,并根据hdfs文件合并转化后binlog日志中的新增记录、修改记录和删除记录,得到目标hive表,将目标hive表加载至目标数仓中,目标数仓依据目标hive表对数仓中的数据进行更新,即可完成数仓数据同步,进而提高数仓数据同步的效率,确保数据在同步过程中的完整性。
其中,所述目标数仓库表下的hdfs文件包括同时包含转化后的binlog日志中的新增记录和修改记录的第一文件,以及仅包含转化后的binlog日志中的删除记录的第二文件。将删除记录与新增记录和修改记录区分为两个文件,能够方便后续合并新增记录、修改记录和删除记录,确保数据同步过程中的完整性。
具体的,参照图2,所述根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表进一步包括:
S201:根据所述第一文件,选取关键字段的值相同的所有记录中最新时刻对应的最新记录;
S202:合并所述第一文件中所有最新记录,得到合并后的记录;
S203:基于所述第二文件对所述合并后的记录进行删除,得到目标hive表。
一般来说,一个SQL数据表至少存在一个关键字段,关键字段可以唯一标识SQL数据表中的一个对象,例如上文例子中的ID,因此在第一文件中关键字段的值相同的所有记录即对应同一ID的所有新增和修改记录,选取其中最新时刻对应的最新记录,因为可能存在对同一ID的多次修改,最新记录即对应最新一次的修改。
合并所有最新记录后,还需要基于第二文件对合并后的记录进行删除,才能得到目标hive表。
在本说明书实施例中,参照图3,所述根据所述第一文件,选取关键字段的值相同的所有记录中最新时刻对应的最新记录进一步包括:
S301:将所述第一文件中的所有记录按照关键字段的值进行聚类,得到聚类后的记录;
S302:将所述聚类后的记录按照第一字段和第二字段的值进行倒序排序,得到排序结果;
S303:将所述排序结果中位于首位的记录作为最新时刻对应的最新记录。
在此之前,需要先加载第一文件中的所有binlog日志记录并映射为spark临时表,原因是不同于关系型数据库,数仓无法支持单条记录的增删改频繁操作,一般都需要使用spark等大数据计算引擎实现批量的增删改操作。
按照关键字段的值进行聚类得到聚类后的记录,聚类后的记录中任意两个记录对应的关键字段的值均相同,如此可以得到多个聚类后的记录。将聚类后的记录按照第一字段和第二字段的值倒序排序,由于第一字段中记录的是每条记录生成时对应的毫秒级时刻,第二个字段记录每条记录在相应毫秒级时刻下对应的自增序号,排序后毫秒级时刻越大的排序越靠前,毫秒级时刻相同的自增序号越大的排序越靠前,进而得到排序结果,排序结果中位于首位的记录即为毫秒级时刻最大且相同毫秒级时刻下自增序号最大的记录,即为最新时刻对应的最新记录,该最新时刻对应的最新记录即为最终需要进行同步入仓的记录。如此可以得到多个聚类后的记录对应的多个最新记录,将多个最新记录进行合并,即得到合并后的记录。
除此之外,可以进一步根据目标hive表是否为分区表来具体合并第一文件中所有最新记录,得到合并后的记录。分区表即为将大表分区为多个小表,本说明书实施例中分区表按照日期进行分区,其中目标hive表是否为分区表是已知的。若目标hive表是分区表,则根据第一文件中所有最新记录的第一字段和第二字段确定具体的日期,然后根据日期确定第一文件中所有最新记录所对应的目标hive表中的目标分区表,在合并前,提取除去目标分区表外的其他分区表,遍历目标分区表中每条记录,将其中与第一文件中所有最新记录对应的记录进行相应的变更,例如第一文件中某一最新记录是新增记录,则将目标分区表中新增该最新记录,例如第一文件中某一最新记录是修改记录M,则将目标分区表中相应的记录M修改为该最新记录,然后将变更后的目标分区表与其他分区表进行合并。若目标hive表不是分区表,则在合并前,提取除去目标hive表外的其他表,遍历目标hive表中每条记录,将其中与第一文件中所有最新记录对应的记录进行相应的变更,然后将变更后的目标hive表与其他表进行合并。
在本说明书实施例中,参照图4,所述基于所述第二文件对所述合并后的记录进行删除,得到目标hive表进一步包括:
S401:逐一判断所述第二文件中某一记录对应的关键字段的值是否为所述合并后的记录中某一记录的关键字段的值;
S402:若是,则将所述第二文件中所述某一记录对应的第一字段和第二字段与所述合并后的记录中所述某一记录对应的第一字段和第二字段进行比较,判断所述第二文件中所述某一记录与所述合并后的记录中所述某一记录的生成顺序;
S4021:若所述第二文件中所述某一记录的生成时刻早于所述合并后的记录
中所述某一记录的生成时刻,则无需删除所述合并后的记录;
S4022:若所述第二文件中所述某一记录的生成时刻晚于所述合并后的记录中所述某一记录的生成时刻,则将所述合并后的记录中所述某一记录删除;
S403:若否,则无需删除所述合并后的记录;
S404:当所述第二文件中的所有记录对应的关键字段的值均判断完毕后,得到目标hive表。
在此之前,需要先加载第二文件中的所有binlog日志记录并映射为spark临时表,原因是不同于关系型数据库,数仓无法支持单条记录的增删改频繁操作,一般都需要使用spark等大数据计算引擎实现批量的增删改操作。
其中第二文件中所包含的每一记录均为删除记录,若其中某一记录A对应的关键字段的值与合并后的记录中某一记录B的关键字段的值相同,则说明该关键字段对应的记录可能已经删除,此时需要判断记录A与记录B的生成顺序,若记录A生成时刻早于记录B,则说明相应关键字段的值先删除后新增,此时记录B不应当从合并后的记录中删除,若记录A生成时间晚于记录B,则说明相应关键字段先新增/修改后删除,此时记录B应当从合并后的记录中删除。其中将所述第二文件中所述某一记录对应的第一字段和第二字段与所述合并后的记录中所述某一记录对应的第一字段和第二字段进行比较,即比较两者的第一字段是否相同,若不相同,第一字段较大者生成时刻较晚,若相同,比较两者的第二字段是否相同,若不相同,第二字段较大者生成时刻较晚。
例如修改记录:002李四20231101184502201 01,之后删除记录:002李四20231101184502201 02,之后又新增记录:002王五20231101184502201 03,关键字段的值为002时对应的最新记录为002王五20231101184502201 03,该条最新记录作为合并后的记录中的某一记录,由于第二文件包含删除记录,因此删除记录:002李四2023110118450220102包含在第二文件中,第二文件和合并后的记录中存在关键字段的值为002的相同记录,但由于第二文件中相应记录的第二字段02小于合并后的记录中相应记录的第二字段03,因此第二文件中相应记录的生成时刻早于合并后的记录中相应记录的生成时刻,则无需删除合并后的记录。
若修改记录:002李四20231101184502201 01,之后修改记录:002王五20231101184502201 02,之后又删除记录:002王五20231101184502201 03,关键字段的值为002时对应的最新记录为002王五20231101184502201 02,该条最新记录作为合并后的记录中的某一记录,由于第二文件包含删除记录,因此删除记录:002王五2023110118450220103包含在第二文件中,第二文件和合并后的记录中存在关键字段的值为002的相同记录,但由于第二文件中相应记录的第二字段03大于合并后的记录中相应记录的第二字段02,因此第二文件中相应记录的生成时刻晚于合并后的记录中相应记录的生成时刻,则将合并后的记录中所述某一记录删除。
逐一判断第二文件中每一记录,直至所有记录对应的关键字段的值均判断完毕后,得到目标hive表。目标数仓依据目标hive表对数仓中的数据进行更新,即可完成数仓数据同步,进而提高数仓数据同步的效率,确保数据在同步过程中的完整性。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。且本申请实施例描述的技术方案中对数据的获取、存储、使用、处理等均符合相关法规的规定。
基于上述所述的一种数仓数据同步方法,本说明书实施例还对应提供一种数仓数据同步装置。所述的装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
具体地,图5是本说明书实施例提供的一种数仓数据同步装置一个实施例的模块结构示意图,参照图5所示,本说明书实施例提供的一种数仓数据同步装置包括:采集模块100、转化模块200、写入模块300、合并模块400、同步模块500。
采集模块100,用于由SQL数据库中采集设定时段内的binlog日志;
转化模块200,用于将所述binlog日志转化为自定义json格式,转化过程中记录所述binlog日志中每条记录的生成时间;
写入模块300,用于将转化后的binlog日志写入与SQL数据库对应的目标数仓库表下的hdfs文件中;
合并模块400,用于根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表;
同步模块500,用于将所述目标hive表加载至目标数仓中,完成数仓数据同步。
参照图6所示,基于上述所述的一种数仓数据同步方法,本说明书一实施例中还提供一种计算机设备602,其中上述方法运行在计算机设备602上。计算机设备602可以包括一个或多个处理器604,诸如一个或多个中央处理单元(CPU)或图形处理器(GPU),每个处理单元可以实现一个或多个硬件线程。计算机设备602还可以包括任何存储器606,其用于存储诸如代码、设置、数据等之类的任何种类的信息,一具体实施方式中,存储器606上并可在处理器604上运行的计算机程序,所述计算机程序被所述处理器604运行时,可以执行根据上述方法的指令。非限制性的,比如,存储器606可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留。进一步地,任何存储器可以表示计算机设备602的固定或可移除部件。在一种情况下,当处理器604执行被存储在任何存储器或存储器的组合中的相关联的指令时,计算机设备602可以执行相关联指令的任一操作。计算机设备602还包括用于与任何存储器交互的一个或多个驱动机构608,诸如硬盘驱动机构、光盘驱动机构等。
计算机设备602还可以包括输入/输出模块610(I/O),其用于接收各种输入(经由输入设备612)和用于提供各种输出(经由输出设备614)。一个具体输出机构可以包括呈现设备616和相关联的图形用户接口618(GUI)。在其他实施例中,还可以不包括输入/输出模块610(I/O)、输入设备612以及输出设备614,仅作为网络中的一台计算机设备。计算机设备602还可以包括一个或多个网络接口620,其用于经由一个或多个通信链路622与其他设备交换数据。一个或多个通信总线624将上文所描述的部件耦合在一起。
通信链路622可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路622可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
对应于图1-图4中的方法,本说明书实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法的步骤。
本说明书实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图1至图4所示的方法。
应理解,在本说明书的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本说明书实施例的实施过程构成任何限定。
还应理解,在本说明书实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本说明书实施例中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本说明书实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本说明书实施例的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本说明书所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本说明书实施例方案的目的。
另外,在本说明书各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中应用了具体实施例对本说明书实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本说明书实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本说明书实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本说明书实施例的限制。
Claims (10)
1.一种数仓数据同步方法,其特征在于,包括:
由SQL数据库中采集设定时段内的binlog日志;
将所述binlog日志转化为自定义json格式,转化过程中记录所述binlog日志中每条记录的生成时间;
将转化后的binlog日志写入与SQL数据库对应的目标数仓库表下的hdfs文件中;
根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表;
将所述目标hive表加载至目标数仓中,完成数仓数据同步。
2.根据权利要求1所述的方法,其特征在于,所述转化过程中记录所述binlog日志中每条记录的生成时间进一步包括:
将binlog日志中每条记录新增两个字段,其中第一个字段记录每条记录生成时对应的毫秒级时刻,第二个字段记录每条记录在相应毫秒级时刻下对应的自增序号。
3.根据权利要求2所述的方法,其特征在于,所述目标数仓库表下的hdfs文件包括同时包含转化后的binlog日志中的新增记录和修改记录的第一文件,以及仅包含转化后的binlog日志中的删除记录的第二文件。
4.根据权利要求3所述的方法,其特征在于,所述根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表进一步包括:
根据所述第一文件,选取关键字段的值相同的所有记录中最新时刻对应的最新记录;
合并所述第一文件中所有最新记录,得到合并后的记录;
基于所述第二文件对所述合并后的记录进行删除,得到目标hive表。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一文件,选取关键字段的值相同的所有记录中最新时刻对应的最新记录进一步包括:
将所述第一文件中的所有记录按照关键字段的值进行聚类,得到聚类后的记录;
将所述聚类后的记录按照第一字段和第二字段的值进行倒序排序,得到排序结果;
将所述排序结果中位于首位的记录作为最新时刻对应的最新记录。
6.根据权利要求4所述的方法,其特征在于,所述基于所述第二文件对所述合并后的记录进行删除,得到目标hive表进一步包括:
逐一判断所述第二文件中某一记录对应的关键字段的值是否为所述合并后的记录中某一记录的关键字段的值;
若是,则将所述第二文件中所述某一记录对应的第一字段和第二字段与所述合并后的记录中所述某一记录对应的第一字段和第二字段进行比较,判断所述第二文件中所述某一记录与所述合并后的记录中所述某一记录的生成顺序;
若所述第二文件中所述某一记录的生成时刻早于所述合并后的记录中所述某一记录的生成时刻,则无需删除所述合并后的记录;
若所述第二文件中所述某一记录的生成时刻晚于所述合并后的记录中所述某一记录的生成时刻,则将所述合并后的记录中所述某一记录删除;
若否,则无需删除所述合并后的记录;
当所述第二文件中的所有记录对应的关键字段的值均判断完毕后,得到目标hive表。
7.一种数仓数据同步装置,其特征在于,所述装置包括:
采集模块,用于由SQL数据库中采集设定时段内的binlog日志;
转化模块,用于将所述binlog日志转化为自定义json格式,转化过程中记录所述binlog日志中每条记录的生成时间;
写入模块,用于将转化后的binlog日志写入与SQL数据库对应的目标数仓库表下的hdfs文件中;
合并模块,用于根据所述hdfs文件,合并所述转化后的binlog日志中的新增记录、修改记录和删除记录,得到目标hive表;
同步模块,用于将所述目标hive表加载至目标数仓中,完成数仓数据同步。
8.一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,其特征在于,所述计算机程序被所述处理器运行时,执行根据权利要求1-6任意一项所述方法的指令。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机设备的处理器运行时,执行根据权利要求1-6任意一项所述方法的指令。
10.一种计算机程序产品,其特征在于,所述计算机程序产品被计算机设备的处理器运行时,执行根据权利要求1-6任意一项所述方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311662250.7A CN117668112A (zh) | 2023-12-06 | 2023-12-06 | 一种数仓数据同步方法、装置、设备、存储介质和产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311662250.7A CN117668112A (zh) | 2023-12-06 | 2023-12-06 | 一种数仓数据同步方法、装置、设备、存储介质和产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117668112A true CN117668112A (zh) | 2024-03-08 |
Family
ID=90067658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311662250.7A Pending CN117668112A (zh) | 2023-12-06 | 2023-12-06 | 一种数仓数据同步方法、装置、设备、存储介质和产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117668112A (zh) |
-
2023
- 2023-12-06 CN CN202311662250.7A patent/CN117668112A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643310B (zh) | 用于数据库中数据重分布的系统和方法 | |
JP5233233B2 (ja) | 情報検索システム、情報検索用インデックスの登録装置、情報検索方法及びプログラム | |
CN109522290B (zh) | 一种HBase数据块恢复及数据记录提取方法 | |
CN110651265A (zh) | 数据复制系统 | |
CN110633186A (zh) | 用于电力计量微服务架构的日志监控系统及实现方法 | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
EP2474919A1 (en) | System and method for data replication between heterogeneous databases | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
CN106126601A (zh) | 一种社保大数据分布式预处理方法及系统 | |
CN113553313B (zh) | 一种数据迁移方法及系统、存储介质、电子设备 | |
EP3362808B1 (en) | Cache optimization for data preparation | |
CN107016075A (zh) | 集群数据同步方法及装置 | |
CN107357920A (zh) | 一种增量式的多副本数据同步方法及系统 | |
CN109189759A (zh) | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 | |
CN113094442A (zh) | 全量数据同步方法、装置、设备和介质 | |
CN116501700B (zh) | 一种app格式化文件离线存储方法、装置、设备及存储介质 | |
CN109165120A (zh) | 分布式存储系统中管理快照和差异位图生成方法和产品 | |
CN110704407B (zh) | 一种数据去重的方法和系统 | |
CN111858767A (zh) | 同步数据的处理方法、装置、设备及存储介质 | |
CN112699118A (zh) | 数据同步方法及相应的装置、系统、存储介质 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN117668112A (zh) | 一种数仓数据同步方法、装置、设备、存储介质和产品 | |
CN116049306A (zh) | 数据同步方法、装置、电子设备以及可读存储介质 | |
CN112131051B (zh) | 基于参数化配置的数据备份方法及装置 | |
CN112286729B (zh) | 一种指定时间恢复的方法 |
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 |