数据导入方法及装置与流程

文档序号:26102437发布日期:2021-07-30 18:13阅读:81来源:国知局
数据导入方法及装置与流程

本申请实施例涉及计算机技术领域和大数据领域,尤其涉及一种数据导入方法及装置。



背景技术:

spark处理器是为大规模数据处理而设计的快速通用的计算引擎,spark处理器可以分布式读取数据,通过对数据做各种转换、加工处理等,将处理后的数据,分布式的导入存储目标(如数据库管理系统,具体可以为clickhouse,clickhouse是一款用于大数据实时分析的列式数据库管理系统)。

在现有技术中,数据的导入方法包括:获取数据导入请求,数据导入请求中包括一个或多个待导入数据,在数据库管理系统的各存储分片中,随机为一个或多个待导入数据分配存储分片,并将一个或多个待导入数据导入至相应的存储分片中。

在实现本申请过程中,发明人发现现有技术中至少存在如下问题:通过随机导入的方法将待导入数据导入至数据库管理系统,可能存在因不同的待导入数据共同争用同一存储节点,而造成的导入速率偏低的技术问题。



技术实现要素:

本申请实施例提供一种数据导入方法及装置,用以解决数据的导入效率偏低的问题。

第一方面,本申请实施例提供一种数据导入方法,包括:

响应于数据导入指令,将待导入数据分割成多个数据分片,并根据各所述数据分片和列式数据库管理系统的各存储分片构建导入关系,其中,所述导入关系用于指示数据分片与存储分片之间的对应关系;

将每一所述数据分片,导入至与数据分片具有对应关系的存储分片中。

值得说明地是,在本实施例中,在本实施例中,通过构建数据分片与存储分片之间的导入关系,且导入关系用于指示数据分片与存储分片之间的对应关系,以便基于该导入关系将数据分片导入至对应的存储分片中,避免了相关技术中,基于随机导入策略对待导入数据进行导入时,造成的因不同的待导入数据共同争用同一存储节点,而导致的导入速率偏低的技术问题,通过基于导入关系执行导入操作,可以实现针对性的导入,提高了导入速率的技术效果。

在一些实施例中,根据各所述数据分片和列式数据库管理系统的各存储分片构建导入关系,包括:

生成包括各所述存储分片的地址信息的列表,并在用于执行导入操作的多个导入线程中广播所述列表;

根据每一所述导入线程,对所述列表和各所述数据分片之间的取模处理结果,构建所述导入关系。

值得说明地是,在本实施例中,通过确定列表,并基于列表与数据分片之间的取模结果,构建导入关系,可以使得各数据分片在各存储分片中相对较为平均的分配,从而使得各存储分片的负载相对较为均衡,从而可以提高数据导入的性能,也可以提高对列式数据库管理系统的资源的保护和利用率的技术效果。

在一些实施例中,根据每一所述导入线程,对所述列表和各所述数据分片之间的取模处理结果,构建所述导入关系,包括:

为每一所述数据分片分配索引值,并为每一所述导入线程分配包括索引值的数据分片;

根据每一所述导入线程,对分配得到的数据分片、以及所述列表之间取模结果,构建所述导入关系。

值得说明地是,在本实施例中,通过分配索引值,并将包括索引值的数据分片分配给导入线程,以便基于导入线程对分配得到的数据分片、列表之间的取模结构,构建导入关系,可以提高构建导入关系的效率,且可以使得各数据分片在各存储分片中平均分配,从而提高资源利用率的技术效果。

在一些实施例中,根据每一所述导入线程,对分配得到的数据分片、以及所述列表之间取模结果,构建所述导入关系,包括:

通过每一所述导入线程,确定所述列表中各所述存储分片的总数量,并根据每一所述导入线程,对分配得到的数据分片的索引值、以及各所述存储分片的总数量之间取模结果,构建所述导入关系。

值得说明地是,在本实施例中,通过每一导入线程进行取模处理,得到取模结果,由于各导入线程之间相互独立,且并行执行,因此,可以提高确定取模结果的效率,进而可以提高构建导入关系的效率的技术效果。

