CN110457397A - 一种数据同步的方法及装置 - Google Patents
一种数据同步的方法及装置 Download PDFInfo
- Publication number
- CN110457397A CN110457397A CN201910756835.2A CN201910756835A CN110457397A CN 110457397 A CN110457397 A CN 110457397A CN 201910756835 A CN201910756835 A CN 201910756835A CN 110457397 A CN110457397 A CN 110457397A
- Authority
- CN
- China
- Prior art keywords
- data
- target database
- synchronization job
- database
- synchronization
- 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
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/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
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步的方法及装置,其中,方法包括:获取数据同步指令,数据同步指令用于指示从N个源数据库中获取数据并同步至目标数据库中,创建数据同步指令对应的Spark会话,并在Spark会话中创建与N个源数据库相对应的N个同步作业,针对任一个同步作业,根据数据同步指令中针对同步作业对应的源数据库的执行权重,从Spark会话对应的资源池中确定用于执行同步作业的计算资源,并调用计算资源从同步作业对应的源数据库中获取数据,将各同步作业获取的数据存储至目标数据库。该技术方案用以实现并行的数据同步方式,且无需从目标数据库中获取数据以执行数据合并作业,减少计算资源的消耗。
Description
技术领域
本发明实施例涉及金融科技(Fintech)领域,尤其涉及一种数据同步的方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(例如:区块链、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,大数据技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对大数据技术提出的更高的要求。
数据同步工具用于在HDFS(Hadoop Distributed File System,分布式文件系统)与传统关系数据库间进行数据的传递,传统数据库如MySql、Oracle、PostgreSQL等,数据同步工具可以将一个关系数据库中的数据导入HDFS中,也可以将HDFS的数据导入到关系数据库中。
现有的数据同步工具主要采用Sqoop,但Sqoop将分布式数据库中的数据同步至目标数据库中时,需要把分布式数据库不同的节点作为独立的数据库主机进行串行数据同步,比如,分布式数据库有节点A、节点B、节点C,Sqoop启动作业a,用于将节点A的数据同步至目标数据库,在作业a完成之后,启动作业b,用于将节点B的数据同步至目标数据库,在作业b完成之后,启动作业c,用于将节点C的数据同步至目标数据库,直至所有同步作业完成后,然后再从各目标数据库中获取数据执行数据合并作业。该种串行数据的同步方式耗时较长,且耗费大量计算资源。
发明内容
本发明实施例提供一种数据同步的方法及装置,用以实现并行的数据同步方式,且无需从目标数据库中获取数据以执行数据合并作业,减少计算资源的消耗。
本发明实施例提供的一种数据同步的方法,包括:
获取数据同步指令,所述数据同步指令用于指示从N个源数据库中获取数据并同步至目标数据库中;N大于1;
创建所述数据同步指令对应的Spark会话,并在所述Spark会话中创建与所述N个源数据库相对应的N个同步作业;
针对任一个同步作业,根据所述数据同步指令中针对所述同步作业对应的源数据库的执行权重,从所述Spark会话对应的资源池中确定用于执行所述同步作业的计算资源,并调用所述计算资源从所述同步作业对应的源数据库中获取数据;
将各同步作业获取的数据存储至所述目标数据库。
上述技术方案中,可以实现多个同步作业在一个Spark会话中并行执行,且可以根据各同步作业的执行权重,从Spark会话对应的资源池中确定各同步作业的计算资源,各同步作业并行执行或者轮流获取计算资源执行,相比于各同步作业串行或并发执行,可以有效提高数据同步的速度。
可选的,在所述将各同步作业获取的数据存储至所述目标数据库之前,还包括:
确定所述N个源数据库的表结构字段的并集;
获取所述目标数据库的表结构字段;
根据所述并集更新所述目标数据库的表结构字段;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
按照更新后的所述目标数据库的表结构字段,将各同步作业获取的数据存储至所述目标数据库。
上述技术方案中,可以在确定源数据库的表结构字段多于目标数据库的表结构字段时,主动根据源数据库的表结构字段更新目标数据库的表结构字段,从而实现将源数据库中的数据存储至目标数据库中时,可以有效避免数据丢失的情况,保证了数据的完整性。且该技术方案实现自动同步源数据库和目标数据库的表结构字段,无需人工手动更新,提高了更新效率。
可选的,在所述将各同步作业所获取的数据存储至所述目标数据库之前,还包括:
针对任一个同步作业,将所述同步作业获取的数据生成预设格式的字符串;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
将所述预设格式的字符串存储至所述目标数据库中。
上述技术方案中,可以将同步作业获取的数据以预设格式的字符串形式存储至目标数据库中,在源数据库中的表结构字段发生增加或删除时,不会影响目标数据库中数据的存储,也即该方式可以使得目标数据库自适应表结构的变化。
可选的,所述目标数据库中的数据以数据块的形式存储;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
针对同步作业从源数据库获取的任一次数据,将所述数据作为行数据;
将各行数据合并为至少一个数据块并将所述至少一个数据块存储至所述目标数据库。
上述技术方案中,可以将多个同步作业所获取的数据在Spark对话中合并,将合并后的数据存储至目标数据库的至少一个数据块中,避免将N份数据分别存储在N个数据块中,避免浪费存储资源。进一步的,在Spark对话中将多个同步作业所获取的数据执行合并,可以方便后续Spark对合并后的数据直接执行大数据计算,无需将N个数据块中数据执行合并作业后再执行大数据计算,节省了Spark的计算资源。
可选的,所述数据同步指令中还包括压缩格式;
所述将所述至少一个数据块存储至所述目标数据库,包括:
根据所述压缩格式,对所述至少一个数据块进行压缩后存储至所述目标数据库中。
上述技术方案中,可以根据数据同步指令中的压缩格式,对至少一个数据块进行压缩后存储至目标数据库中。通过该压缩方式,可以进一步减少数据存储至目标数据库时所占的存储空间。
相应的,本发明实施例还提供了一种数据同步的装置,包括:
获取单元,用于获取数据同步指令,所述数据同步指令用于指示从N个源数据库中获取数据并同步至目标数据库中;N大于1;
创建单元,用于创建所述数据同步指令对应的Spark会话,并在所述Spark会话中创建与所述N个源数据库相对应的N个同步作业;
处理单元,用于针对任一个同步作业,根据所述数据同步指令中针对所述同步作业对应的源数据库的执行权重,从所述Spark会话对应的资源池中确定用于执行所述同步作业的计算资源,并调用所述计算资源从所述同步作业对应的源数据库中获取数据;
所述处理单元还用于,将各同步作业获取的数据存储至所述目标数据库。
可选的,所述处理单元还用于:
在所述将各同步作业获取的数据存储至所述目标数据库之前,确定所述N个源数据库的表结构字段的并集;
获取所述目标数据库的表结构字段;
根据所述并集更新所述目标数据库的表结构字段;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
按照更新后的所述目标数据库的表结构字段,将各同步作业获取的数据存储至所述目标数据库。
可选的,所述处理单元还用于:
在所述将各同步作业所获取的数据存储至所述目标数据库之前,针对任一个同步作业,将所述同步作业获取的数据生成预设格式的字符串;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
将所述预设格式的字符串存储至所述目标数据库中。
可选的,所述目标数据库中的数据以数据块的形式存储;
所述处理单元具体用于:
针对同步作业从源数据库获取的任一次数据,将所述数据作为行数据;
将各行数据合并为至少一个数据块并将所述至少一个数据块存储至所述目标数据库。
可选的,所述数据同步指令中还包括压缩格式;
所述处理单元具体用于:
根据所述压缩格式,对所述至少一个数据块进行压缩后存储至所述目标数据库中。
相应的,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述数据同步的方法。
相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述数据同步的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构的示意图;
图2为本发明实施例提供的一种数据同步的方法的流程示意图;
图3为本发明实施例提供的另一种数据同步的方法的流程示意图;
图4为本发明实施例提供的一种并行执行同步作业的方法的流程示意图;
图5为本发明实施例提供的一种表结构字段更新的示意图;
图6为本发明实施例提供的一种将数据转换为预设格式字符串的示意图;
图7为本发明实施例提供的一种数据同步的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了更好的解释本发明实施例,先对本发明实施例中涉及的专业术语做如下解释:
Spark:是专为大规模数据处理而设计的快速通用的分布式计算引擎。
Flink:是一个面向分布式数据流处理和批量数据处理的开源计算平台。
Sqoop:是一种用于在Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据的工具。
Hadoop:是一个允许使用简单的编程模型通过计算机集群分布式处理大型数据集的软件框架。
HDFS:是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。
Hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce作业进行运行。
HBase(Hadoop Database,分布式存储系统):是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
ORC(Optimized Row Columnar):是一种Hadoop生态圈中的列式存储格式,用于降低Hadoop数据存储空间和加速Hive查询速度。
Parquet:Parquet是Hadoop上的一种支持列式存储文件格式。Parquet用于把嵌套结构存储成扁平格式。
Dataframe:是一个以命名列方式组织的分布式弹性数据集,是Spark中对带模式(schema)行列数据的抽象。
RRD(Resilient Distributed Dataset,弹性分布式数据集):是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。
结合上述描述,图1示例性的示出了本发明实施例提供数据同步的方法所适用的系统架构,该系统架构可以为数据同步系统100,该数据同步系统100可以包括源数据库101、数据同步工具102、目标数据库103。
其中,源数据库101可以是传统的关系型数据库,如MySql、Oracle、PostgreSQL等;源数据库101可以有多个,可以将数据分布在多个源数据库101中。当然,也可以理解成源数据库101为一个,源数据库101包括多个源数据库101节点,将数据分布在源数据库101的多个源数据库101节点中。
目标数据库103可以是HDFS、Hive或者HBase。
并发:一个处理器同时处理多个任务,为逻辑上的同时发生(simultaneous)。
并行:多个处理器或者是多核的处理器同时处理多个不同的任务,为物理上的同时发生。
在图1的基础上,图2示例性的示出了本发明实施例提供的一种数据同步的方法的流程,该流程可以由上述数据同步工具执行。
如图2所示,该流程具体包括:
步骤201,获取数据同步指令;
步骤202,创建数据同步指令对应的Spark会话,并在Spark会话中创建与N个源数据库相对应的N个同步作业;
步骤203,针对任一个同步作业,根据数据同步指令中针对同步作业对应的源数据库的执行权重,从Spark会话对应的资源池中确定用于执行同步作业的计算资源,并调用计算资源从同步作业对应的源数据库中获取数据;
步骤204,将各同步作业获取的数据存储至目标数据库。
本发明实施例中,可以是数据同步工具接收用户下发的数据同步指令,该数据同步指令用于指示数据同步工具从N个源数据库中获取数据并同步至目标数据库中,N大于1;实际应用中,数据同步系统中可以包括M个源数据库,M大于等于N,用户需要同步数据时,从M个源数据库中确定用于同步数据的N个源数据库,并将该N个源数据库的标识记载在数据同步指令中下发给数据同步工具。此外,数据同步指令中不仅可以包括待同步数据的源数据库的标识,还可以包括对同步作业所配置的计算资源(驱动器(Driver)、执行器(Exacutor))、执行权重、数据存储格式(ORC数据格式、Parquet数据格式)、表结构字段的同步方式(是否需要主动同步表结构字段)等,各配置参数在下述实施例中具体说明。
每个源数据库对应一个同步作业(Job),也即步骤202中,在数据同步过程中,数据同步工具会先创建一个Spark会话(SparkSession),并在Spark会话中创建N个同步作业,用于并行地从对应的N个源数据库中复制数据,将数据复制到Spark的Dataframe或RRD中。示例性的,如图3中有5个源数据库,数据同步工具在Spark会话中创建5个同步作业,分别与5个源数据库相对应,并分别从各自的源数据库中抽取数据。此外,图3还涉及将各同步作业所获取的数据进行数据合并和格式转换,以及将数据的表结构字段和目标数据库中的表结构字段进行对比,并更新目标数据库中的表结构字段,该步骤在下述实施例中具体描述。
以Spark会话中的任一个同步作业进行说明,每个同步作业对应执行权重,该执行权重可以是用户在下发数据同步指令时进行配置的,该配置信息可以是用户针对该同步作业对应的源数据库所配置的执行权重,若用户未对其中一个或多个同步作业配置执行权重,则数据同步工具可以根据默认的执行权重执行相应的资源调用,以从对应的源数据库中获取数据。
一种可实现方式中,数据同步工具在获取到数据同步指令后,启动Spark会话,Spark会话构建DAG图(有向无环图),并使用多线程的方式启动各同步作业,如图4中,针对任一个同步作业,DAG根据同步作业的分区信息(partition)生成多个任务(Task),并打包成任务集合(TaskSet),将打包好的任务集合提交给任务调度器(TaskScheduler),任务调度器将任务集合封装成任务集合管理器(TaskSetManager),并指定到对应的公平策略调度资源池(FairPool)中。具体的,相同执行权重的同步作业的任务集合管理器被分配到同一个公平策略调度资源池中,也即,同一个公平策略调度资源池的任务集合管理器在调度根资源池(RootPool)中的计算资源时具有相同权重。如图4中,将任务集合管理器1、2、3对应至公平策略调度资源池1中,将任务集合管理器4、5对应至公平策略调度资源池2中。该技术方案中,可以实现不同公平策略调度资源池按照执行权重轮询从根资源池中调度计算资源,可以实现各任务集合管理器都有机会被执行,而不会因为某些同步作业长时间运行而导致其他同步作业阻塞。
通过该技术方案,可以实现多个同步作业在一个Spark会话中并行执行,且可以根据各同步作业的执行权重,从Spark会话对应的资源池中确定各同步作业的计算资源,各同步作业并行执行或者轮流获取计算资源执行,相比于各同步作业串行或并发执行,可以有效提高数据同步的速度。实际应用中,本方案采用的并行同步相比于比现有的Sqoop方案或者其他方案可以提高至少5倍的同步速率。
数据同步工具在将Spark会话中各同步作业获取到的数据存储至目标数据库之前,可以先对目标数据库中的表结构字段进行更新,或者可以将各同步作业获取到的数据转换为预设格式的字符串,或者还可以将各同步作业获取到的数据执行数据合并等。
一种可实现方式中,数据同步工具可以将源数据库中的表结构字段同步至目标数据库中,即在确定源数据库中的表结构字段多于目标数据库中的表结构字段时,可以主动更新目标数据库中的表结构字段。可以在各同步作业获取到数据时,合并各同步作业获取的数据的表结构字段,相当于确定出N个源数据库的表结构字段的并集,同时获取目标数据库的表结构字段,将二者进行对比,若不一致,则根据N个源数据库的表结构字段的并集更新目标数据库的表结构字段。在将目标数据库的表结构字段更新后,可以按照更新后的目标数据库的表结构字段,将各同步作业获取的数据存储至目标数据库。
此处,数据同步工具可以根据用户配置判断是否执行目标数据库中表结构字段的自动更新,如数据同步工具获取到用户的数据同步指令中包括自动同步表结构字段的指示信息,则数据同步工具可以在确定出二者不一致时,对目标数据库中的表结构字段进行自动更新。
数据同步工具可以将N个源数据库的表结构的字段集合与Hive表结构的字段集合进行对比,如有不一致时,则对Hive表进行更新操作。如图5示出的例子中,确定出第一个源数据库的表结构的字段包括字段1、字段2、字段3、字段4,第二个源数据库的表结构的字段包括字段1、字段2、字段3、字段4,第三个源数据库的表结构的字段包括字段1、字段2、字段3、字段4、字段5,将第一个源数据库、第二个源数据库、第三个源数据库求并集,确定三个源数据的表结构的字段集合为字段1、字段2、字段3、字段4、字段5,同时获取Hive表的元数据中表结构的字段集合为字段1、字段2、字段3、字段4,则可以确定源数据的表结构的字段集合多于Hive表的表结构的字段集合,需要更新Hive表的表结构字段,将字段5同步至Hive表的表结构的元数据中。
通过该技术方案,可以避免数据同步工具在数据同步时出现数据丢失的情况,举例来说,若源数据库的表结构字段有字段1、字段2、字段3,目标数据库的表结构字段有字段1、字段2,当数据同步工具从源数据库中获取字段1、字段2、字段3分别对应的数据时,可以将字段1、字段2分别对应的数据按照目标数据库的字段1、字段2进行相应存储,但是此时,因为目标数据库中不存在字段3,则数据同步工具不能将从源数据库中获取的字段3对应的数据存储至目标数据库中,于是会把该部分数据丢掉。而通过上述技术方案,数据同步工具可以在确定源数据库的表结构字段多于目标数据库的表结构字段时,主动根据源数据库的表结构字段更新目标数据库的表结构字段,从而实现将源数据库中的数据存储至目标数据库中时,可以有效避免数据丢失的情况,保证了数据的完整性。且该技术方案实现自动同步源数据库和目标数据库的表结构字段,无需人工手动更新,提高了更新效率。
另一种可实现方式中,数据同步工具可以针对任一个同步作业,将同步作业获取的数据生成预设格式的字符串,如JSON(JavaScript Object Notation,JS对象简谱)格式的字符串,然后将预设格式的字符串存储至目标数据库中。如图6中,数据同步工具可以将各同步作业从各源数据库中获取的数据(表结构的字段和数值)转换为JSON格式的字符串,并将JSON格式的字符串存储至Hive表的一个字段中。举例来说,数据同步工具从源数据库中获取的数据(表结构的字段和数值)如表1所示,并将该获取的数据转换为JSON格式的字符串如{“字段1”:“数值1”,“字段2”:“数值2”,“字段3”:“数值3”}。
表1
字段1 | 字段2 | 字段3 |
数值1 | 数值2 | 数值3 |
基于上述描述,在Hive表中存储JSON格式的字符串可以如下格式:
{“字段1”:“数值1”,“字段2”:“数值2”,“字段3”:“数值3”}
{“字段1”:“数值4”,“字段2”:“数值5”,“字段3”:“数值6”}
{“字段1”:“数值7”,“字段2”:“数值8”}
通过该技术方案,可以将同步作业获取的数据以预设格式的字符串形式存储至目标数据库中,在源数据库中的表结构字段发生增加或删除时,不会影响目标数据库中数据的存储,也即该方式可以使得目标数据库自适应表结构的变化。
考虑到目标数据库是以数据块的形式存储数据,所以可以先将各同步作业获取的数据执行数据合并后,再存储至目标数据库中,以减少数据存储所需的存储空间。具体实现中,数据同步工具可以针对同步作业从源数据库获取的任一次数据,将数据作为行数据,将各行数据合并为至少一个数据块并将至少一个数据块存储至目标数据库中。
分别结合图5、图6对数据合并进行说明。
图5中,将各同步作业获取的数据按照表结构字段进行合并,如第一个数据库对应的同步作业获取的数据如表2(a)所示,如第二个数据库对应的同步作业获取的数据如表2(b)所示,如第三个数据库对应的同步作业获取的数据如表2(c)所示,然后将三个同步作业获取的数据进行数据合并,则合并成表2(d),并将该表2(d)对应存储至Hive表中。
表2(a)
字段1 | 字段2 | 字段3 | 字段4 |
Mark | 90 | 80 | 90 |
Vincent | 50 | 78 | 48 |
表2(b)
字段1 | 字段2 | 字段3 | 字段4 |
Henry | 98 | 88 | 72 |
Martin | 58 | 15 | 47 |
表2(c)
表2(d)
字段1 | 字段2 | 字段3 | 字段4 | 字段5 |
Mark | 90 | 80 | 90 | — |
Vincent | 50 | 78 | 48 | — |
Henry | 98 | 88 | 72 | — |
Martin | 58 | 15 | 47 | — |
Joan | 47 | 65 | 83 | 75 |
Lily | 58 | 89 | 55 | 77 |
图6中,将各同步作业获取的数据转换为预设格式的字符串,如第一个数据库对应的同步作业获取的数据的字符串为{“字段1”:“Mark”,“字段2”:“90”,“字段3”:“80”},第二个数据库对应的同步作业获取的数据的字符串为{“字段1”:“Vincent”,“字段2”:“50”,“字段3”:“78”},第三个数据库对应的同步作业获取的数据的字符串为{“字段1”:“Henry”,“字段2”:“98”},然后将三个同步作业获取的数据进行数据合并为如下列中的字段,并存储至Hive表中。
{“字段1”:“Mark”,“字段2”:“90”,“字段3”:“80”}
{“字段1”:“Vincent”,“字段2”:“50”,“字段3”:“78”}
{“字段1”:“Henry”,“字段2”:“98”}
通过上述方式,可以将多个同步作业所获取的数据在Spark对话中合并,将合并后的数据存储至目标数据库的一个数据块中,避免将N份数据分别存储在N个数据块中,避免浪费存储资源。进一步的,在Spark对话中将多个同步作业所获取的数据执行合并,可以方便后续Spark对合并后的数据直接执行大数据计算,无需将N个数据块中数据执行合并作业后再执行大数据计算,即节省了Spark的计算资源。
需要说明的是,目标数据库的一个数据块的存储资源有限,若存在将多个同步作业所获取的数据合并后所需内存大于一个数据块的内存,则可以将多个同步作业所获取的数据合并为多个数据块以存储至目标数据库中。
此外,还可以将合并后的数据压缩后存储至目标数据库中,以减少数据所占的存储空间。用户在下发数据同步指令时可以选择将合并后的数据按照预设的压缩格式进行存储,即数据同步指令中还可以包括预设的压缩格式。该预设的压缩格式的可以是ORC数据格式或Parquet数据格式。具体实现中,数据同步工具根据数据同步指令中的压缩格式,对至少一个数据块进行压缩后存储至目标数据库中。通过压缩方式,可以进一步减少数据存储至目标数据库时所占的存储空间。实际应用中,本方案实现目标数据库中的存储空间可以缩小至原有方案的20%。
本发明实施例中还可以采用Flink作为大规模数据处理平台,以实现上述数据获取和存储的过程。
通过该技术方案,可以实现多个同步作业在一个Spark会话中并行执行,且可以根据各同步作业的执行权重,从Spark会话对应的资源池中确定各同步作业的计算资源,各同步作业并发执行或者轮流获取计算资源执行,相比于各同步作业串行或并发执行,可以有效提高数据同步的速度。实际应用中,本方案采用的并行同步相比于比现有的Sqoop方案或者其他方案可以提高至少5倍的同步速率。
基于同一发明构思,图7示例性的示出了本发明实施例提供的一种数据同步的装置的结构,该装置可以执行数据同步的方法的流程。
该装置包括:
获取单元701,用于获取数据同步指令,所述数据同步指令用于指示从N个源数据库中获取数据并同步至目标数据库中;N大于1;
创建单元702,用于创建所述数据同步指令对应的Spark会话,并在所述Spark会话中创建与所述N个源数据库相对应的N个同步作业;
处理单元703,用于针对任一个同步作业,根据所述数据同步指令中针对所述同步作业对应的源数据库的执行权重,从所述Spark会话对应的资源池中确定用于执行所述同步作业的计算资源,并调用所述计算资源从所述同步作业对应的源数据库中获取数据;
所述处理单元703还用于,将各同步作业获取的数据存储至所述目标数据库。
可选的,所述处理单元703还用于:
在所述将各同步作业获取的数据存储至所述目标数据库之前,确定所述N个源数据库的表结构字段的并集;
获取所述目标数据库的表结构字段;
根据所述并集更新所述目标数据库的表结构字段;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
按照更新后的所述目标数据库的表结构字段,将各同步作业获取的数据存储至所述目标数据库。
可选的,所述处理单元703还用于:
在所述将各同步作业所获取的数据存储至所述目标数据库之前,针对任一个同步作业,将所述同步作业获取的数据生成预设格式的字符串;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
将所述预设格式的字符串存储至所述目标数据库中。
可选的,所述目标数据库中的数据以数据块的形式存储;
所述处理单元703具体用于:
针对同步作业从源数据库获取的任一次数据,将所述数据作为行数据;
将各行数据合并为至少一个数据块并将所述至少一个数据块存储至所述目标数据库。
可选的,所述数据同步指令中还包括压缩格式;
所述处理单元703具体用于:
根据所述压缩格式,对所述至少一个数据块进行压缩后存储至所述目标数据库中。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述数据同步的方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述数据同步的方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种数据同步的方法,其特征在于,包括:
获取数据同步指令,所述数据同步指令用于指示从N个源数据库中获取数据并同步至目标数据库中;N大于1;
创建所述数据同步指令对应的Spark会话,并在所述Spark会话中创建与所述N个源数据库相对应的N个同步作业;
针对任一个同步作业,根据所述数据同步指令中针对所述同步作业对应的源数据库的执行权重,从所述Spark会话对应的资源池中确定用于执行所述同步作业的计算资源,并调用所述计算资源从所述同步作业对应的源数据库中获取数据;
将各同步作业获取的数据存储至所述目标数据库。
2.如权利要求1所述的方法,其特征在于,在所述将各同步作业获取的数据存储至所述目标数据库之前,还包括:
确定所述N个源数据库的表结构字段的并集;
获取所述目标数据库的表结构字段;
根据所述并集更新所述目标数据库的表结构字段;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
按照更新后的所述目标数据库的表结构字段,将各同步作业获取的数据存储至所述目标数据库。
3.如权利要求1所述的方法,其特征在于,在所述将各同步作业所获取的数据存储至所述目标数据库之前,还包括:
针对任一个同步作业,将所述同步作业获取的数据生成预设格式的字符串;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
将所述预设格式的字符串存储至所述目标数据库中。
4.如权利要求1至3任一项所述的方法,其特征在于,所述目标数据库中的数据以数据块的形式存储;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
针对同步作业从源数据库获取的任一次数据,将所述数据作为行数据;
将各行数据合并为至少一个数据块并将所述至少一个数据块存储至所述目标数据库。
5.如权利要求4所述的方法,其特征在于,所述数据同步指令中还包括压缩格式;
所述将所述至少一个数据块存储至所述目标数据库,包括:
根据所述压缩格式,对所述至少一个数据块进行压缩后存储至所述目标数据库中。
6.一种数据同步的装置,其特征在于,包括:
获取单元,用于获取数据同步指令,所述数据同步指令用于指示从N个源数据库中获取数据并同步至目标数据库中;N大于1;
创建单元,用于创建所述数据同步指令对应的Spark会话,并在所述Spark会话中创建与所述N个源数据库相对应的N个同步作业;
处理单元,用于针对任一个同步作业,根据所述数据同步指令中针对所述同步作业对应的源数据库的执行权重,从所述Spark会话对应的资源池中确定用于执行所述同步作业的计算资源,并调用所述计算资源从所述同步作业对应的源数据库中获取数据;
所述处理单元还用于,将各同步作业获取的数据存储至所述目标数据库。
7.如权利要求6所述的装置,其特征在于,所述处理单元还用于:
在所述将各同步作业获取的数据存储至所述目标数据库之前,确定所述N个源数据库的表结构字段的并集;
获取所述目标数据库的表结构字段;
根据所述并集更新所述目标数据库的表结构字段;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
按照更新后的所述目标数据库的表结构字段,将各同步作业获取的数据存储至所述目标数据库。
8.如权利要求6所述的装置,其特征在于,所述处理单元还用于:
在所述将各同步作业所获取的数据存储至所述目标数据库之前,针对任一个同步作业,将所述同步作业获取的数据生成预设格式的字符串;
所述将各同步作业获取的数据存储至所述目标数据库,包括:
将所述预设格式的字符串存储至所述目标数据库中。
9.如权利要求6至8任一项所述的装置,其特征在于,所述目标数据库中的数据以数据块的形式存储;
所述处理单元具体用于:
针对同步作业从源数据库获取的任一次数据,将所述数据作为行数据;
将各行数据合并为至少一个数据块并将所述至少一个数据块存储至所述目标数据库。
10.如权利要求9所述的装置,其特征在于,所述数据同步指令中还包括压缩格式;
所述处理单元具体用于:
根据所述压缩格式,对所述至少一个数据块进行压缩后存储至所述目标数据库中。
11.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至5任一项所述的方法。
12.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910756835.2A CN110457397A (zh) | 2019-08-16 | 2019-08-16 | 一种数据同步的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910756835.2A CN110457397A (zh) | 2019-08-16 | 2019-08-16 | 一种数据同步的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110457397A true CN110457397A (zh) | 2019-11-15 |
Family
ID=68487064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910756835.2A Pending CN110457397A (zh) | 2019-08-16 | 2019-08-16 | 一种数据同步的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110457397A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110928954A (zh) * | 2019-12-04 | 2020-03-27 | 深圳前海环融联易信息科技服务有限公司 | HBase索引同步方法、装置、计算机设备及存储介质 |
CN111427951A (zh) * | 2020-02-27 | 2020-07-17 | 深圳壹账通智能科技有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN111708621A (zh) * | 2020-05-22 | 2020-09-25 | 伟恩测试技术(武汉)有限公司 | 一种基于多线程并行处理的Pattern文件的显示方法 |
CN112395290A (zh) * | 2020-11-20 | 2021-02-23 | 深圳市麦谷科技有限公司 | 一种数据同步实现方法及系统 |
CN112925835A (zh) * | 2019-12-05 | 2021-06-08 | 北京金山云网络技术有限公司 | 数据同步方法、装置和服务器 |
CN113204598A (zh) * | 2021-05-28 | 2021-08-03 | 平安科技(深圳)有限公司 | 一种数据同步方法、系统及存储介质 |
CN113672591A (zh) * | 2021-07-27 | 2021-11-19 | 北京明略昭辉科技有限公司 | 数据迁移方法、系统、存储介质及电子设备 |
CN113934752A (zh) * | 2021-12-17 | 2022-01-14 | 中证信用增进股份有限公司 | 基于Spark组件的数据处理方法、装置、设备及介质 |
CN114546989A (zh) * | 2022-02-22 | 2022-05-27 | 重庆长安汽车股份有限公司 | 一种Hbase增量数据迁移系统、方法及存储介质 |
WO2024037173A1 (zh) * | 2022-08-17 | 2024-02-22 | 华为技术有限公司 | 一种调度器、作业调度方法及相关设备 |
CN113672683B (zh) * | 2021-08-19 | 2024-03-29 | 上海沄熹科技有限公司 | 基于Spark SQL的分布式数据库元数据同步装置及方法 |
CN117931941A (zh) * | 2024-01-03 | 2024-04-26 | 羚羊工业互联网股份有限公司 | 数据同步方法、系统及电子设备 |
-
2019
- 2019-08-16 CN CN201910756835.2A patent/CN110457397A/zh active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110928954A (zh) * | 2019-12-04 | 2020-03-27 | 深圳前海环融联易信息科技服务有限公司 | HBase索引同步方法、装置、计算机设备及存储介质 |
CN112925835A (zh) * | 2019-12-05 | 2021-06-08 | 北京金山云网络技术有限公司 | 数据同步方法、装置和服务器 |
CN111427951A (zh) * | 2020-02-27 | 2020-07-17 | 深圳壹账通智能科技有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN111708621B (zh) * | 2020-05-22 | 2024-03-29 | 伟恩测试技术(武汉)有限公司 | 一种基于多线程并行处理的Pattern文件的显示方法 |
CN111708621A (zh) * | 2020-05-22 | 2020-09-25 | 伟恩测试技术(武汉)有限公司 | 一种基于多线程并行处理的Pattern文件的显示方法 |
CN112395290A (zh) * | 2020-11-20 | 2021-02-23 | 深圳市麦谷科技有限公司 | 一种数据同步实现方法及系统 |
CN112395290B (zh) * | 2020-11-20 | 2024-06-18 | 深圳市麦谷科技有限公司 | 一种数据同步实现方法及系统 |
CN113204598A (zh) * | 2021-05-28 | 2021-08-03 | 平安科技(深圳)有限公司 | 一种数据同步方法、系统及存储介质 |
CN113204598B (zh) * | 2021-05-28 | 2023-05-09 | 平安科技(深圳)有限公司 | 一种数据同步方法、系统及存储介质 |
CN113672591A (zh) * | 2021-07-27 | 2021-11-19 | 北京明略昭辉科技有限公司 | 数据迁移方法、系统、存储介质及电子设备 |
CN113672683B (zh) * | 2021-08-19 | 2024-03-29 | 上海沄熹科技有限公司 | 基于Spark SQL的分布式数据库元数据同步装置及方法 |
CN113934752A (zh) * | 2021-12-17 | 2022-01-14 | 中证信用增进股份有限公司 | 基于Spark组件的数据处理方法、装置、设备及介质 |
CN114546989A (zh) * | 2022-02-22 | 2022-05-27 | 重庆长安汽车股份有限公司 | 一种Hbase增量数据迁移系统、方法及存储介质 |
CN114546989B (zh) * | 2022-02-22 | 2024-04-12 | 重庆长安汽车股份有限公司 | 一种Hbase增量数据迁移系统、方法及存储介质 |
WO2024037173A1 (zh) * | 2022-08-17 | 2024-02-22 | 华为技术有限公司 | 一种调度器、作业调度方法及相关设备 |
CN117931941A (zh) * | 2024-01-03 | 2024-04-26 | 羚羊工业互联网股份有限公司 | 数据同步方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110457397A (zh) | 一种数据同步的方法及装置 | |
Armenatzoglou et al. | Amazon Redshift re-invented | |
Low et al. | Distributed graphlab: A framework for machine learning in the cloud | |
Vulimiri et al. | Global analytics in the face of bandwidth and regulatory constraints | |
CA2963088C (en) | Apparatus and method for scheduling distributed workflow tasks | |
CN107239335B (zh) | 分布式系统的作业调度系统及方法 | |
US20200090085A1 (en) | Digital twin graph | |
US11971793B2 (en) | Machine learning model-based dynamic prediction of estimated query execution time taking into account other, concurrently executing queries | |
CN101359333B (zh) | 一种基于隐含狄利克雷分配模型的并行数据处理方法 | |
CN110383247A (zh) | 由计算机执行的方法、计算机可读介质与异构计算系统 | |
Castellana et al. | In-memory graph databases for web-scale data | |
CN109416682A (zh) | 用于管理数据库的系统和方法 | |
CN112579586A (zh) | 数据处理方法、装置、设备及存储介质 | |
Tran et al. | Large-scale geographically weighted regression on Spark | |
Saldhi et al. | Big data analysis using Hadoop cluster | |
Totoo et al. | Parallel Haskell implementations of the N‐body problem | |
Yui et al. | A database-hadoop hybrid approach to scalable machine learning | |
Cassales et al. | Improving parallel performance of ensemble learners for streaming data through data locality with mini-batching | |
Chan et al. | A distributed stream library for Java 8 | |
Messina et al. | Exploiting gpus to simulate complex systems | |
CN105573834B (zh) | 一种基于异构平台的高维词汇树构建方法 | |
Misale | PiCo: A domain-specific language for data analytics pipelines | |
Kumar et al. | Cost model for pregel on graphx | |
Kruliš et al. | Optimizing sorting and top-k selection steps in permutation based indexing on gpus | |
Kumar et al. | Computing spatial distance histograms for large scientific data sets on-the-fly |
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 |