CN117149717A - 表连接处理方法、装置、设备及存储介质 - Google Patents
表连接处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117149717A CN117149717A CN202311121469.6A CN202311121469A CN117149717A CN 117149717 A CN117149717 A CN 117149717A CN 202311121469 A CN202311121469 A CN 202311121469A CN 117149717 A CN117149717 A CN 117149717A
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- partitions
- processed
- data table
- 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
- 238000003672 processing method Methods 0.000 title description 11
- 238000005192 partition Methods 0.000 claims abstract description 392
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000013507 mapping Methods 0.000 claims abstract description 23
- 238000004590 computer program Methods 0.000 claims description 9
- 230000011218 segmentation Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 101150064138 MAP1 gene Proteins 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 101150009249 MAP2 gene Proteins 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 101100075995 Schizosaccharomyces pombe (strain 972 / ATCC 24843) fma2 gene Proteins 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002699 waste material Substances 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/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- 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/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- 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
Abstract
本公开提供了一种分布式文件系统中的表连接处理方法、装置、设备及存储介质,所述方法包括:确定待连接数据表,如果确定第一数据表中存在数据倾斜,则从第一数据表被划分的数据分区中确定第一待处理数据分区;将第一待处理分区切分为第一数量的子数据分区;在第二数据表中,确定与第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制第二待处理数据分区;将第一数量的子数据分区分别与第一数量的副本数据分区进行映射关联,得到映射关联后数据分区。可见,本公开实施例能够将第一数据表中存在数据倾斜的数据分区切分为多个子数据分区,使得切分后的第一数据表中的各个数据分区的数据分布较为均匀,从而提高了系统的计算性能。
Description
技术领域
本公开涉及数据处理领域,尤其涉及一种分布式文件系统中的表连接处理方法、装置、设备及存储介质。
背景技术
在分布式文件系统中,当需要对两个具有相同属性的数据表进行连接操作时,如果待连接的数据表出现分布不均匀的数据分区时,则会很容易出现数据倾斜的问题。例如,有些分区对应的数据量为200M,有些分区对应的数据量为1G,在实际的任务处理过程(在相同的硬件资源下)中,后者运行时间显然比前者多。具体表现为在Reduce阶段大部分分区的任务已经执行完成,而有一小部分分区一直在执行中,如果后续需要对数据表进行分析,则需要等待所有的分区对应的任务全部执行完成,显然,由于数据表中存在数据倾斜的情况会导致整个Map-Reduce阶段的处理时间较长,严重影响了系统的计算性能。
因此,如何有效解决数据倾斜导致的处理时间较长,以提高系统的计算性能,是目前亟需解决的技术问题。
发明内容
为了解决上述技术问题,本公开实施例提供了一种分布式文件系统中的表连接处理方法。
第一方面,本公开提供了一种分布式文件系统中的表连接处理方法,所述方法包括:
确定待连接数据表;其中,所述待连接数据表中包括第一数据表和第二数据表,所述第一数据表的数据量大于所述第二数据表的数据量;
如果确定所述第一数据表中存在数据倾斜,则从所述第一数据表被划分的数据分区中确定第一待处理数据分区;其中,所述第一待处理数据分区为数据倾斜对应的大数据量的数据分区;
将所述第一待处理数据分区切分为第一数量的子数据分区;
在所述第二数据表中,确定与所述第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制所述第二待处理数据分区得到所述第一数量的副本数据分区;
将所述第一数量的子数据分区分别与所述第一数量的副本数据分区进行映射关联,得到映射关联后数据分区;其中,所述映射关联后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
一种可选的实施方式中,所述如果确定所述第一数据表中存在数据倾斜,则从所述第一数据表被划分的数据分区中确定第一待处理数据分区,包括:
如果确定所述第一数据表中存在数据倾斜,则将所述第一数据表被划分的数据分区中数据量大于预设倾斜阈值和/或大于预设倾斜因子与分区中位数乘积的数据分区,确定为第一待处理数据分区;其中,所述分区中位数为基于所述第一数据表被划分的多个数据分区的数据量确定。
一种可选的实施方式中,所述第一数量为基于所述第一待处理数据分区的数据量与所述分区中位数确定。
一种可选的实施方式中,所述方法还包括:
如果所述第一数据表被划分的数据分区中存在多个第三待处理数据分区,则对所述多个第三待处理数据分区进行合并处理,得到所述第一数据表对应的合并后数据分区;其中,所述多个第三待处理数据分区为数据量小于预设数据量阈值的数据分区,所述第一数据表对应的合并后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
一种可选的实施方式中,所述方法还包括:
如果所述第二数据表被划分的数据分区中存在多个第四待处理数据分区,则对所述多个第四待处理数据分区进行合并处理,得到所述第二数据表对应的合并后数据分区;其中,所述多个第四待处理数据分区为数据量小于预设数据量阈值的数据分区,所述第二数据表对应的合并后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
一种可选的实施方式中,所述方法还包括:
将所述第一数据表对应的合并后数据分区与所述第二数据表对应的合并后数据分区中具有相同关联键的数据分区进行映射关联。
一种可选的实施方式中,所述方法还包括:
将所述第一数据表被划分的数据分区与所述第二数据表被划分的数据分区中具有相同关联键的数据分区进行映射关联。
第二方面,本公开提供了一种分布式文件系统中的表连接处理装置,所述装置包括:
第一确定模块,用于确定待连接数据表;其中,所述待连接数据表中包括第一数据表和第二数据表,所述第一数据表的数据量大于所述第二数据表的数据量;
第二确定模块,用于如果确定所述第一数据表中存在数据倾斜,则从所述第一数据表被划分的数据分区中确定第一待处理数据分区;其中,所述第一待处理数据分区为数据倾斜对应的大数据量的数据分区;
切分模块,用于将所述第一待处理数据分区切分为第一数量的子数据分区;
第三确定模块,用于在所述第二数据表中,确定与所述第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制所述第二待处理数据分区得到所述第一数量的副本数据分区;
第一映射关联模块,用于将所述第一数量的子数据分区分别与所述第一数量的副本数据分区进行映射关联,得到映射关联后数据分区;其中,所述映射关联后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
第三方面,本公开提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现上述的方法。
第四方面,本公开提供了一种分布式文件系统中的表连接处理设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的方法。
第五方面,本公开提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法。
本公开实施例提供的技术方案与现有技术相比至少具有如下优点:
本公开实施例提供了一种分布式文件系统中的表连接处理方法,确定待连接数据表,其中,待连接数据表包括第一数据表和第二数据表;如果确定第一数据表中存在数据倾斜,则从第一数据表被划分的数据分区中确定第一待处理数据分区;将第一待处理分区切分为第一数量的子数据分区;在第二数据表中,确定与第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制第二待处理数据分区得到第一数量的副本数据分区;将第一数量的子数据分区分别与第一数量的副本数据分区进行映射关联,得到映射关联后数据分区,以基于映射关联后数据分区对第一数据表和第二数据表进行表连接处理。可见,本公开实施例在进行表连接处理之前,能够将第一数据表中存在数据倾斜的数据分区切分为多个子数据分区,使得切分后的第一数据表中的各个数据分区的数据分布较为均匀,从而有效解决了数据倾斜问题,提高了系统的计算性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种MapReduce框架的表连接处理流程图;
图2为本公开实施例提供的一种分布式文件系统中的表连接处理方法的流程图;
图3为本公开实施例提供的一种动态调整数据倾斜分区的示意图;
图4为本公开实施例提供的一种MapReduce框架的数据分区示意图;
图5为本公开实施例提供的一种自适应调整分区数量的示意图;
图6为本公开实施例提供的一种动态调整数据倾斜分区和自适应调整分区数量的示意图;
图7为本公开实施例提供的一种分布式文件系统中的表连接处理装置的结构示意图;
图8为本公开实施例提供的一种分布式文件系统中的表连接处理设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
MapReduce框架是一种易于编程并且能在大型集群(上千万节点)快速地并行处理大量数据的软件架构(一种分布式框架)。一个Map/Reduce作业通常会将输入的数据表切分为若干个独立的数据块,由Map任务对数据块进行处理;在得到处理结果之后,将处理结果输入给Reduce任务进行后续的处理流程,该后续处理阶段称之为Reduce阶段,也就是聚集性计算处理阶段;Reduce阶段使劲相同键值的数据进行汇总、归类、合并等聚集性计算。
数据倾斜,是指在分布式文件系统中,并行的、具有相同处理逻辑的任务被分配的数量差达到预设数量差阈值的现象。每一分布式文件系统(或称为分布式框架)中包含并行的多个任务。
任务,用于处理数据的执行过程,例如,针对MapReduce分布式框架,任务可以为聚集性计算处理设备中并行执行的多个聚集性计算进程。
表连接时数据库查询术语,是指根据两个或者多个表中的列之间的关系,从这些表中查询数据。
在MapReduce框架的处理过程中,当需要对两个具有相同属性的数据表进行连接操作时,如果待连接的数据表出现分布不均匀的数据分区时,则会很容易出现数据倾斜的问题。例如,有些分区对应的数据量为200M,有些分区对应的数据量为1G,在实际的任务处理过程(在相同的硬件资源下)中,后者运行时间显然比前者多。
如图1所示,为本公开实施例提供的一种MapReduce框架的表连接处理流程图,在Map阶段,表1被划分为Map1、Map2和Map3三个任务,其中,表1中的P0分区的数据量远大于P1分区、P2分区和P3分区;表2被划分为Map1、Map2两个任务,表2中包括P0、P1、P2、P3分区,表2的各个分区的数据量较小;其中,表1和表2中的P0为关联键相同的数据分区。
由于表1中的P0分区的数据量远大于其他分区,因此,在将表1中的P0和表2中的P0进行连接处理时,就会出现数据倾斜的问题,从而导致P0的处理时长过久,从而导致整个MapReduce阶段的处理时间较长,严重影响了系统的计算性能。
为此,本公开实施例提供了一种分布式文件系统中的表连接处理方法,确定待连接数据表,其中,待连接数据表包括第一数据表和第二数据表;如果确定第一数据表中存在数据倾斜,则从第一数据表被划分的数据分区中确定第一待处理数据分区;将第一待处理分区切分为第一数量的子数据分区;在第二数据表中,确定与第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制第二待处理数据分区得到第一数量的副本数据分区;将第一数量的子数据分区分别与第一数量的副本数据分区进行映射关联,得到映射关联后数据分区,以基于映射关联后数据分区对第一数据表和第二数据表进行表连接处理。可见,本公开实施例在进行表连接处理之前,能够将第一数据表中存在数据倾斜的数据分区切分为多个子数据分区,使得切分后的第一数据表中的各个数据分区的数据分布较为均匀,从而有效解决了数据倾斜问题,提高了系统的计算性能。
基于此,本公开实施例提供了一种分布式文件系统中的表连接处理方法,参考图2,为本公开实施例提供的一种分布式文件系统中的表连接处理方法的流程图,该方法具体包括:
S201:确定待连接数据表。
其中,所述待连接数据表中包括第一数据表和第二数据表,所述第一数据表的数据量大于所述第二数据表的数据量。
本公开实施例中,第一数据可以为一个或者多个数据量较大的数据表,第二数据表可以为一个或者多个数据量远小于第一数据表的数据表。
实际应用中,第一数据表的数据量远大于第二数据表的数据量,即第一数据表的数据量级远大于第二数据表的数据量级,例如,第一数据表的数据量可能为4GB,而第二数据表的数据量可能为2MB,显然,第一数据表相对于第二数据表而言为数据量较大的表。
S202:如果确定所述第一数据表中存在数据倾斜,则从所述第一数据表被划分的数据分区中确定第一待处理数据分区。
其中,所述第一待处理数据分区为数据倾斜对应的大数据量的数据分区。
本公开实施例中,在确定第一数据表为数据量较大的数据表之后,将第一数据表被划分的数据分区中存在数据倾斜的分区确定为第一待处理数据分区。
一种可选的实施方式中,可以将第一数据表被划分的数据分区分别与预设倾斜阈值和/或预设倾斜因子与分区中位数乘积进行比较,以确定第一待处理数据分区。具体的,将第一数据表被划分的数据分区中数据量大于预设倾斜阈值和/或大于预设倾斜因子与分区中位数乘积的数据分区,确定为第一待处理数据分区。
本公开实施例中,预设倾斜阈值为用于判断分区是否存在数据倾斜的重要数据,实际应用中可以设置为256M;预设倾斜因子又称为数据倾斜判断因袭,实际应用中可以设置为5;分区中位数为基于第一数据表被划分的多个数据分区的数据量确定,例如多个数据分区的数据量分别为230M、384M和678M,则将384M作为分区中位数,以便后续进行数据倾斜判断。
S203:将所述第一待处理数据分区切分为第一数量的子数据分区。
本公开实施例中,由于第一待处理数据分区为第一数据表中数据倾斜对应的大数据量的数据分区,因此,在确定第一待处理数据分区之后,通过将第一待处理数据分区切分为多个子数据分区的方式,能够有效解决第一数据表中出现数据倾斜的问题。
一种可选的实施方式中,第一数量可以为基于第一待处理数据分区的数据量与分区中位数确定,具体的,可以用第一待处理数据分区的数据量除以分区中位数,以得到第一数量。例如,假设第一待处理数据分区的数据量为1T(即1024*1024M),且第一数据表被划分的数据分区中的分区中位数为512M,则第一数量的计算方式为:1T/512M=(1024*1024)M/512M=2048,即可以将第一待处理数据分区切分为2048个子数据分区。
本公开实施例中,在将第一待处理数据分区切分为第一数量的子数据分区之后,各个子数据分区的数据量小于预设倾斜阈值,即各个子数据分区不存在数据倾斜的问题,因此,后续在Reduce节点中进行处理时,能够保证各个任务的处理时长相差较小,从而提高了执行效率。
由于本公开实施例将数据量较大的数据分区对应的数据切分成多个子数据分区,因此能够避免处理数据量非常大的分区数据很长时间都不能执行完成,严重影响执行效率的问题,使得各个Reduce节点的处理量比较均匀,从而提高了整体数据处理效率。
S204:在所述第二数据表中,确定与所述第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制所述第二待处理数据分区得到所述第一数量的副本数据分区。
实际应用中,MapReduce框架在处理表连接时,在Map(映射)节点上按照关联键(key值)的哈希值进行分区,相同关联键的数据会被分配到同一个分区,并在shuffle过程中被传输到同一个Reduce(规约)节点进行处理。
本公开实施例中,在将第一待处理数据分区切分为第一数量的子数据分区之后,还需要从第二数据表中,确定与第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制第二待处理数据分区得到第一数量的副本数据分区,以便后续在将各个子数据分区传输到对应的Reduce节点进行处理时,都有与之对应的副本数据分区。
S205:将所述第一数量的子数据分区分别与所述第一数量的副本数据分区进行映射关联,得到映射关联后数据分区。
其中,所述映射关联后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
如图3所示,为本公开实施例提供的一种动态调整数据倾斜分区的示意图。其中,表1为第一数据表,表2为第二数据表,表1的数量(例如2G)远大于表2的数据量(215M),表1中存在数据倾斜的分区,即P0(第一待处理数据分区)。需要注意的是,表1和表2中的P0为关联键相同的数据分区,具体的处理流程如下:
在确定表1中的T0为数据倾斜的数据分区之后,首先,将表1中的T0切分为第一数量的子数据分区,例如子数据分区P0-1和子数据分区P0-2;然后,从表2中确定与第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制表2中的数据分区P0得到2个副本数据分区;接着,将表1中的子数据分区P0-1与表2中的副本数据分区P0进行映射关联,以及,将表1中的子数据分区P0-2与表2中的副本数据分区P0进行映射关联,得到映射关联后数据分区,以便后续可以基于映射关联后数据分区对表1和表2进行表连接处理。
一种可选的实施方式中,在进行表连接处理的过程中,还可以将第一数据表被划分的数据分区与第二数据表被划分的数据分区中具有相同关联键的数据分区进行映射关联。
本公开实施例提供的分布式文件系统中的表连接处理方法中,确定待连接数据表,如果确定第一数据表中存在数据倾斜,则从第一数据表被划分的数据分区中确定第一待处理数据分区;将第一待处理分区切分为第一数量的子数据分区;在第二数据表中,确定与第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制第二待处理数据分区;将第一数量的子数据分区分别与第一数量的副本数据分区进行映射关联,得到映射关联后数据分区。可见,本公开实施例能够将第一数据表中存在数据倾斜的数据分区切分为多个子数据分区,使得切分后的第一数据表中的各个数据分区的数据分布较为均匀,从而提高了系统的计算性能。
结构化查询语言(SQL,Structured Query Language),用于存取、查询、更新数据以及管理关系型数据库。实际应用中,在将SQL语句转化为Map任务之后,会将切分后的数据分区按照键值对(key/value)的格式进行输出,该阶段称为Shuffle阶段。
由于Shuffle阶段对网络要求比较高,Shuffle中的数据分区大小会影响MapReduce整体的执行效率,原则上说,数据分区的数据量越大,磁盘读取的次数越少,执行速度就越快。对于分区数量较多,分区数据量较小的情况,会严重影响到读取效率,并且也会产生较多的Reduce任务,也会给Reduce阶段带来较多的执行压力,从而严重影响到了查询效率。
如图4所示,为本公开实施例提供的一种MapReduce框架的数据分区示意图。其中,表1为划分为Map1任务和Map2任务,由于初始的Shuffle分区数量为5,因此Map1任务和Map2任务分别对应5个数据分区,其中,相同颜色的分区表示其关联键相同。在Shuffle阶段会将这5个数据分区传输至5个Reduce阶段的物理节点中。
显然,这5个数据分区中有3个数据量非常小的分区,为每个小数据分区分别启动一个Reduce任务会产生较多的资源浪费,因此严重影响到了整体的执行效率。
为此,本公开实施例在将第一数据表划分为多个数据分区之后,还可以判断第一数据表被划分的数据分区中是否存在数据量较少的数据分区,并将多个数据量较小的数据分区合并为一个数据分区,以便后续只需启动一个Reduce任务即可进行相应的处理。相比于原来需要启动多个Reduce任务来执行多个数据分区的处理方式,显著提高了整体的执行效率。
具体的,如果第一数据表被划分的数据分区中存在多个第三待处理数据分区,则对多个第三待处理数据分区进行合并处理,得到第一数据表对应的合并后数据分区。其中,第一数据表为存在数据倾斜的数据表。
本公开实施例中,多个第三待处理数据分区为数据量小于预设数据量阈值的数据分区,其中,预设数据量阈值可以为基于第一数据表对应的分区中位数确定。
本公开实施例中,第一数据表对应的合并后数据分区可以为一个或者多个数据分区,具体用于后续的第一数据表和第二数据表的表连接处理。
如图5所示,为本公开实施例提供的一种自适应调整分区数量的示意图。其中,有三个数据分区的数据量小于预设数据量阈值,因此,可以将这三个数据分区合并为一个数据分区,即第一数据表对应的合并后数据分区501。相比于合并之前需要启动5个Reduce任务来进行相应的处理,此时只需要启动3个Reduce任务即可进行处理,显著提高了整体的执行效率。另外,在进行合并处理之后,各个数据分区的数据量大小较为接近,因此也避免了在多数任务已经执行完的清下,还需要等待一部分任务执行完的情况。
实际应用中,在确定待连接数据集中的第二数据表之后,还可以判断第二数据表被划分的数据分区中是否存在数据量较少的数据分区,并将多个数据量较小的数据分区合并为一个数据分区,以便后续只需启动一个Reduce任务即可进行相应的处理。
具体的,如果第二数据表被划分的数据分区中存在多个第四待处理数据分区,则对多个第四待处理数据分区进行合并处理,得到第二数据表对应的合并后数据分区。
本公开实施例中,多个第四待处理数据分区为数据量小于预设数据量阈值的数据分区,其中,预设数据量阈值可以为基于第二数据表对应的分区中位数确定。
本公开实施例中,第二数据表对应的合并后数据分区可以为一个或者多个数据分区,具体用于后续的第一数据表和第二数据表的表连接处理。具体过程可以参照图5所示的合并过程进行理解,在此不做赘述。
一种可选的实施方式中,在确定第一数据表对应的合并后数据分区,以及第二数据表对应的合并后数据分区之后,还可以将第一数据表对应的合并后数据分区与第二数据表对应的合并后数据分区中具有相同关联键的数据分区进行映射关联。
如图6所示,为本公开实施例提供的一种动态调整数据倾斜分区和自适应调整分区数量的示意图。其中,表1(即第一数据表)的合并后数据分区P3对应的关联键为k1和k2,表2(即第二数据表)的合并后数据分区P3对应的关联键也为k1和k2,此时在进行映射关联时,可以将表1中的P3与表2中的P3进行映射关联,以提高整体的执行效率。
可见,本公开实施例能够将数据量较小的分区合并为一个分区,以便后续只需要启动一个Reduce任务即可完成相应的处理。相比于原来需要启动多个Reduce任务来执行多个数据分区的处理方式,显著提高了整体的执行效率。
基于上述方法实施例,本公开还提供了一种分布式文件系统中的表连接处理装置,参考图7,为本公开实施例提供的一种分布式文件系统中的表连接处理装置的结构示意图,所述装置包括:
第一确定模块701,用于确定待连接数据表;其中,所述待连接数据表中包括第一数据表和第二数据表,所述第一数据表的数据量大于所述第二数据表的数据量;
第二确定模块702,用于如果确定所述第一数据表中存在数据倾斜,则从所述第一数据表被划分的数据分区中确定第一待处理数据分区;其中,所述第一待处理数据分区为数据倾斜对应的大数据量的数据分区;
切分模块703,用于将所述第一待处理数据分区切分为第一数量的子数据分区;
第三确定模块704,用于在所述第二数据表中,确定与所述第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制所述第二待处理数据分区得到所述第一数量的副本数据分区;
第一映射关联模块705,用于将所述第一数量的子数据分区分别与所述第一数量的副本数据分区进行映射关联,得到映射关联后数据分区;其中,所述映射关联后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
一种可选的实施方式中,所述第二确定模块,包括:
确定子模块,用于如果确定所述第一数据表中存在数据倾斜,则将所述第一数据表被划分的数据分区中数据量大于预设倾斜阈值和/或大于预设倾斜因子与分区中位数乘积的数据分区,确定为第一待处理数据分区;其中,所述分区中位数为基于所述第一数据表被划分的多个数据分区的数据量确定。
一种可选的实施方式中,所述第一数量为基于所述第一待处理数据分区的数据量与所述分区中位数确定。
一种可选的实施方式中,所述装置还包括:
第一合并模块,用于如果所述第一数据表被划分的数据分区中存在多个第三待处理数据分区,则对所述多个第三待处理数据分区进行合并处理,得到所述第一数据表对应的合并后数据分区;其中,所述多个第三待处理数据分区为数据量小于预设数据量阈值的数据分区,所述第一数据表对应的合并后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
一种可选的实施方式中,所述装置还包括:
第二合并模块,用于如果所述第二数据表被划分的数据分区中存在多个第四待处理数据分区,则对所述多个第四待处理数据分区进行合并处理,得到所述第二数据表对应的合并后数据分区;其中,所述多个第四待处理数据分区为数据量小于预设数据量阈值的数据分区,所述第二数据表对应的合并后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
一种可选的实施方式中,所述装置还包括:
第三合并模块,用于将所述第一数据表对应的合并后数据分区与所述第二数据表对应的合并后数据分区中具有相同关联键的数据分区进行映射关联。
一种可选的实施方式中,所述装置还包括:
第二映射关联模块,用于将所述第一数据表被划分的数据分区与所述第二数据表被划分的数据分区中具有相同关联键的数据分区进行映射关联。
本公开实施例提供的分布式文件系统中的表连接处理装置中,确定待连接数据表,其中,待连接数据表包括第一数据表和第二数据表;如果确定第一数据表中存在数据倾斜,则从第一数据表被划分的数据分区中确定第一待处理数据分区;将第一待处理分区切分为第一数量的子数据分区;在第二数据表中,确定与第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制第二待处理数据分区得到第一数量的副本数据分区;将第一数量的子数据分区分别与第一数量的副本数据分区进行映射关联,得到映射关联后数据分区,以基于映射关联后数据分区对第一数据表和第二数据表进行表连接处理。可见,本公开实施例在进行表连接处理之前,能够将第一数据表中存在数据倾斜的数据分区切分为多个子数据分区,使得切分后的第一数据表中的各个数据分区的数据分布较为均匀,从而有效解决了数据倾斜问题,提高了系统的计算性能。
除了上述方法和装置以外,本公开实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现本公开实施例所述的分布式文件系统中的表连接处理方法。
本公开实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本公开实施例所述的分布式文件系统中的表连接处理方法。
另外,本公开实施例还提供了一种分布式文件系统中的表连接处理设备,参见图8所示,可以包括:
处理器801、存储器802、输入装置803和输出装置804。分布式文件系统中的表连接处理设备中的处理器801的数量可以一个或多个,图8中以一个处理器为例。在本公开的一些实施例中,处理器801、存储器802、输入装置803和输出装置804可通过总线或其它方式连接,其中,图8中以通过总线连接为例。
存储器802可用于存储软件程序以及模块,处理器801通过运行存储在存储器802的软件程序以及模块,从而执行分布式文件系统中的表连接处理设备的各种功能应用以及数据处理。存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置803可用于接收输入的数字或字符信息,以及产生与分布式文件系统中的表连接处理设备的用户设置以及功能控制有关的信号输入。
具体在本实施例中,处理器801会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器802中,并由处理器801来运行存储在存储器802中的应用程序,从而实现上述分布式文件系统中的表连接处理设备的各种功能。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种分布式文件系统中的表连接处理方法,其特征在于,所述方法包括:
确定待连接数据表;其中,所述待连接数据表中包括第一数据表和第二数据表,所述第一数据表的数据量大于所述第二数据表的数据量;
如果确定所述第一数据表中存在数据倾斜,则从所述第一数据表被划分的数据分区中确定第一待处理数据分区;其中,所述第一待处理数据分区为数据倾斜对应的大数据量的数据分区;
将所述第一待处理数据分区切分为第一数量的子数据分区;
在所述第二数据表中,确定与所述第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制所述第二待处理数据分区得到所述第一数量的副本数据分区;
将所述第一数量的子数据分区分别与所述第一数量的副本数据分区进行映射关联,得到映射关联后数据分区;其中,所述映射关联后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
2.根据权利要求1所述的方法,其特征在于,所述如果确定所述第一数据表中存在数据倾斜,则从所述第一数据表被划分的数据分区中确定第一待处理数据分区,包括:
如果确定所述第一数据表中存在数据倾斜,则将所述第一数据表被划分的数据分区中数据量大于预设倾斜阈值和/或大于预设倾斜因子与分区中位数乘积的数据分区,确定为第一待处理数据分区;其中,所述分区中位数为基于所述第一数据表被划分的多个数据分区的数据量确定。
3.根据权利要求2所述的方法,其特征在于,所述第一数量为基于所述第一待处理数据分区的数据量与所述分区中位数确定。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述第一数据表被划分的数据分区中存在多个第三待处理数据分区,则对所述多个第三待处理数据分区进行合并处理,得到所述第一数据表对应的合并后数据分区;其中,所述多个第三待处理数据分区为数据量小于预设数据量阈值的数据分区,所述第一数据表对应的合并后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
如果所述第二数据表被划分的数据分区中存在多个第四待处理数据分区,则对所述多个第四待处理数据分区进行合并处理,得到所述第二数据表对应的合并后数据分区;其中,所述多个第四待处理数据分区为数据量小于预设数据量阈值的数据分区,所述第二数据表对应的合并后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将所述第一数据表对应的合并后数据分区与所述第二数据表对应的合并后数据分区中具有相同关联键的数据分区进行映射关联。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一数据表被划分的数据分区与所述第二数据表被划分的数据分区中具有相同关联键的数据分区进行映射关联。
8.一种分布式文件系统中的表连接处理装置,其特征在于,所述装置包括:
第一确定模块,用于确定待连接数据表;其中,所述待连接数据表中包括第一数据表和第二数据表,所述第一数据表的数据量大于所述第二数据表的数据量;
第二确定模块,用于如果确定所述第一数据表中存在数据倾斜,则从所述第一数据表被划分的数据分区中确定第一待处理数据分区;其中,所述第一待处理数据分区为数据倾斜对应的大数据量的数据分区;
切分模块,用于将所述第一待处理数据分区切分为第一数量的子数据分区;
第三确定模块,用于在所述第二数据表中,确定与所述第一待处理数据分区具有相同关联键的第二待处理数据分区,并复制所述第二待处理数据分区得到所述第一数量的副本数据分区;
第一映射关联模块,用于将所述第一数量的子数据分区分别与所述第一数量的副本数据分区进行映射关联,得到映射关联后数据分区;其中,所述映射关联后数据分区用于所述第一数据表和所述第二数据表的表连接处理。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现如权利要求1-7任一项所述的方法。
10.一种分布式文件系统中的表连接处理设备,其特征在于,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311121469.6A CN117149717A (zh) | 2023-08-31 | 2023-08-31 | 表连接处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311121469.6A CN117149717A (zh) | 2023-08-31 | 2023-08-31 | 表连接处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117149717A true CN117149717A (zh) | 2023-12-01 |
Family
ID=88900280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311121469.6A Pending CN117149717A (zh) | 2023-08-31 | 2023-08-31 | 表连接处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117149717A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975463A (zh) * | 2015-09-25 | 2016-09-28 | 武汉安天信息技术有限责任公司 | 一种基于MapReduce识别优化数据倾斜的方法及系统 |
CN106156159A (zh) * | 2015-04-16 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种表连接处理方法、装置和云计算系统 |
CN109308303A (zh) * | 2018-09-19 | 2019-02-05 | 北京服装学院 | 一种基于马尔可夫链的多表连接在线聚集方法 |
CN110162513A (zh) * | 2019-05-31 | 2019-08-23 | 广州水沐青华科技有限公司 | 用于智能电网大数据处理的数据表连接方法及计算机可读存储介质 |
CN112199463A (zh) * | 2020-10-21 | 2021-01-08 | 新华三信息安全技术有限公司 | 数据查询方法、装置及设备 |
CN112711588A (zh) * | 2019-10-25 | 2021-04-27 | 北京沃东天骏信息技术有限公司 | 多表连接的方法和装置 |
CN112905596A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
CN113821541A (zh) * | 2021-09-27 | 2021-12-21 | 北京沃东天骏信息技术有限公司 | 数据倾斜处理方法、设备、存储介质及程序产品 |
CN115391307A (zh) * | 2022-07-27 | 2022-11-25 | 上海乾臻信息科技有限公司 | 数据库优化方法、装置、电子设备及计算机可读存储介质 |
-
2023
- 2023-08-31 CN CN202311121469.6A patent/CN117149717A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156159A (zh) * | 2015-04-16 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种表连接处理方法、装置和云计算系统 |
CN105975463A (zh) * | 2015-09-25 | 2016-09-28 | 武汉安天信息技术有限责任公司 | 一种基于MapReduce识别优化数据倾斜的方法及系统 |
CN109308303A (zh) * | 2018-09-19 | 2019-02-05 | 北京服装学院 | 一种基于马尔可夫链的多表连接在线聚集方法 |
CN110162513A (zh) * | 2019-05-31 | 2019-08-23 | 广州水沐青华科技有限公司 | 用于智能电网大数据处理的数据表连接方法及计算机可读存储介质 |
CN112711588A (zh) * | 2019-10-25 | 2021-04-27 | 北京沃东天骏信息技术有限公司 | 多表连接的方法和装置 |
CN112199463A (zh) * | 2020-10-21 | 2021-01-08 | 新华三信息安全技术有限公司 | 数据查询方法、装置及设备 |
CN112905596A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
CN113821541A (zh) * | 2021-09-27 | 2021-12-21 | 北京沃东天骏信息技术有限公司 | 数据倾斜处理方法、设备、存储介质及程序产品 |
CN115391307A (zh) * | 2022-07-27 | 2022-11-25 | 上海乾臻信息科技有限公司 | 数据库优化方法、装置、电子设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9189487B2 (en) | Method for recording transaction log, and database engine | |
US8601474B2 (en) | Resuming execution of an execution plan in a virtual machine | |
US20170083573A1 (en) | Multi-query optimization | |
US11030196B2 (en) | Method and apparatus for processing join query | |
US20180089244A1 (en) | Key-value stores implemented using fragmented log-structured merge trees | |
US8051422B2 (en) | Resource assignment method for query partioning based on processing cost of each partition | |
Bernstein et al. | Optimizing optimistic concurrency control for tree-structured, log-structured databases | |
Slagter et al. | SmartJoin: a network-aware multiway join for MapReduce | |
WO2024041376A1 (zh) | 分布式图数据处理系统、方法、装置、设备及存储介质 | |
US20230134030A1 (en) | Time series data injection method, time series data query method, and database system | |
CN108710640B (zh) | 一种提高Spark SQL的查询效率的方法 | |
CN114969110B (zh) | 查询方法和装置 | |
CN117149717A (zh) | 表连接处理方法、装置、设备及存储介质 | |
KR101872414B1 (ko) | 분산 rdf 그래프에 대한 부하 분산을 지원하는 동적 분할 방법 | |
CN112487111A (zh) | 基于kv数据库的数据表关联方法及装置 | |
Hassan et al. | An efficient parallel algorithm for evaluating join queries on heterogeneous distributed systems | |
CN111767287A (zh) | 数据导入方法、装置、设备及计算机存储介质 | |
Burdakov et al. | Comparison of table join execution time for parallel DBMS and MapReduce | |
CN111309704A (zh) | 数据库操作方法和数据库操作系统 | |
US11609909B2 (en) | Zero copy optimization for select * queries | |
US20240037151A1 (en) | Channel based flow control of data during execution of database queries | |
US20240143566A1 (en) | Data processing method and apparatus, and computing system | |
Lychagin | Optimizing Repartitioning Parallel Sort in AsterixDB | |
Wei et al. | PowerHash: a hybrid grouping scheme by leveraging power-law properties of data | |
Shen et al. | SrSpark: Skew-resilient spark based on adaptive parallel processing |
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 |