在一些实施例中,将每一所述数据分片,导入至与数据分片具有对应关系的存储分片中,包括:

通过每一所述导入线程,并行将每一所述导入线程分配得到的数据分片导入至具有对应关系的存储分片中。

值得说明地是,在本实施例中,通过基于多个导入线程并行执行导入操作,可以提高各数据分片被导入的效率的技术效果。

在一些实施例中,若任意数据分片导入失败,则所述方法还包括:

根据预设时间间隔,将所述任意数据分片重新导入至具有对应关系的存储分片中。

值得说明地是,在本实施例中,针对任意数据分片导入失败的情况,数据导入装置可以在时间间隔之后,重新进行导入,且仍然基于导入关系进行导入,可以避免相关技术中,重新运行(即从新竞争存储分片)前期操作完全失效,导致的资源浪费的技术问题,提高了资源利用率,且提高了导入效率,且避免了因重新运行而造成的数据丢失的问题,即还提高了数据导入的准确性和可靠性的技术效果。

在一些实施例中,若任意数据分片导入失败,则所述方法还包括:

确定与所述任意数据分片具有对应关系的存储分片,并确定与所述任意数据分片具有对应关系的存储分片的副本,并将所述任意数据分片导入至所述副本中。

值得说明地是,在本实施例中,通过将导入失败的任意数据分片,导入至相应的副本中,可以达到高性能,高容错的技术效果,且可以提高数据导入的灵活性的技术效果。

在一些实施例中,所述多个存储分片是:基于获取到的数据导入任务的数量,和/或,所述列式数据库管理系统的负载确定的,所述数据导入任务中包括所述待导入数据。

值得说明地是,在本实施例中,通过数据导入任务的数量和/或负载确定存储分片,可以防止过分压榨列式数据库管理系统的资源,并可以尽量提高列式数据库管理系统的负载均衡,提高资源的合理利用的技术效果。

在一些实施例中,所述数据导入任务的数量小于所述多个存储分片的数据导入任务的阈值;和/或,所述多个存储分片的负载小于预设的负载阈值。

第二方面,本申请实施例提供一种数据导入装置,包括:

分割单元,用于响应于数据导入指令,将待导入数据分割成多个数据分片;

构建单元,用于根据各所述数据分片和列式数据库管理系统的各存储分片构建导入关系,其中,所述导入关系用于指示数据分片与存储分片之间的对应关系;

第一导入单元,将每一所述数据分片,导入至与数据分片具有对应关系的存储分片中。

在一些实施例中,所述构建单元包括:

生成子单元,用于生成包括各所述存储分片的地址信息的列表;

广播子单元,用于在用于执行导入操作的多个导入线程中广播所述列表;

构建子单元,用于根据每一所述导入线程,对所述列表和各所述数据分片之间的取模处理结果,构建所述导入关系。

在一些实施例中,所述构建子单元包括:

分配模块,用于为每一所述数据分片分配索引值,并为每一所述导入线程分配包括索引值的数据分片;

构建模块,用于根据每一所述导入线程,对分配得到的数据分片、以及所述列表之间取模结果,构建所述导入关系。

在一些实施例中,所述构建模块用于,通过每一所述导入线程,确定所述列表中各所述存储分片的总数量,并根据每一所述导入线程,对分配得到的数据分片的索引值、以及各所述存储分片的总数量之间取模结果,构建所述导入关系。

在一些实施例中,所述第一导入单元用于,通过每一所述导入线程,并行将每一所述导入线程分配得到的数据分片导入至具有对应关系的存储分片中。

在一些实施例中,所述装置还包括:

第二导入单元,用于若任意数据分片导入失败,根据预设时间间隔,将所述任意数据分片重新导入至具有对应关系的存储分片中。

在一些实施例中,所述装置还包括:

确定单元,用于若任意数据分片导入失败,确定与所述任意数据分片具有对应关系的存储分片,并确定与所述任意数据分片具有对应关系的存储分片的副本;

第三导入单元,用于将所述任意数据分片导入至所述副本中。

在一些实施例中,所述多个存储分片是:基于获取到的数据导入任务的数量,和/或,所述列式数据库管理系统的负载确定的,所述数据导入任务中包括所述待导入数据。

