CN112925834B - 数据导入的方法和装置 - Google Patents

数据导入的方法和装置 Download PDF

Info

Publication number
CN112925834B
CN112925834B CN201911236756.5A CN201911236756A CN112925834B CN 112925834 B CN112925834 B CN 112925834B CN 201911236756 A CN201911236756 A CN 201911236756A CN 112925834 B CN112925834 B CN 112925834B
Authority
CN
China
Prior art keywords
data
imported
partition
target
partitioning
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
Application number
CN201911236756.5A
Other languages
English (en)
Other versions
CN112925834A (zh
Inventor
古青松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201911236756.5A priority Critical patent/CN112925834B/zh
Publication of CN112925834A publication Critical patent/CN112925834A/zh
Application granted granted Critical
Publication of CN112925834B publication Critical patent/CN112925834B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据导入的方法和装置。其中,该方法包括:获取目标表;根据目标表中的分区信息对待导入数据进行分区;根据分区,将分区中的待导入数据写入目标集群,其中,目标表与目标集群对应。本发明解决了相关技术中大数据存储系统离线数据导入的效率低的技术问题。

Description

数据导入的方法和装置
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种数据导入的方法和装置。
背景技术
大数据存储系统除了应用通过应用程序编程接口(Application ProgrammingInterface,API)实时写入的数据之外,还有很大一部分数据来源于离线导入。应用系统产生的数据被同步到离线系统,经过离线计算、加工后又回流到在线存储系统,供在线应用、实时计算任务等使用。
对于大数据应用,离线导入的数据量越来越大,目前已达到TB级,对导入的速度要求也越来越高。同时对于单元化或有容灾需求的应用,可能同时部署了多个集群用于线上服务,因此一份数据需要同时导入多个集群。另外,当用户需要迁移存储系统时,需要向两个存储系统同时导入数据一段时间。
针对相关技术中大数据存储系统离线数据导入的效率低的技术问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据导入的方法和装置,以至少解决相关技术中大数据存储系统离线数据导入的效率低的技术问题。
根据本发明实施例的一个方面,提供了一种数据导入的方法,包括:获取目标表;根据目标表中的分区信息对待导入数据进行分区;根据分区,将分区中的待导入数据写入目标集群,其中,目标表与目标集群对应。
可选地,获取目标表包括:根据全局唯一标识符导入目标表。
可选地,根据目标表中的分区信息对待导入数据进行分区包括:根据目标表中的分区信息,对分区信息中的待导入数据进行排序;将排序后的待导入数据进行分区。
进一步地,可选地,将排序后的待导入数据进行分区包括:依据预设分区规则对排序后的待导入数据进行分区,其中,预设分区规则,用于在多个目标集群分区的范围发生交叉时,取最小交集得到分区。
可选的,预设分区规则是将排序后的待导入数据按主键映射到对应的分区。
可选地,根据分区,将分区中的待导入数据写入目标集群包括:读取每个分区中的待导入数据;依据待导入数据生成数据文件;将数据文件写入目标集群。
进一步地,可选的,依据待导入数据生成数据文件包括:将待导入数据进行压缩、编码、生成布隆过滤器和索引,得到数据文件。
可选地,根据分区,将数据文件写入目标集群包括:在导入多个目标集群时,对数据文件封装多集群输出流,得到封装后的数据文件;将封装后的数据文件导入目标集群。
可选地,该方法还包括:在待导入数据导入目标集群的情况下,通过调用预设接口,将数据在所有集群中生效。
根据本发明另一实施例的另一方面,还提供了一种数据导入的装置,包括:获取模块,用于获取目标表;分区模块,用于根据目标表中的分区信息对待导入数据进行分区;导入模块,用于根据分区,将分区中的待导入数据写入目标集群,其中,目标表与目标集群对应。
根据本发明另一实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述数据导入的方法。
根据本发明另一实施例的又一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述数据导入的方法。
在本发明实施例中,首先获取目标表,然后根据目标表中的分区信息对待导入数据进行分区,最后根据分区,将分区中的待导入数据写入目标集群。与现有技术相比,上述方案提出了一种面向大数据存储系统的高效多集群离线数据导入方案,根据目标表中的分区信息对待导入数据进行调度和读写,可将数据同时导入多个目标集群,大大减少了导入任务的运维、管理成本,进而解决了相关技术中大数据存储系统离线数据导入的效率低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种社区分布式计算模型方式导入数据的流程图;
图2是本发明实施例的一种数据导入的方法的计算机终端的硬件结构框图;
图3是根据本发明实施例一的数据导入的方法的流程图;
图4是根据本发明实施例一的数据导入的方法中的排序时分区规则的示意图;
图5是根据本发明实施例一的数据导入的方法中的数据文件分发至多集群的示意图;
图6是根据本发明实施例一的数据导入的方法中的数据导入多集群的流程图;
图7是根据本发明实施例二的数据导入的装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请涉及的技术名词:
导入服务器:Importer Server,数据导入服务的服务节点,负责数据导入任务的调度和执行。
HBase:Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的开源NoSQL存储系统。
多集群输出流:Multi-Cluster Output Stream,将同一份数据同时写入到多个目标文件系统中。
全局唯一标识符:Globally Unique Identifier,简称GUID,是一种由算法生成的二进制长度为128位的数字标识符。
实施例1
根据本发明实施例,还提供了一种数据导入的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图2是本发明实施例的一种数据导入的方法的计算机终端的硬件结构框图。如图2所示,计算机终端20可以包括一个或多个(图中仅示出一个)处理器202(处理器202可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器204、以及用于通信功能的传输模块206。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端20还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
存储器204可用于存储应用软件的软件程序以及模块,如本发明实施例中的数据导入的方法对应的程序指令/模块,处理器202通过运行存储在存储器204内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的数据导入的方法。存储器204可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器204可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端20。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端20的通信供应商提供的无线网络。在一个实例中,传输模块206包括一个网络适配器(Network Interface Controller,简称NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块206可以为射频(Radio Frequency,简称RF)模块,其用于通过无线方式与互联网进行通讯。
在上述运行环境下,本申请提供了如图3所示的数据导入的方法。图3是根据本发明实施例一的数据导入的方法的流程图,如图3所示,该方法包括以下步骤:
步骤S302,获取目标表。
本申请上述步骤S302中,该目标表用于指示存储系统的数据分区情况。
在本申请实施例提供的数据导入的方法中如果有多个目标存储系统,需要获取所有目标存储系统的目标表。而数据导入任务的启动者可以为客户端导入服务器的应用程序编程接口(API)。
其中,在本申请实施例中存储系统以HBase和增强型的HBase数据库为例进行说明,客户端导入服务器的API启动导入任务,需要将数据同时导入HBase和增强型的HBase数据库,则需要获取HBase和增强型的HBase数据库各自的目标表。
这里HBase存储数据其底层使用的是HDFS(Hadoop分布式文件系统)来作为存储介质,HBase的每一张目标表对应HDFS目录上的一个文件夹,文件夹名以HBase表进行命名。在目标表文件夹下存放着若干个分区(Region)命名的文件夹,Region文件夹中的每个列簇也是用文件夹进行存储的,每个列簇中存储就是实际的数据,以HFile的形式存在。
其中,导入服务器(Importer Server),在本发明中可以为数据导入服务的服务节点,负责数据导入任务的调度和执行;
需要说明的是,本申请实施例中以HBase和增强型的HBase数据库为优选示例进行说明,以实现本申请实施例提供的数据导入的方法为准,具体不做限定。
步骤S304,根据目标表中的分区信息对待导入数据进行分区。
本申请上述步骤S304中,上述分区(Region)表示一段连续的数据空间,一个分区包含一个起始键值startkey和一个结束键值endkey,因此,导入服务器可以根据分区的startkey和endkey提取出目标表中的分区信息。
其中,导入服务器主要负责执行整个导入任务的调度和数据读写,导入服务器根据startkey和endkey提取出目标表中的分区信息,进而根据目标表中的分区信息对待导入的数据进行分区,这样便可以保证待导入的数据都能写入目标存储系统中。
在本申请实施例提供的数据导入的方法中该待导入数据进行分区的过程可以通过调用开放数据处理服务(Open Data Processing Service,简称ODPS)的结构化查询语言(Structured Query Language,简称SQL)进行,SQL适用于TB级别的海量数据,SQL可以为同各种数据库建立联系,进行沟通。
需要说明的是,本申请上述示例仅以ODPS和SQL为例进行说明,以能够实现在存储系统中对数据进行整理为准,不做具体限定。
步骤S306,根据分区,将分区中的待导入数据写入目标集群,其中,目标表与目标集群对应。
本申请上述步骤S306中,该目标集群可以为步骤S302中多个目标存储系统组成的目标存储系统群。
其中,目标表对应的目标集群可以通过导入服务器以元数据管理的方式进行管理。
由于步骤S304是根据目标表中的分区信息对待导入数据进行分区的,因此步骤S306可以确保待导入数据都能写入目标集群中。
在本申请实施例提供的数据导入的方法中对于有容灾需求的应用同时部署了多个集群用于线上服务,因此一份数据需要同时导入多个集群,下面以HBase和增强型的HBase数据库两个集群为例进行说明。首先,客户端导入服务器的API启动导入任务,将数据同时导入HBase和增强型的HBase数据库,需要获取HBase和增强型的HBase数据库各自的目标表。然后导入服务器根据startkey和endkey提取出目标表中的分区信息,进而根据目标表中的分区信息对待导入数据进行分区,最后根据分区好的数据将待导入数据写入目标集群中,以确保待导入的数据都能写入目标集群中,提高数据导入的效率。
此外,本申请实施例提供的数据导入的方法可以适用于高可靠性、高性能、面向列、可伸缩的存储系统,本申请实施例中以HBase和增强型的HBase数据库两个集群为优选示例进行说明,以实现本申请实施例提供的数据导入的方法为准,具体不做限定。即,凡是能够与HBase和增强型的HBase数据库功能相同,或功能优于HBase和增强型的HBase数据库的存储系统均属于本申请实施例提供的数据导入的方法的适用范围。
在本发明实施例中,首先获取目标表,然后根据目标表中的分区信息对待导入数据进行分区,最后根据分区,将分区中的待导入数据写入目标集群。与现有技术相比,上述方案提出了一种面向大数据存储系统的高效多集群离线数据导入方案,根据目标表中的分区信息对待导入数据进行调度和读写,可将数据同时导入多个目标集群,大大减少了导入任务的运维、管理成本,进而解决了相关技术中大数据存储系统离线数据导入的效率低的技术问题。
可选地,步骤S302获取目标表包括:
步骤S3021,根据全局唯一标识符导入目标表。
其中,由于任何存储系统都不会生成两个相同的GUID,因此,每个目标表可以由GUID进行标识,以使得根据GUID获取对应的目标表。
可选地,步骤S304根据目标表中的分区信息对待导入数据进行分区包括:
步骤S3041,根据目标表中的分区信息,对分区信息中的待导入数据进行排序。
步骤S3042,将排序后的待导入数据进行分区。
具体的,上述排序方式可以为根据数据的大小进行排序,既可以按照数据从大到小的顺序进行排序,也可以按照数据从小到大的顺序进行排序,以确保不会遗漏数据。
上述方案通过把排序和数据读写分离,使多集群导入只需要一次排序,多集群导入情况下可以节约大量计算和存储资源。
此外,排序的过程还可以按时间序列进行排序,以此保障数据在时序上的完整性;
因此,本申请实施例仅以根据数据量的大小对待导入数据进行排序为例进行说明,以实现数据排序为准,具体不做限定。
可选地,步骤S3042中将排序后的待导入数据进行分区包括:
步骤S30421,依据预设分区规则对排序后的待导入数据进行分区,其中,预设分区规则,用于在多个目标集群分区的范围发生交叉时,取最小交集得到分区。
其中,本申请实施例中的最小交集可以取自多个目标集群分区中的任意两个。也就是说,任意两个数据分区存在范围交叉,那么交叉的部分和非交叉的部分各自成立一个分区,以使每个分区的数据在任何一个集群都不会跨越多个分区。
图4是根据本发明实施例一的数据导入的方法中的排序时分区规则的示意图。如图4所示,排序时分区规则是一个将数据按主键映射到对应的分区的过程,多个目标集群分区的范围发生交叉时,取最小交集。在图4的三个目标集群中,首先将各目标表中的待导入数据按照从小到大的顺进行排序,然后再分区,以确保不会遗漏数据。接着对任意两个分区数据取交集,即,如图4所示:
第一分区:由于目标集群1-表A分区中Region1、Region2和Region3,分别与目标集群2-表A分区中Region1、Region2、Region3和Region4,以及与目标集群3-表A分区中Region1和Region2产生交集,为确保数据的全部导入,且不发生遗漏,以最小交集的方式进行分区,如图4所示,横轴上第一个分区最小交集是[0,3],即,目标集群2-表A分区中Region1,但是这样分区会导致将目标集群1-表A分区中Region1和目标集群3-表A分区中Region1分成至少两个部分,因此继续分区;
第二分区,基于第一分区,继续以最小交集进行分区,即,目标集群1-表A分区中Region1在第一次分区后的剩余部分和目标集群3-表A分区中Region1在第一次分区后的剩余部分取最小交集,得到[3,4],将[3,4]作为第二分区;
同理,第三分区,由于目标集群3-表A分区中Region1在第二分区后仍有剩余,此时将目标集群3-表A分区中Region1在第二分区后仍有剩余的部分与目标集群1-表A分区中的Region2和目标集群2-表A分区中的Region2取最小交集,得到[4,5],将[4,5]作为第三分区,以此类推,得到最终排序后的分区:[-,0],[0,3],[3,4],[4,5],[5,7],[7,8],[8,11],[11,-],这样同一个排序后的分区数据生成的数据文件才能被装载到所有集群的对应分区内。
可选地,步骤S306中的根据分区,将分区中的待导入数据写入目标集群可以包括:
步骤S3061,读取每个分区中的待导入数据。
步骤S3062,依据待导入数据生成数据文件。
具体的,结合步骤S3061和步骤S3062,由于任务(Task)可以实现并发操作,在本申请实施例提供的数据导入的方法中,上述数据文件可以为读取数据生成数据文件。
步骤S3063,将数据文件写入目标集群。
本申请上述步骤S3063中,导入服务器可以对每个数据分区创建一个数据文件。导入服务器在读取分区好的数据后生成数据文件,以便将数据文件同时写入到所有目标集群中。
可选地,步骤S3063中将数据文件写入目标集群可以包括:
步骤S30631,在导入多个目标集群时,对数据文件封装多集群输出流,得到封装后的数据文件。
本申请上述步骤S30631中,上述多集群输出流(MultiClusterOutputStream)可以将同一份数据同时写入到多个目标存储系统中。
步骤S30632,将封装后的数据文件导入目标集群。
下面以图5为例对上述方案进行解释说明,图5是根据本发明实施例一的数据导入的方法中的数据文件分发至多集群的示意图。如图5所示,由于生成数据文件时需要对数据进行读取、压缩、编码、布隆过滤器Bloomfilter和索引等计算,而上述计算务必消耗大量计算资源。因此,多集群导入时通过底层封装一个多集群输出流(MultiClusterOutputStream),使得数据文件只需要经过一次计算,便可以在分发(flush)时输出到多个集群,减少了(N-1)倍的计算开销和内存消耗,其中,N为目标集群数。通过上述方案,图5中的计算消耗和资源消耗减小了3倍。
其中,在对待导入数据进行压缩、编码、生成bloomfilter和索引等计算的过程中,生成Bloomfilter可以应用于海量数据的去重,并且处理缓存穿透时,可以用于校验请求的key是否存在,生成Bloomfilter能够后在后期数据读取的过程中,在能够接受的错误率的情况下,高效的处理海量数据的去重和判重。
可选地,本申请实施例提供的数据导入方法还包括:
步骤S308,在待导入数据导入目标集群的情况下,通过调用预设接口,将数据在所有集群中生效。
本申请上述步骤S308中,上述预设接口可以为bulkLoad接口,bulkLoad可以使数据在所有集群同时生效;上述预设接口可以通过导入服务器并发调用。
现有技术中,在进行数据传输中,批量加载数据到HBase集群有多种方式,比如通过HBase API进行批量写入数据、使用Sqoop工具批量导数到HBase集群、使用MapReduce批量导入等。这些方式,在导入数据的过程中,如果数据量过大,可能耗时会比较严重或者占用HBase集群资源较多(如磁盘IO、HBase Handler数等)。而本申请实施例提供的数据导入的方法使用HBase BulkLoad的方式来进行海量数据批量写入到HBase集群,在所有集群数据文件都写入完成后再一起并发Load,所以数据生效时间各集群之间的差异在分钟以内,大大减少了数据的不一致性时间。
图6是根据本发明实施例一的数据导入的方法中的数据导入多集群的流程图,如图6所示,导入服务器ImporterServer1-3负责执行整个导入任务的调度和数据读写。客户端通过导入服务器API启动导入任务,导入服务器根据目标表的分区信息,对数据进行排序并分区,即,根据部分1至导入服务器1,部分2至导入服务器2,部分3至导入服务器3的过程;导入服务器在读取数据后对每个数据分区创建一个任务,生成数据文件,这里一个分区的数据会被一台ImporterServer读取,然后写入到数据文件(hfile1,2.3;以及file1,2,3);多集群导入时通过在底层封装一个多集群输出流,使得数据只需要一次计算,分发时输出到多个集群,即,如图6中HFile1,2,3指向RS1,RS2,以及,File1,2,3指向服务器1和服务器2的过程;当所有分区数据都写入完成后,导入服务器并发调用批量装载接口,使数据在所有集群同时生效。
其中,RS指向HFile是指数据读取出来后会写入到目标集群的数据文件(hfile)中,同理在增强型HBase中服务器指向File也是指数据读取出来后会写入到目标集群的数据文件(File)中。如图6中的1、2、3、4是指数据导入的四个步骤,具体如下:
步骤1,客户端通过ImporterServer API启动导入任务(通过guid标示导入的目标表,目标表对应的目标集群由ImporterServer元数据管理);
其中,一个导入任务定义了从一张源表将数据按一定转换规则(配置)导入到一个目标集群的目标表中,每个导入任务都需要有一个目标表guid是表的唯一标示,包含了目标集群+目表名的信息,比如:hbase.testcluster1.table1代表的是hbase集群testcluster1上的表table1。
步骤2,ImporterServer根据存储系统表的分区信息,对数据进行排序并分区(例如:通过调用ODPS SQL进行);
其中,排序时分区规则(将数据按主键映射到对应的分区):多个目标集群分区的范围发生交叉时,取最小交集(即,步骤S30421),以使每个分区的数据在任何一个集群都不会跨越多个分区(这样同一个排序后的分区数据生成的数据文件才能被load到所有集群的对应分区内),
步骤3,ImporterServer对每个数据分区创建一个任务task,读取数据生成数据文件,并同时写入到所有目标集群(即,本申请实施例中的步骤S306);
其中,生成数据文件时需要对数据进行压缩、编码、生成bloomfilter和索引等计算,多集群导入时通过底层封装一个多集群输出流(MultiClusterOutputStream),使得数据只需要一次计算,flush时输出到多个集群。减少了N倍的计算消耗(N=目标集群数):
步骤4,当所有分区数据都写入完成后,ImporterServer并发调用bulkload接口,使数据在所有集群同时生效,集群内及集群之间数据不一致的时间在分钟内(即,本申请实施例中的步骤S308)。
其中,同时生效的意义在于多个集群之间的数据不一致时间更短,比如单元化的业务,不同城市的应用会访问本地机房的集群的数据,如果不同机房的数据很长时间不一致,业务上不周城市会因为数据不一样产生不一样的效果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述数据导入的方法的装置,图7是根据本发明实施例二的数据导入的装置的示意图,如图7所示,本申请实施例提供的数据导入的装置700包括:获取模块702、分区模块704和导入模块706,其中,
获取模块702,用于获取目标表。
一种可选方案中,上述目标表可以为存储系统的数据分区情况。上述目标表可以为所要导入的目标存储系统的目标表。
需要说明的是,如果有多个目标系统,需要获取所有目标存储系统的目标表。而数据导入任务的启动者可以为客户端导入服务器的应用程序编程接口(API)。
所谓导入服务器(Importer Server),在本发明中可以为数据导入服务的服务节点,负责数据导入任务的调度和执行,其主要作用可以体现如下:
分区模块704,用于根据目标表中的分区信息对待导入数据进行分区。
一种可选方案中,上述分区(Region)表示一段连续的数据空间,一个分区包含一个startkey和一个endkey,因此,导入服务器可以根据分区的startkey和endkey提取出目标表中的分区信息。
上述方案中,导入服务器主要负责执行整个导入任务的调度和数据读写,导入服务器根据startkey和endkey提取出目标表中的分区信息,进而根据目标表中的分区信息对待导入的数据进行分区,这样便可以保证待导入的数据都能写入目标存储系统中。
一种可选方案中,上述待导入数据进行分区的过程可以通过调用大数据计算服务(ODPS)的结构化查询语言(SQL)进行,SQL适用于TB级别的海量数据,SQL可以为同各种数据库建立联系,进行沟通。
导入模块706,用于根据分区,将分区中的待导入数据写入目标集群,其中,目标表与目标集群对应。
一种可选方案中,上述目标集群可以为目标存储系统群。
目标表对应的目标集群可以由导入服务器的元数据管理
由于实施例1中的步骤S304是根据目标表中的分区信息对待导入数据进行分区的,因此步骤S306可以确保待导入的数据都能写入目标集群中。
可选地,获取模块可以包括获取子模块,用于根据全局唯一标识符导入目标表。
由于任何存储系统都不会生成两个相同的GUID,因此,上述目标表可以由GUID进行标识。
可选地,分区模块可以包括:排序模块,用于根据目标表中的分区信息,对分区信息中的待导入数据进行排序;分区子模块,用于将排序后的待导入数据进行分区。
一种可选方案中,上述排序方式可以为根据数据的大小进行排序,既可以按照数据从大到小的顺序进行排序,也可以按照数据从小到大的顺序进行排序,以确保不会遗漏数据。
上述方案通过把排序和数据读写分离,使多集群导入只需要一次排序,多集群导入情况下可以节约大量计算和存储资源。
可选地,分区子模块可以包括:最小分区模块,用于依据预设分区规则对排序后的待导入数据进行分区,其中,预设分区规则,用于在多个目标集群分区的范围发生交叉时,取最小交集得到分区。
一种可选方案中,上述最小交集可以取自多个目标集群分区中的任意两个。也就是说,任意两个数据分区存在范围交叉,那么交叉的部分和非交叉的部分各自成立一个分区,以使每个分区的数据在任何一个集群都不会跨越多个分区。
可选地,导入模块可以包括:读取模块,用于读取每个分区中的待导入数据;生成模块,用于依据待导入数据生成数据文件;写入模块,用于将数据文件写入目标集群。
由于任务(Task)可以实现并发操作,一种可选方案中,上述数据文件可以为任务。
上述方案中,导入服务器可以对每个数据分区创建一个数据文件。导入服务器在读取分区好的数据后生成数据文件,以便将数据文件同时写入到所有目标集群中。
可选地,写入模块可以包括:封装模块,用于对数据文件封装多集群输出流,得到封装后的数据文件;写入子模块,用于将封装后的数据文件导入目标集群。
一种可选方案中,上述多集群输出流可以将同一份数据同时写入到多个目标存储系统中。
可选地,上述装置还可以包括:生效模块,用于在待导入数据导入目标集群的情况下,通过调用预设接口,将数据在所有集群中生效。
一种可选方案中,上述预设接口可以为BulkLoad接口,BulkLoad可以将海量数据同时写入到目标集群中;上述预设接口可以通过导入服务器并发调用。
上述方案中,当所有分区数据都写入完成后,导入服务器并发调用BulkLoad接口,使数据在所有集群中同时生效,该方案可以使集群内及集群之间数据不一致的时间缩小到分钟内,大大减少了数据生效的时间不一致性。
通过上述实施例,获取模块可以获取目标表;分区模块可以根据目标表中的分区信息对待导入数据进行分区;导入模块可以根据分区,将分区中的待导入数据写入目标集群。与现有技术相比,上述方案提出了一种独立的数据导入服务,通过导入服务器将导入任务和底层存储系统解藕,对用户屏蔽了底层目标存储系统及文件系统的实现细节,使用户不需要感知底层的变化,如新的压缩算法、新的文件系统、新的存储系统等,大大减少了导入任务的运维、管理成本;通过将排序和数据读写分离、多集群分区最小交集、以及多集群输出流将多集群导入的资源开销大大降低;同时在所有数据文件创建完成后再进行批量装载,有效减少了集群内及集群间数据生效时间的不一致性,进而解决了相关技术中大数据存储系统离线数据导入的效率低的技术问题。
此处需要说明的是,上述获取模块702、分区模块704和导入模块706对应于实施例1中的步骤S302至步骤S306,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端20中。
实施例3
根据本发明另一实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述实施例1的方法。
实施例4
根据本发明另一实施例的又一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述实施例1方法。
实施例5
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的数据导入的方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取目标表;根据目标表中的分区信息对待导入数据进行分区;根据分区,将分区中的待导入数据写入目标集群。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取目标表包括:根据全局唯一标识符导入目标表。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据目标表中的分区信息对待导入数据进行分区包括:根据目标表中的分区信息,对分区信息中的待导入数据进行排序;将排序后的待导入数据进行分区。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:将排序后的待导入数据进行分区包括:依据预设分区规则对排序后的待导入数据进行分区,其中,预设分区规则,用于在多个目标集群分区的范围发生交叉时,取最小交集得到分区。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:预设分区规则是将排序后的待导入数据按主键映射到对应的分区。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据分区,将分区中的待导入数据写入目标集群包括:读取每个分区中的待导入数据;依据待导入数据生成数据文件;将数据文件写入目标集群。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:依据待导入数据生成数据文件包括:将待导入数据进行压缩、编码、生成布隆过滤器和索引,得到数据文件。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在导入多个目标集群时,根据分区,将数据文件写入目标集群包括:对数据文件封装多集群输出流,得到封装后的数据文件;将封装后的数据文件导入目标集群。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在待导入数据导入目标集群的情况下,通过调用预设接口,将数据在所有集群中生效。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种数据导入的方法,包括:
获取目标表;
根据所述目标表中的分区信息对待导入数据进行分区;
根据所述分区,将所述分区中的待导入数据写入目标集群,其中,所述目标表与所述目标集群对应;
其中,所述根据所述目标表中的分区信息对待导入数据进行分区包括:
根据所述目标表中的分区信息,对所述分区信息中的待导入数据进行排序;
将排序后的待导入数据进行分区;
所述将排序后的待导入数据进行分区包括:
依据预设分区规则对所述排序后的待导入数据进行分区,其中,所述预设分区规则,用于在多个目标集群分区的范围发生交叉时,取最小交集得到所述分区。
2.根据权利要求1所述的方法,其中,所述获取目标表包括:
根据全局唯一标识符导入所述目标表。
3.根据权利要求1所述的方法,其中,所述预设分区规则是将所述排序后的待导入数据按主键映射到对应的分区。
4.根据权利要求1所述的方法,其中,所述根据所述分区,将所述分区中的待导入数据写入目标集群包括:
读取每个分区中的待导入数据;
依据所述待导入数据生成数据文件;
将所述数据文件写入所述目标集群。
5.根据权利要求4所述的方法,其中,所述依据所述待导入数据生成数据文件包括:
将所述待导入数据进行压缩、编码、生成布隆过滤器和索引,得到所述数据文件。
6.根据权利要求5所述的方法,其中,所述根据所述分区,所述将所述数据文件写入所述目标集群包括:
在导入多个目标集群时,对所述数据文件封装多集群输出流,得到封装后的数据文件;
将封装后的数据文件导入所述目标集群。
7.根据权利要求1所述的方法,其中,所述方法还包括:
在所述待导入数据导入所述目标集群的情况下,通过调用预设接口,将所述数据在所有集群中生效。
8.一种数据导入的装置,包括:
获取模块,用于获取目标表;
分区模块,用于根据所述目标表中的分区信息对待导入数据进行分区;
导入模块,用于根据所述分区,将所述分区中的待导入数据写入目标集群,其中,所述目标表与所述目标集群对应;
其中,分区模块包括:排序模块,用于根据目标表中的分区信息,对分区信息中的待导入数据进行排序;分区子模块,用于将排序后的待导入数据进行分区;
分区子模块包括:最小分区模块,用于依据预设分区规则对排序后的待导入数据进行分区,其中,预设分区规则,用于在多个目标集群分区的范围发生交叉时,取最小交集得到分区。
9.一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1所述的数据导入的方法。
10.一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1所述的数据导入的方法。
CN201911236756.5A 2019-12-05 2019-12-05 数据导入的方法和装置 Active CN112925834B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911236756.5A CN112925834B (zh) 2019-12-05 2019-12-05 数据导入的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911236756.5A CN112925834B (zh) 2019-12-05 2019-12-05 数据导入的方法和装置

Publications (2)

Publication Number Publication Date
CN112925834A CN112925834A (zh) 2021-06-08
CN112925834B true CN112925834B (zh) 2024-05-31

Family

ID=76161887

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911236756.5A Active CN112925834B (zh) 2019-12-05 2019-12-05 数据导入的方法和装置

Country Status (1)

Country Link
CN (1) CN112925834B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118394852A (zh) * 2024-06-26 2024-07-26 支付宝(杭州)信息技术有限公司 用于在线导入图数据的方法、装置和图数据库系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105550296A (zh) * 2015-12-10 2016-05-04 深圳市华讯方舟软件技术有限公司 一种基于spark-SQL大数据处理平台的数据导入方法
CN109997125A (zh) * 2016-09-15 2019-07-09 英国天然气控股有限公司 用于将数据导入数据储存库的系统
CN110019337A (zh) * 2017-11-02 2019-07-16 阿里巴巴集团控股有限公司 确定数据库中有效分区的方法、装置和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838598B2 (en) * 2007-11-30 2014-09-16 International Business Machines Corporation System and computer program product for automated design of range partitioned tables for relational databases
US10715472B2 (en) * 2017-08-22 2020-07-14 Oracle International Corporation System and method for unit-of-order routing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105550296A (zh) * 2015-12-10 2016-05-04 深圳市华讯方舟软件技术有限公司 一种基于spark-SQL大数据处理平台的数据导入方法
CN109997125A (zh) * 2016-09-15 2019-07-09 英国天然气控股有限公司 用于将数据导入数据储存库的系统
CN110019337A (zh) * 2017-11-02 2019-07-16 阿里巴巴集团控股有限公司 确定数据库中有效分区的方法、装置和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一致性哈希算法在数据库集群上的拓展应用;赵飞;苏忠;;成都信息工程学院学报;20150215(01);全文 *

Also Published As

Publication number Publication date
CN112925834A (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
CN108536761B (zh) 报表数据查询方法及服务器
CN107391629B (zh) 集群间数据迁移方法、系统、服务器及计算机存储介质
CN107391502B (zh) 时间间隔的数据查询方法、装置及索引构建方法、装置
EP2577512A2 (en) Data loading systems and methods
CN111159180A (zh) 一种基于数据资源目录构建的数据处理方法及系统
CN111651453A (zh) 用户历史行为查询方法、装置、电子设备及存储介质
CN103440246A (zh) 用于MapReduce的中间结果数据排序方法及系统
CN107748752A (zh) 一种数据处理方法及装置
CN113177090A (zh) 数据处理方法及装置
Silva et al. Integrating big data into the computing curricula
CN104778252A (zh) 索引的存储方法和装置
CN116414801A (zh) 数据迁移方法、装置、计算机设备和存储介质
CN112925834B (zh) 数据导入的方法和装置
CN104063374A (zh) 一种对数据进行去重的方法和设备
CN112445776B (zh) 基于Presto的动态分桶方法、系统、设备及可读存储介质
CN117056303B (zh) 适用于军事行动大数据的数据存储方法及装置
CN115033551A (zh) 一种数据库迁移方法、装置、电子设备及存储介质
CN106101710A (zh) 一种分布式视频转码方法及装置
CN115409507A (zh) 区块处理方法、区块处理装置、计算机设备及存储介质
CN112800091A (zh) 一种流批一体式计算控制系统及方法
CN112506887A (zh) 车辆终端can总线数据处理方法及装置
CN116760661A (zh) 数据存储方法、装置、计算机设备、存储介质和程序产品
CN108595552B (zh) 数据立方体发布方法、装置、电子设备和存储介质
CN115114293A (zh) 一种数据库索引的创建方法、相关装置、设备及存储介质
CN114880385B (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
GR01 Patent grant
GR01 Patent grant