在一些实施例中,所述数据导入任务的数量小于所述多个存储分片的数据导入任务的阈值;和/或,所述多个存储分片的负载小于预设的负载阈值。

第三方面,本申请实施例提供一种电子设备,包括:存储器,处理器;

存储器;用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为用于执行如第一方面所述的方法。

第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的方法。

第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如第一方面所述的方法。

第六方面,本申请实施例提供一种数据导入系统,包括:列式数据库管理系统、以及如第二方面所述的数据导入装置。

本申请实施例提供的数据导入方法及装置,包括:响应于数据导入指令,将待导入数据分割成多个数据分片,并根据各数据分片和列式数据库管理系统的各存储分片构建导入关系,导入关系用于指示数据分片与存储分片之间的对应关系,将每一数据分片,导入至与数据分片具有对应关系的存储分片中,通过构建数据分片与存储分片之间的导入关系,以便基于该导入关系将数据分片导入至对应的存储分片中,避免了相关技术中,基于随机导入策略对待导入数据进行导入时,造成的因不同的待导入数据共同争用同一存储节点,而导致的导入速率偏低的技术问题,通过基于导入关系执行导入操作,可以实现针对性的导入,提高了导入速率的技术效果。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为本申请一个实施例的数据导入方法的流程示意图;

图2为本申请另一实施例的数据导入方法的流程示意图;

图3为本申请另一实施例的数据导入方法的流程示意图;

图4为本申请一个实施例的数据导入装置;

图5为本申请一个实施例的数据导入装置;

图6为本申请一个实施例的数据导入装置;

图7为本申请实施例的电子设备的示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

对本申请实施例所涉及的名词进行解释如下:

数据分片:是指组成数据的组成单元,如在本实施例中,数据分片为组成待导入数据的组成单元,一个待导入数据可以包括多个数据分片。

存储分片:是指用于组成存储装置的组成单元,如在本实施例中,存储分片为组成列式数据库管理系统的组成单元,若组成列式数据库管理系统为包括多个机器的存储装置,则一个存储分片可以为一个机器,或者,一个机器也可以包括多个存储分片。

导入线程:是指操作系统能够进行运算调度的最小单位。

取模处理:也可以称为求余运算。

随着互联网技术的发展,尤其是电商科技的飞速进步,数据的量的增加比例明显加大,怎样提高对数据的导入效率等成了亟待解决的问题。

例如,数据导入方法的应用场景可以为:数据导入装置可以将离线数仓中的数据,导入至数据导入列式数据库管理系统;或者,数据导入装置可以分布式文件系统(distributedfilesystem,hdfs)中的数据,导入至数据导入列式数据库管理系统。

值得说明地是,上述两个数据导入方法的应用场景,只是用于示范性地说明,数据导入方法可能应用的场景,而不能理解为对应用场景的限定。

在相关技术中,可以采用计算引擎(如spark)处理器将离线数仓中的数据,导入至列式数据库管理系统,且在具体实现时,通常采用随机导入的策略实现,如从列式数据库管理系统中随机选择存储分片,并将待导入数据写入至该随机选择的存储分片。

然而,采用随机导入的策略,可能存在因不同的待导入数据共同争用同一存储节点,而造成的导入速率偏低的技术问题。

为了避免上述技术问题,本申请的发明人经过创造性地劳动,得到了本申请的发明构思:构建数据分片与存储分片之间的导入关系,以便基于该导入关系将数据分片,导入至与数据分片具有导入关系的存储分片中。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

请参阅图1,图1为本申请一个实施例的数据导入方法的流程示意图。

如图1所示,该方法包括:

s101:响应于数据导入指令,将待导入数据分割成多个数据分片。

示例性地,本实施例的执行主体为数据导入装置,且数据导入装置可以为服务器(如云端服务器,或者,本地服务器),也可以为终端设备,也可以为处理器(如spark处理器),也可以为芯片等,本实施例不做限定。

其中,数据导入指令为用于指示:数据导入装置对待导入数据执行导入操作的指令。

在本实施例中,对数据导入指令的来源不做限定。

一个示例中,数据导入指令可以为用户向导入装置触发的。例如,工作人员向数据导入装置发起数据导入指令。

另一个示例中,数据导入指令可以为导入装置基于预设的触发条件自动触发的。例如,触发条件为数据的量达到预设的阈值时,导入装置自动触发数据导入指令,并执行后续的数据导入操作。

再一个示例中,数据导入指令可以为其他装置向数据导入装置发起的。例如,调度装置基于列式数据库管理系统的负载信息,向数据导入装置发起的数据导入指令。

应该理解地是,上述示例只是用于示范性地说明,数据导入指令可能的来源,而不能理解为对数据导入指令的限定。

在本实施例中,对待导入数据的分割策略不做限定。例如,可以预先设置分割参数,并基于分割参数对待导入数据进行分割,得到多个数据分片。

s102:根据各数据分片和列式数据库管理系统的各存储分片构建导入关系。

其中,导入关系用于指示数据分片与存储分片之间的对应关系。

列式数据库管理系统中包括多个存储分片,一个存储分片可以理解为一个存储节点。或者,列式数据库管理系统可以理解为包括多个机器的存储集群,一个存储分片为一个机器,当然,一个机器中也可以设置多个分片。

s103:将每一数据分片,导入至与数据分片具有导入关系的存储分片中。

结合上述分析,在本实施例中,构建了数据分片与存储分片之间的对应关系,因此,针对任意数据分片,数据导入装置可以将该任意数据分片,导入至与该任意数据分片具有对应关系的存储节点中,实现针对性地导入。

基于上述分析可知,在本实施例中,引入了:构建数据分片与存储分片之间的导入关系的特征,且导入关系用于指示数据分片与存储分片之间的对应关系,以便基于该导入关系将数据分片导入至对应的存储分片中,避免了相关技术中,基于随机导入策略对待导入数据进行导入时,造成的因不同的待导入数据共同争用同一存储节点,而导致的导入速率偏低的技术问题,通过基于导入关系执行导入操作,可以实现针对性的导入,提高了导入速率的技术效果。

请参阅图2,图2为本申请另一实施例的数据导入方法的流程示意图。

如图2所示,该方法包括:

s201:响应于数据导入指令,将待导入数据分割成多个数据分片。

示例性地,关于s201地描述,可以参见s101,此处不再赘述。

s202:生成包括各存储分片的地址信息的列表,并在用于执行导入操作的多个导入线程中广播列表。

示例性地,数据导入装置可以基于列式数据库管理系统中各分片(基于上述分析,一个机器可以理解为一个节点,或者,一个分片,或者,也可以为包括多个分片的节点,在本实施例中,以分片为例进行示范性地说明)之间的连接属性(如各分片之间的连接关系),确定列式数据库管理系统包括的各分片,并将各个分片的互联网协议(internetprotocoladdress,ip)地址存储为一个列表(hostlist)。

其中,数据导入装置可以为spark处理装置,且当数据导入装置为spark处理装置时,导入线程可以理解为spark处理装置中的执行器(executor)。

数据导入装置中包括多个导入线程,导入线程用于将数据分片导入至与数据分片具有对应关系的存储分片。

s203:根据每一所述导入线程,对列表和各数据分片之间的取模处理结果,并根据取模处理结果构建导入关系。

值得说明地是,在本实施例中,通过确定列表,并基于列表与数据分片之间的取模结果,构建导入关系,可以使得各数据分片在各存储分片中相对较为平均的分配,从而使得各存储分片的负载相对较为均衡,从而可以提高数据导入的性能,也可以提高对列式数据库管理系统的资源的保护和利用率的技术效果。

在一些实施例中,s203可以包括如下步骤:

第一步骤:为每一数据分片分配索引值,并为每一导入线程分配包括索引值的数据分片。

在一些实施例中,数据导入装置可以基于各数据分片的总数量为每一数据分片分配索引值。

例如,数据导入装置确定各数据分片的总数量,根据各数据分片的总数量为每一数据分片分配索引值。

示例性地,数据导入装置对各数据分片的总数量进行确定,得到各数据分片的总数量为18,即共有18个数据分片。

数据导入装置根据各数据分片的总数量为每一数据分片分配索引值,索引值可以表征数据分片的排序值,如第一个数据分片的索引值1,以此类推,此处不再一一列举。

第二步骤:根据每一导入线程,对分配得到的数据分片、以及列表之间取模结果,构建导入关系。

值得说明地是,在本实施例中,通过分配索引值,并将包括索引值的数据分片分配给导入线程,以便基于导入线程对分配得到的数据分片、列表之间的取模结构,构建导入关系,可以提高构建导入关系的效率,且可以使得各数据分片在各存储分片中平均分配,从而提高资源利用率的技术效果。

在一些实施例中,第二步骤可以包括如下子步骤:

第一子步骤:通过每一导入线程,确定列表中各所述存储分片的总数量。

例如,任意线程对各存储分片的总数量进行确定,得到各存储分片的总数量为10,即共有10个存储分片。

第二子步骤:根据每一导入线程,对分配得到的数据分片的索引值、以及各存储分片的总数量之间取模结果,构建导入关系。

例如,针对索引值为18的数据分片,数据导入装置的取模处理结果为8,则相应地,索引值为18的数据分片被分配给第8个存储分片,即索引值为18的数据分片与第8个存储分片之间存在对应关系。

值得说明地是,在本实施例中,通过每一导入线程进行取模处理,得到取模结果,由于各导入线程之间相互独立,且并行执行,因此,可以提高确定取模结果的效率,进而可以提高构建导入关系的效率的技术效果。

需要说明地是,基于s202和s203可知,在本实施例中,是通过取模处理的方式构建导入关系,在另一些实施例中,也可以基于分桶策略构建导入关系。

在另一些实施例中,也可以由数据导入装置直接确定取模结果,并根据取模结果构建导入关系,且为每一导入线程分配数据分片,以便每一导入线程对分配的数据分片导入至具有对应关系的存储分片中。

基于上述两种不同构建导入关系的策略可知,在一些实施例中,数据导入装置可以基于多个导入线程的取模处理结果,构建导入关系,也可以直接确定取模处理结果,并基于取模处理结果构建导入关系。

相对而言,针对独立导入线程的场景,可以优选采用数据导入装置直接基于取模处理结果构建导入关系,针对多个导入线程的场景,可以优选采用基于每一导入线程的取模处理结果构建导入关系。

s204:将每一数据分片,导入至与数据分片具有对应关系的存储分片中。

示例性地,关于s204地描述,可以参见s103,此处不再赘述。

结合上述实施例可知,数据导入装置可以将各数据分片分配给相应的导入线程,因此,在一些实施例中,s204可以包括:通过每一导入线程,并行将每一导入线程分配得到的数据分片导入至具有对应关系的存储分片中。

值得说明地是,在本实施例中,通过基于多个导入线程并行执行导入操作,可以提高各数据分片被导入的效率的技术效果。

在一些实施例中,各数据分片中,可能存在一个或多个数据分片导入失败的情况,则针对任意数据分片导入失败的情况,一个示例中,本实施例的数据导入方法还可以包括:根据预设时间间隔,将任意数据分片重新导入至具有对应关系的存储分片中。

也就是说,针对任意数据分片导入失败的情况,数据导入装置可以在时间间隔之后,重新进行导入,且仍然基于导入关系进行导入,可以避免相关技术中,重新运行(即从新竞争存储分片)前期操作完全失效,导致的资源浪费的技术问题,提高了资源利用率,且提高了导入效率,且避免了因重新运行而造成的数据丢失的问题,即还提高了数据导入的准确性和可靠性的技术效果。

另一个示例中,实施例的数据导入方法还可以包括:确定与任意数据分片具有对应关系的存储分片,并确定与任意数据分片具有对应关系的存储分片的副本,并将任意数据分片导入至副本中。

在本实施例中,通过将导入失败的任意数据分片,导入至相应的副本中,可以达到高性能,高容错的技术效果,且可以提高数据导入的灵活性的技术效果。

请参阅图3,图3为本申请另一实施例的数据导入方法的流程示意图。

如图3所示,该方法包括:

s301:调度处理器接收用户发送的数据导入任务,并为每一用户分配一个任务队列。

其中,用户的数量的可以为一个,也可以为多个。同理,数据导入任务的数量可以为一个,也可以为多个,且数据导入任务中的待导入数据的数量可以为一个,也可以为多个。

在一些实施例中,调度处理器可以设置任务队列中数据导入任务的任务阈值。例如,调度处理器将任务阈值设置为5,即任务队列中对多可以包括5个数据导入任务。

s302:调度处理器确定列式数据库管理系统的每一存储分片的数据导入任务的数量阈值;和/或,确定列式数据库管理系统的负载。

其中,每一存储分片的数据导入任务的数量阈值可以理解为,每一存储分片可以存储的数据导入任务的数量的最大值,即每一存储分片可以被存储的数据的容量的最大值。

s303:若调度处理器根据每一存储分片的数据导入任务的数量阈值;和/或,确定列式数据库管理系统的负载,确定列式数据库管理系统满足数据导入任务的导入需求,则向spark处理器发起数据导入指令。

示例性地,调度处理器可以根据列式数据库管理系统的处理器cpu资源和内存资源等,确定列式数据库管理系统的负载,并当负载达到预设的负载阈值时(确定列式数据库管理系统不满足数据导入任务的导入需求),不执行调度任务,即不向spark处理器发起数据导入指令;反之,若负载没有达到负载阈值(确定列式数据库管理系统满足数据导入任务的导入需求),则向spark处理器发起数据导入指令,且调度处理器可以从各存储分片中,选择负载相对较低(可以由调度处理器基于需求、历史记录、以及试验等方式设置阈值,并当负载小于该阈值时,确定负载相对较低),并在导入指令中携带选择的存储分片,以便spark处理器将待导入数据导入至由调度处理器选择的存储分片中。

在一些实施例中,若调度处理器确定列式数据库管理系统不满足数据导入任务的导入需求,则可以在预先设置的时间段后,再次执行调度的操作。

若用户的数量为多个,则调度处理器可以根据预先设置的优先级,执行相应的调度的操作。

例如,调度处理器在列式数据库管理系统的资源有限的情况下,可以优先执行优先级较高的用户发起的数据导入任务。

值得说明地是,在本实施例中,通过由调度处理器动态决策是否执行数据导入的操作,可以防止过分压榨列式数据库管理系统的资源,并可以尽量提高列式数据库管理系统的负载均衡,提高资源的合理利用的技术效果。

s304:spark处理器将待导入数据分割成多个数据分片,并根据各数据分片和列式数据库管理系统的各存储分片构建导入关系。

其中,导入关系用于指示数据分片与存储分片之间的对应关系。

s305:spark处理器将每一数据分片,导入至与数据分片具有对应关系的存储分片中。

示例性地,关于s304至s305的原理,可以参见s101至s103所述的原理,也可以参见s201至s204所述的原理,此处不再赘述。

在一些实施例中,在将待导入数据导入至列式数据库管理系统中之后,可以生成导入运行信息,包括时间信息(包括由调度装置生成的调度时间信息和等待调度时间信息,也可以包括由spark处理器生成的导入时间信息,等等)和数据大小信息等,也可以生成相应的负载曲线图,以改善后续数据导入的性能,避免资源浪费。

在一些实施例中,调度处理器和spark处理器可以部署于同一服务器,也可以部署于不同的服务器,本实施例不做限定。

请参阅图4,图4为本申请一个实施例的数据导入装置。

如图4所示,数据导入装置400包括:

分割单元401,用于响应于数据导入指令,将待导入数据分割成多个数据分片。

构建单元402,用于根据各所述数据分片和列式数据库管理系统的各存储分片构建导入关系,其中,所述导入关系用于指示数据分片与存储分片之间的对应关系。

第一导入单元403,将每一所述数据分片,导入至与数据分片具有对应关系的存储分片中。

请参阅图5,图5为本申请一个实施例的数据导入装置。

如图5所示,数据导入装置500包括:

分割单元501,用于响应于数据导入指令,将待导入数据分割成多个数据分片。

在一些实施例中,所述多个存储分片是:基于获取到的数据导入任务的数量,和/或,所述列式数据库管理系统的负载确定的,所述数据导入任务中包括所述待导入数据。

在一些实施例中,所述数据导入任务的数量小于所述多个存储分片的数据导入任务的阈值;和/或,所述多个存储分片的负载小于预设的负载阈值。

构建单元502,用于根据各所述数据分片和列式数据库管理系统的各存储分片构建导入关系,其中,所述导入关系用于指示数据分片与存储分片之间的对应关系。

结合图5可知,在一些实施例中,构建单元502包括:

生成子单元5021,用于生成包括各所述存储分片的地址信息的列表。

广播子单元5022,用于在用于执行导入操作的多个导入线程中广播所述列表。

构建子单元5023,用于根据每一所述导入线程,对所述列表和各所述数据分片之间的取模处理结果,构建所述导入关系。

在一些实施例中,构建子单元5023包括:

分配模块,用于为每一所述数据分片分配索引值,并为每一所述导入线程分配包括索引值的数据分片。

构建模块,用于根据每一所述导入线程,对分配得到的数据分片、以及所述列表之间取模结果,构建所述导入关系。

在一些实施例中,构建模块用于,通过每一所述导入线程,确定所述列表中各所述存储分片的总数量,并根据每一所述导入线程,对分配得到的数据分片的索引值、以及各所述存储分片的总数量之间取模结果,构建所述导入关系。

第一导入单元503,将每一所述数据分片,导入至与数据分片具有对应关系的存储分片中。

在一些实施例中,第一导入单元503用于,通过每一所述导入线程,并行将每一所述导入线程分配得到的数据分片导入至具有对应关系的存储分片中。

第二导入单元504,用于若任意数据分片导入失败,根据预设时间间隔,将所述任意数据分片重新导入至具有对应关系的存储分片中。

请参阅图6,图6为本申请一个实施例的数据导入装置。

如图6所示,数据导入装置600包括:

分割单元601,用于响应于数据导入指令,将待导入数据分割成多个数据分片。

构建单元602,用于根据各所述数据分片和列式数据库管理系统的各存储分片构建导入关系,其中,所述导入关系用于指示数据分片与存储分片之间的对应关系。

第一导入单元603,将每一所述数据分片,导入至与数据分片具有对应关系的存储分片中。

确定单元604,用于若任意数据分片导入失败,确定与所述任意数据分片具有对应关系的存储分片,并确定与所述任意数据分片具有对应关系的存储分片的副本。

第三导入单元605,用于将所述任意数据分片导入至所述副本中。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

根据本申请的实施例,本申请还提供了一种计算机程序产品,程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案。

如图7所示,是根据本申请实施例的数据导入方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图7所示,该电子设备包括:一个或多个处理器701、存储器702,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图7中以一个处理器701为例。

存储器702即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据导入方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据导入方法。

存储器702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据导入方法对应的程序指令/模块。处理器701通过运行存储在存储器702中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据导入方法。

存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据导入方法的电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至数据导入方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

数据导入方法的电子设备还可以包括:输入装置703和输出装置704。处理器701、存储器702、输入装置703和输出装置704可以通过总线或者其他方式连接,图7中以通过总线连接为例。

输入装置703可接收输入的数字或字符信息,以及产生与数据导入方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置704可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

根据本申请实施例的另一个方面,本申请实施例还提供了数据导入系统,包括:列式数据库管理系统、以及如上任一实施例所述的数据导入装置。

在一些实施例中,数据导入装置可以为spark处理器。

在一些实施例中,该系统还可以包括:

调度处理器,用于:调度处理器接收用户发送的数据导入任务,并为每一用户分配一个任务队列;还用于:确定列式数据库管理系统的每一存储分片的数据导入任务的数量阈值;和/或,确定列式数据库管理系统的负载;还用于:若调度处理器根据每一存储分片的数据导入任务的数量阈值;和/或,确定列式数据库管理系统的负载,确定列式数据库管理系统满足数据导入任务的导入需求,则向spark处理器发起数据导入指令。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1