CN112905596B - 数据处理的方法、装置、计算机设备以及存储介质 - Google Patents

数据处理的方法、装置、计算机设备以及存储介质 Download PDF

Info

Publication number
CN112905596B
CN112905596B CN202110254726.8A CN202110254726A CN112905596B CN 112905596 B CN112905596 B CN 112905596B CN 202110254726 A CN202110254726 A CN 202110254726A CN 112905596 B CN112905596 B CN 112905596B
Authority
CN
China
Prior art keywords
partitions
data
partition
data set
splitting
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
CN202110254726.8A
Other languages
English (en)
Other versions
CN112905596A (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.)
Beijing Zhongjing Huizhong Technology Co ltd
Original Assignee
Beijing Zhongjing Huizhong Technology Co 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 Beijing Zhongjing Huizhong Technology Co ltd filed Critical Beijing Zhongjing Huizhong Technology Co ltd
Priority to CN202110254726.8A priority Critical patent/CN112905596B/zh
Publication of CN112905596A publication Critical patent/CN112905596A/zh
Application granted granted Critical
Publication of CN112905596B publication Critical patent/CN112905596B/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

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

Abstract

本公开涉及一种数据处理的方法、装置、计算机设备以及存储介质。方法包括:将待连接的第一数据集和第二数据集分别拆分为多个第一分区和多个第二分区;确定多个第一分区和多个第二分区中的每个分区的数据量;根据第一数据集和第二数据集的连接类型以及所确定的每个分区的数据量,选择性地对多个第一分区和多个第二分区进行再拆分,以得到多个第一数据集分区和多个第二数据集分区;以及将多个第一数据集分区和多个第二数据集分区分配至各自的计算节点以进行第一数据集和第二数据集的连接。

Description

数据处理的方法、装置、计算机设备以及存储介质
技术领域
本公开涉及大数据以及数据处理技术领域,特别是涉及一种数据处理的方法、装置、计算机设备、非暂态计算机可读存储介质以及计算机程序产品。
背景技术
大数据是指一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。面对如此规模大的数据,需要通过大数据计算集群来对其进行处理、分析以及聚合,以从这些数据中找到有用的信息,从而为上层应用提供服务以及为用户提供决策。
在大数据计算集群中,由于键值分布不均匀、业务数据本身特性或者建表时考虑不周等原因,可能产生数据倾斜的情况,即,计算集群中的各个节点的数据分布不均。这将导致某些节点的读/写请求过多、负载过大以及计算时间过长,从而影响大数据集群的整体的计算速度。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
有鉴于此,本公开提供了一种数据处理的方法和装置,以缓解、减轻或甚至消除大数据计算集群中的数据倾斜的问题,并且同时确保数据连接的准确性和可靠性。
根据本公开的第一方面,提供了一种数据处理的方法,包括:将待连接的第一数据集和第二数据集分别拆分为多个第一分区和多个第二分区;确定所述多个第一分区和所述多个第二分区中的每个分区的数据量;根据所述第一数据集和所述第二数据集的连接类型以及所确定的每个分区的数据量,选择性地对所述多个第一分区和所述多个第二分区进行再拆分,以得到多个第一数据集分区和多个第二数据集分区;以及将所述多个第一数据集分区和所述多个第二数据集分区分配至各自的计算节点以进行所述第一数据集和所述第二数据集的连接。
根据本公开的第二方面,提供了一种数据处理的装置,包括:拆分模块,所述拆分模块被配置为将待连接的第一数据集和第二数据集分别拆分为多个第一分区和多个第二分区;确定模块,所述确定模块被配置为确定所述多个第一分区和所述多个第二分区中的每个分区的数据量;再拆分模块,所述再拆分模块被配置为根据所述第一数据集和所述第二数据集的连接类型以及所确定的每个分区的数据量,选择性地对所述多个第一分区和所述多个第二分区进行再拆分,以得到多个第一数据集分区和多个第二数据集分区;以及分配模块,所述分配模块被配置为将所述多个第一数据集分区和所述多个第二数据集分区分配至各自的计算节点以进行所述第一数据集和所述第二数据集的连接。
根据本公开的第三方面,提供了一种计算机设备,包括:存储器、处理器以及存储在所述存储器上的计算机程序。所述处理器被配置为执行所述计算机程序以实现本公开的第一方面所述方法的步骤。
根据本公开的第四方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序。所述计算机程序被处理器执行时实现根据本公开的第一方面所述方法的步骤。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序。所述计算机程序被处理器执行时实现本公开第一方面所述方法的步骤。
根据本公开的一个或多个实施例,通过根据连接类型选择性地对数据量较大的分区进行再拆分,以使得数据分布均匀,从而缓解、减轻或甚至消除数据倾斜的问题,并且同时保证数据连接的准确性和可靠性。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1是图示出根据示例性实施例的可以在其中实施本文描述的各种方法的示例系统的示意图;
图2是图示出根据示例性实施例的数据处理的方法的流程图;
图3是图示出根据示例性实施例的图2中的再拆分步骤的流程图;
图4是图示出根据示例性实施例的数据处理的方法的原理示意图;
图5是图示出根据示例性实施例的数据处理的装置的示意性框图;
图6是图示出能够应用于示例性实施例的示例性计算机设备的框图。
具体实施方式
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。如本文使用的,术语“多个”意指两个或更多,并且术语“基于”应解释为“至少部分地基于”。此外,术语“和/或”以及“……中的至少一个”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
在介绍本公开的示例性实施例之前,首先对本文中使用的若干术语进行解释。
1、数据表之间的连接
在数据库中建表时,各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。其中,数据表之间的连接类型包括内连接、左连接以及右连接等。
2、数据表之间的关联关系
关联关系通常指数据表中的一个或多个字段,它的值用于唯一地标识表中的某一条或多条记录。在两个数据表的连接中,数据表之间的关联关系可以用来在一个数据表中引用来自于另一个数据表中的特定记录。
3、内连接
通过内连接连接两个或两个以上的数据表时,结果表中只包含各数据表之间相互匹配的所有行,而不包括各数据表之间无法进行匹配的行。
4、左连接
通过左连接连接两个或两个以上的数据表时,结果表中包含左数据表的所有行以及右数据表中与左数据表相匹配的行。如果左数据表的某行无法与右数据表的行进行匹配,则该行在结果表中对应于右数据表的列处的值为空。
5、右连接
通过右连接连接两个或两个以上的数据表时,结果表中包含右数据表的所有行以及左数据表中与右数据表相匹配的行。如果右数据表的某行无法与左数据表的行进行匹配,则该行在结果表中对应于左数据表的列处的值为空。
下面以关系型数据库中的两张数据表为例来说明数据集之间的连接类型的区别。
数据表1
主关键字 列11 列12
A A11 A12
B B11 B12
C C11 C12
数据表2
主关键字 列21 列22
A A21 A22
B B21 B22
D D21 D22
其中,关系型数据库中的数据表1和数据表2之间的关联关系是主关键字,其包括数据表中的一个或多个字段,用于标识数据表中的唯一一条记录。
通过内连接连接数据表1和数据表2将得到以下数据表3:
数据表3
主关键字 列11 列12 列21 列22
A A11 A12 A21 A22
B B11 B12 B21 B22
通过左连接连接数据表1和数据表2将得到以下数据表4:
数据表4
主关键字 列11 列12 列21 列22
A A11 A12 A21 A22
B B11 B12 B21 B22
C C21 C22
通过右连接连接数据表1和数据表2将得到以下数据表5:
数据表5
主关键字 列21 列22 列11 列12
A A21 A22 A11 A12
B B21 B22 B11 B12
D D21 D22
此处应注意,虽然本文以关系型数据库为例,但是并不表示本公开的数据处理的方法仅限于用在关系型数据库中。本公开的数据处理的方法还可用于非关系型数据库(例如,图形数据库)、键值数据库等。
下面结合附图详细描述本公开的示例性实施例。
图1示出了根据本公开的实施例可以将本文描述的各种方法和装置在其中实施的示例性系统100的示意图。参考图1,该系统100包括一个或多个客户端设备101、102、103、104、105和106、服务器120以及将一个或多个客户端设备耦接到服务器120的一个或多个通信网络110。客户端设备101、102、103、104、105和106可以被配置为执行一个或多个应用程序。
在本公开的实施例中,服务器120可以运行使得能够实现基于获取的数据处理的方法的一个或多个服务或软件应用。
在某些实施例中,服务器120还可以提供可以包括非虚拟环境和虚拟环境的其他服务或软件应用。在某些实施例中,这些服务可以作为基于web的服务或云服务提供,例如在软件即服务(SaaS)模型下提供给客户端设备101、102、103、104、105和/或106的用户。
在图1所示的配置中,服务器120可以包括实现由服务器120执行的功能的一个或多个组件。这些组件可以包括可由一个或多个处理器执行的软件组件、硬件组件或其组合。操作客户端设备101、102、103、104、105和/或106的用户可以依次利用一个或多个客户端应用程序来与服务器120进行交互以利用这些组件提供的服务。应当理解,各种不同的系统配置是可能的,其可以与系统100不同。因此,图1是用于实施本文所描述的各种方法的系统的一个示例,并且不旨在进行限制。
用户可以使用客户端设备101、102、103、104、105和/或106来输入待处理的数据并发出对该数据进行处理的请求。客户端设备可以提供使客户端设备的用户能够与客户端设备进行交互的接口。客户端设备还可以经由该接口向用户输出信息。尽管图1仅描绘了六种客户端设备,但是本领域技术人员将能够理解,本公开可以支持任何数量的客户端设备。
客户端设备101、102、103、104、105和/或106可以包括各种类型的计算机设备,例如便携式手持设备、通用计算机(诸如个人计算机和膝上型计算机)、工作站计算机、可穿戴设备、游戏系统、瘦客户端、各种消息收发设备、传感器或其他感测设备等。这些计算机设备可以运行各种类型和版本的软件应用程序和操作系统,例如Microsoft Windows、AppleiOS、类UNIX操作系统、Linux或类Linux操作系统(例如Google Chrome OS);或包括各种移动操作系统,例如Microsoft Windows Mobile OS、iOS、Windows Phone、Android。便携式手持设备可以包括蜂窝电话、智能电话、平板电脑、个人数字助理(PDA)等。可穿戴设备可以包括头戴式显示器和其他设备。游戏系统可以包括各种手持式游戏设备、支持互联网的游戏设备等。客户端设备能够执行各种不同的应用程序,例如各种与Internet相关的应用程序、通信应用程序(例如电子邮件应用程序)、短消息服务(SMS)应用程序,并且可以使用各种通信协议。
网络110可以是本领域技术人员熟知的任何类型的网络,其可以使用多种可用协议中的任何一种(包括但不限于TCP/IP、SNA、IPX等)来支持数据通信。仅作为示例,一个或多个网络110可以是局域网(LAN)、基于以太网的网络、令牌环、广域网(WAN)、因特网、虚拟网络、虚拟专用网络(VPN)、内部网、外部网、公共交换电话网(PSTN)、红外网络、无线网络(例如蓝牙、WIFI)和/或这些和/或其他网络的任意组合。
服务器120可以包括一个或多个通用计算机、专用服务器计算机(例如PC(个人计算机)服务器、UNIX服务器、中端服务器)、刀片式服务器、大型计算机、服务器群集或任何其他适当的布置和/或组合。服务器120可以包括运行虚拟操作系统的一个或多个虚拟机,或者涉及虚拟化的其他计算架构(例如可以被虚拟化以维护服务器的虚拟存储设备的逻辑存储设备的一个或多个灵活池)。在各种实施例中,服务器120可以运行提供下文所描述的功能的一个或多个服务或软件应用。
服务器120中的计算单元可以运行包括上述任何操作系统以及任何商业上可用的服务器操作系统的一个或多个操作系统。服务器120还可以运行各种附加服务器应用程序和/或中间层应用程序中的任何一个,包括HTTP服务器、FTP服务器、CGI服务器、JAVA服务器、数据库服务器等。
在一些实施方式中,服务器120可以包括一个或多个应用程序,以分析和合并从客户端设备101、102、103、104、105和106的用户接收的数据馈送和/或事件更新。服务器120还可以包括一个或多个应用程序,以经由客户端设备101、102、103、104、105和106的一个或多个显示设备来显示数据馈送和/或实时事件。
系统100还可以包括一个或多个数据库130。在某些实施例中,这些数据库可以用于存储数据和其他信息。例如,数据库130中的一个或多个可用于存储诸如音频文件和视频文件的信息。数据存储库130可以驻留在各种位置。例如,由服务器120使用的数据存储库可以在服务器120本地,或者可以远离服务器120且可以经由基于网络或专用的连接与服务器120通信。数据存储库130可以是不同的类型。在某些实施例中,由服务器120使用的数据存储库可以是数据库,例如关系数据库。这些数据库中的一个或多个可以响应于命令而存储、更新和检索到数据库以及来自数据库的数据。
在某些实施例中,数据库130中的一个或多个还可以由应用程序使用来存储应用程序数据。由应用程序使用的数据库可以是不同类型的数据库,例如键值存储库,对象存储库或由文件系统支持的常规存储库。
图1的系统100可以以各种方式配置和操作,以使得能够应用根据本公开所描述的各种方法和装置。
图2是图示出根据示例性实施例的数据处理的方法200的流程图。方法200可以在服务器(例如,图1中所示的服务器120)处执行。方法200可包括:步骤S202、将待连接的第一数据集和第二数据集分别拆分为多个第一分区和多个第二分区;步骤S204、确定多个第一分区和多个第二分区中的每个分区的数据量;步骤S206、根据第一数据集和第二数据集的连接类型以及所确定的每个分区的数据量,选择性地对多个第一分区和多个第二分区进行再拆分,以得到多个第一数据集分区和多个第二数据集分区;以及步骤S208、将多个第一数据集分区和多个第二数据集分区分配至各自的计算节点以进行第一数据集和所述第二数据集的连接。
下面具体描述方法200的各个步骤。
在步骤S202,将待连接的第一数据集和第二数据集分别拆分为多个第一分区和多个第二分区。
根据一些实施例,可以将待连接的第一数据集的数据任意划分为多个第一分区,同样地,将第二数据集的数据任意划分为多个第二分区。在一些示例中,也可以根据待连接的第一数据集和第二数据集的关联关系,将第一数据集和第二数据集分别拆分为多个第一分区和多个第二分区。在一些示例中,关联关系可包括第一数据集和第二数据集的共有键值对。例如,以上述数据表1和数据表2为例,它们共有的主关键字为A和B。根据数据表1和数据表2的共有的主关键字,可以将数据表1拆分为包含主关键字A的行和主关键字C的行的分区11以及包含主关键字B的行的分区12,并且相应地将数据表2拆分为包含主关键字A的行和主关键字D的行的分区21以及包含主关键字B的行的分区22。上述根据关联关系对第一数据集和第二数据集进行拆分,可以确保两个数据集拆分后的分区还可以按照原有的关联关系进行连接,从而确保数据连接的准确性和可靠性。
在一些实施例中,由第一数据集和第二数据集拆分得到的多个第一分区和多个第二分区能够一一对应,从而便于拆分后的第一数据集和第二数据集之间连接并增加连接的准确性。
在步骤S204,确定多个第一分区和多个第二分区中的每个分区的数据量。
根据一些实施例,可以通过统计分区中的数据的数量来确定第一分区和第二分区的数据量,也可以通过计算分区中的数据占用的存储资源的大小来确定第一分区和第二分区的数据量。
在步骤S206,根据第一数据集和第二数据集的连接类型以及所确定的每个分区的数据量,选择性地对多个第一分区和多个第二分区进行再拆分,以得到多个第一数据集分区和多个第二数据集分区。
根据一些实施例,第一数据集和第二数据集的连接类型包括以下各项中的一种:内连接、左连接以及右连接。
根据一些实施例,选择性地对多个第一分区和多个第二分区进行再拆分包括:对多个第一分区进行再拆分、对多个第二分区进行再拆分以及对多个第一分区和多个第二分区分别进行再拆分。继续以上述数据表1和数据表2为例,可以对数据量较大的分区11(包含主关键字A和C的行)进行再拆分,拆分为包含主关键字A的行的数据集分区11a以及包含主关键字C的行的数据集分区11b,或者对数据量较大的分区21(包含主关键字A和D的行)进行再拆分,拆分为包含主关键字A的行的数据集分区21a以及包含主关键字D的行的数据集分区21b,或者对分区11和分区21均进行再拆分。
在步骤S208,将多个第一数据集分区和多个第二数据集分区分配至各自的计算节点以进行第一数据集和所述第二数据集的连接。
根据一些实施例,例如由于数据量过于庞大,可以将步骤S206中得到的第一数据集分区和第二数据集分区分配到大数据集群中的计算节点中。利用大数据集群的计算资源,通过并行计算来实现第一数据集和第二数据集的连接。
根据本公开的实施例,通过基于连接类型选择性地对数据量较大的分区进行再次拆分,并将再拆分之后得到的分区分配至各自的计算节点,可以使得数据分布均匀,从而缓解、减轻或甚至消除数据倾斜的问题,并且同时保证连接的准确性和可靠性。
图3是图示出根据示例性实施例的图2中的再拆分步骤(S206)的流程图;图4是图示出根据示例性实施例的数据处理的方法的原理示意图。下面结合图3和图4进一步阐述方法200中的步骤S206。
在步骤S302a、S302b以及S302c,确定第一数据集和第二数据集的连接类型,以根据连接类型来选择性地对多个第一分区和多个第二分区进行再拆分。在此应注意,虽然图3中示出的是首先执行步骤S302a、确定连接类型是否为内连接,但是应理解步骤S302a可以在步骤S302b(确定连接类型是否为左连接)和步骤S302c(确定连接类型是否为右连接)之后进行,或者与它们并发地执行,并且本公开不限于此。
在步骤S304b和S306b,响应于确定连接类型为左连接,对于多个第一分区中的每个分区,执行步骤S304b(确定该分区的数据量是否大于阈值)以及步骤S306b(响应于确定该分区的数据量大于阈值,对该分区进行再拆分,以得到多个第一数据集分区)。这样可以使得分区的数据量分布更加均匀,从而避免数据倾斜的问题。
在步骤S308b,当多个第一分区和多个第二分区一一对应时,为了确保再拆分后的分区仍能一一对应,在对数据量大于阈值的第一分区进行再拆分后,还可以对与该第一分区相对应的第二分区进行复制,以使得所获得的多个第一数据集分区和多个第二数据集分区也可以保持一一对应,从而便于数据集之间的连接并且增加连接的准确性和可靠性。
以图4为例,根据关联关系,对数据集群410中的第一数据集和第二数据集进行分别拆分,以得到包括多个第一分区1,2,…,n和多个第二分区1,2,…,n的数据集群420,其中,多个第一分区1,2,…,n和多个第二分区1,2,…,n可一一对应;响应于确定第一分区1的数据量大于阈值,对第一分区1进行再拆分,以得到第一分区1a和1b;响应于确定第一分区1被再拆分,对与第一分区1相对应的第二分区1进行复制,以得到包含多个第一分区1a,1b,2,…,n和多个第二分区1,1,2,…,n的数据集群430b,多个第一分区1a,1b,2,…,n和多个第二分区1,1,2,…,n仍保持一一对应。
根据本公开的实施例,在连接类型为左连接时,仅对左数据集(即,第一数据集)中的分区进行再拆分,并对右数据集(即,第二数据集)中与再拆分的分区对应的分区进行复制。如果此时也对右数据集中的分区进行再拆分,并相应地复制左数据集中的分区,不仅会使得结果表中的行数增多,而且还会产生数据重复,具体地结果表中的部分主关键字重复,从而造成存储资源和计算资源的浪费。
在步骤S304c和S306c,响应于确定连接类型为右连接,对于多个第二分区中的每个分区,执行步骤S306c、确定该分区的数据量是否大于阈值以及步骤S306c、响应于确定该分区的数据量大于阈值,对该分区进行再拆分,以得到多个第二数据集分区。这样可以使得分区的数据量分布更加均匀,从而避免数据倾斜的问题。
在步骤S308c,当多个第一分区和多个第二分区一一对应时,为了确保再拆分后的分区仍能一一对应,在对数据量大于阈值的第二分区进行再拆分后,还可以对与该第二分区相对应的第一分区进行复制,以使得所获得的多个第一数据集分区和多个第二数据集分区也可以保持一一对应,从而便于数据集之间的连接并且增加连接的准确性和可靠性。
以图4为例,响应于确定第二分区1的数据量大于阈值,对第二分区1进行再拆分,以得到第二分区1a和1b;响应于确定第二分区1被再拆分,对与第二分区1相对应的第一分区1进行复制,以得到包含多个第一分区1,1,2,…,n和多个第二分区1a,1b,2,…,n的数据集群430c,多个第一分区1,1,2,…,n和多个第二分区1a,1b,2,…,n仍保持一一对应。
根据本公开的实施例,在连接类型为右连接时,仅对右数据集(即,第二数据集)中的分区进行再拆分,并对左数据集(即,第一数据集)中与再拆分的分区对应的分区进行复制。如果此时也对左数据集中的分区进行再拆分,并相应地复制右数据集中的分区,不仅会使得结果表中的行数增多,而且还会产生数据重复,具体地结果表中的部分主关键字重复,从而造成存储资源和计算资源的浪费。
当确定连接类型为内连接时,对多个第一分区中的每个分区,执行步骤S304b、S306b以及S308b并且对多个第二分区中的每个分区,执行步骤S304c、S306c以及S308c。也就是说,对于多个第一分区和多个第二分区两者中的每个分区:确定该分区的数据量是否大于阈值;以及响应于确定该分区的数据量大于阈值,对该分区进行再拆分;并且响应于确定多个第一分区中的某个第一分区被再拆分,对多个第二分区中与该第一分区对应的第二分区进行复制,使得得到的多个第一数据集分区和多个第二数据集分区一一对应;响应于确定多个第二分区中的某个第二分区被再拆分,对多个第一分区中与该二分区对应的第一分区进行复制,使得得到的多个第一数据集分区和多个第二数据集分区一一对应。
以图4为例,响应于确定第一分区1和第二分区2的数据量大于阈值,对第一分区1和第二分区2进行再拆分,以得到第一分区1a,1b以及第二分区2a,2b;然后,对与第一分区1相对应的第二分区1进行复制并且对与第二分区2相对应的第一分区2进行复制,以得到包含多个第一分区1a,1b,2,2,…,n和多个第二分区1,1,2a,2b,…,n的数据集群430a,其中,多个第一分区1a,1b,2,2,…,n和多个第二分区1,1,2a,2b,…,n仍保持一一对应。
虽然各个操作在附图中被描绘为按照特定的顺序,但是这不应理解为要求这些操作必须以所示的特定顺序或者按顺行次序执行,也不应理解为要求必须执行所有示出的操作以获得期望的结果。例如,步骤S306b可以在步骤S308b之前被执行,或者与步骤S308b并发地执行;步骤S308c可以在步骤S308c之前被执行,或者与步骤S308c并发地执行。又例如,步骤S308b和S308c甚至可以被省略。
此外,虽然图3中示出的是在确定连接类型后,选择性地确定第一分区和/或第二分区的数据量是否大于阈值,但是应理解,也可以在确定连接类型之前,统一确定第一分区和第二分区的数据量是否大于阈值,之后再根据连接类型判断是否对第一分区和/或第二分区进行再拆分。
在一些实施例中,可以根据每个计算节点的计算能力设定上述阈值,以使得再拆分后得到的数据集分区的数据量在计算节点能够计算的范围内,从而避免数据倾斜引起的计算速度的降低。在一些示例中,计算能力可包括该计算节点的内存大小。在一些示例中,也可以根据数据集中各分区的数据量的平均值和方差设定上述阈值,以使得各节点的数据分布更加均匀,从而避免数据倾斜的问题。
图5是图示出根据示例性实施例的数据处理的装置500的示意性框图。装置500包括拆分模块510、确定模块520、再拆分模块530以及分配模块540。拆分模块510被配置为将待连接的第一数据集和第二数据集分别拆分为多个第一分区和多个第二分区;确定模块520被配置为确定多个第一分区和多个第二分区中的每个分区的数据量;再拆分模块530被配置为根据第一数据集和第二数据集的连接类型以及所确定的每个分区的数据量,选择性地对多个第一分区和多个第二分区进行再拆分,以得到多个第一数据集分区和多个第二数据集分区;分配模块540被配置为将多个第一数据集分区和多个第二数据集分区分配至各自的计算节点以进行第一数据集和第二数据集的连接。
应当理解,图5中所示装置500的各个模块可以与参考图2和图3描述的方法200中的各个步骤相对应。由此,上面针对方法200描述的操作、特征和优点同样适用于装置500及其包括的模块。为了简洁起见,某些操作、特征和优点在此不再赘述。
根据本公开的又一方面,提供了一种计算机设备,包括:存储器、处理器以及存储在所述存储器上的计算机程序。处理器被配置为执行计算机程序以实现上文描述的任一方法的步骤。
根据本公开的又一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序。计算机程序被处理器执行时实现上文描述的任一方法的步骤。
根据本公开的又一方面,提供了一种计算机程序产品,包括计算机程序。计算机程序被处理器执行时实现上文描述的任一方法的步骤。
在下文中,结合图6描述这样的计算机设备、非暂态计算机可读存储介质和计算机程序产品的说明性示例。
图6示出了可以被用来实施本文所描述的方法的计算机设备600的示例配置。举例来说,图1中所示的服务器120可以包括类似于计算机设备600的架构。上述数据处理的装置也可以全部或至少部分地由计算机设备600或类似设备或系统实现。
计算机设备600可以是各种不同类型的设备,例如服务提供商的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统、和/或任何其它合适的计算机设备或计算系统。计算机设备600的示例包括但不限于:台式计算机、服务器计算机、笔记本电脑或上网本计算机、移动设备(例如,平板电脑、蜂窝或其他无线电话(例如,智能电话)、记事本计算机、移动台)、可穿戴设备(例如,眼镜、手表)、娱乐设备(例如,娱乐器具、通信地耦合到显示设备的机顶盒、游戏机)、电视或其他显示设备、汽车计算机等等。因此,计算机设备600的范围可以从具有大量存储器和处理器资源的全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏控制台)。
计算机设备600可以包括能够诸如通过系统总线614或其他适当的连接彼此通信的至少一个处理器602、存储器604、(多个)通信接口606、显示设备608、其他输入/输出(I/O)设备610以及一个或更多大容量存储设备612。
处理器602可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器602可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。除了其他能力之外,处理器602可以被配置成获取并且执行存储在存储器604、大容量存储设备612或者其他计算机可读介质中的计算机可读指令,诸如操作系统616的程序代码、应用程序618的程序代码、其他程序620的程序代码等。
存储器604和大容量存储设备612是用于存储指令的计算机可读存储介质的示例,所述指令由处理器602执行来实施前面所描述的各种功能。举例来说,存储器604一般可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,大容量存储设备612一般可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。存储器604和大容量存储设备612在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,所述计算机程序代码可以由处理器602作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
多个程序模块可以存储在大容量存储设备612上。这些程序包括操作系统616、一个或多个应用程序618、其他程序620和程序数据622,并且它们可以被加载到存储器604以供执行。这样的应用程序或程序模块的示例可以包括例如用于实现以下部件/功能的计算机程序逻辑(例如,计算机程序代码或指令):装置500(包括拆分模块510、确定模块520、再拆分模块530以及分配模块540)方法200(包括方法200的任何合适的步骤)、和/或本文描述的另外的实施例。
虽然在图6中被图示成存储在计算机设备600的存储器604中,但是模块616、618、620和622或者其部分可以使用可由计算机设备600访问的任何形式的计算机可读介质来实施。如本文所使用的,“计算机可读介质”至少包括两种类型的计算机可读介质,也就是计算机存储介质和通信介质。
计算机存储介质包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,所述信息诸如是计算机可读指令、数据结构、程序模块或者其他数据。计算机存储介质包括而不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算机设备访问的任何其他非传送介质。
与此相对,通信介质可以在诸如载波或其他传送机制之类的已调数据信号中具体实现计算机可读指令、数据结构、程序模块或其他数据。本文所定义的计算机存储介质不包括通信介质。
计算机设备600还可以包括一个或更多通信接口606,以用于诸如通过网络、直接连接等等与其他设备交换数据,正如前面所讨论的那样。这样的通信接口可以是以下各项中的一个或多个:任何类型的网络接口(例如,网络接口卡(NIC))、有线或无线(诸如IEEE802.11无线LAN(WLAN))无线接口、全球微波接入互操作(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、BluetoothTM接口、近场通信(NFC)接口等。通信接口606可以促进在多种网络和协议类型内的通信,其中包括有线网络(例如LAN、电缆等等)和无线网络(例如WLAN、蜂窝、卫星等等)、因特网等等。通信接口606还可以提供与诸如存储阵列、网络附属存储、存储区域网等等中的外部存储装置(未示出)的通信。
在一些示例中,可以包括诸如监视器之类的显示设备608,以用于向用户显示信息和图像。其他I/O设备610可以是接收来自用户的各种输入并且向用户提供各种输出的设备,并且可以包括触摸输入设备、手势输入设备、摄影机、键盘、遥控器、鼠标、打印机、音频输入/输出设备等等。
虽然在附图和前面的描述中已经详细地说明和描述了本公开,但是这样的说明和描述应当被认为是说明性的和示意性的,而非限制性的;本公开不限于所公开的实施例。通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除未列出的其他元件或步骤,并且词语“一”或“一个”不排除多个。在相互不同的从属权利要求中记载了某些措施的仅有事实并不表明这些措施的组合不能用来获益。

Claims (10)

1.一种数据处理的方法,包括:
将待连接的第一数据集和第二数据集分别拆分为多个第一分区和多个第二分区;
确定所述多个第一分区和所述多个第二分区中的每个分区的数据量;
根据所述第一数据集和所述第二数据集的连接类型以及所确定的每个分区的数据量,选择性地对所述多个第一分区和所述多个第二分区进行再拆分,以得到多个第一数据集分区和多个第二数据集分区,其中,所述连接类型包括以下各项中的一种:内连接、左连接以及右连接,并且所述选择性地对所述多个第一分区和所述多个第二分区进行再拆分包括:
响应于确定所述连接类型为内连接,根据所确定的每个分区的数据量对所述多个第一分区和所述多个第二分区分别进行再拆分,包括:对于所述多个第一分区和所述多个第二分区两者中的每个分区:
确定该分区的数据量是否大于阈值;以及
响应于确定该分区的数据量大于阈值,对该分区进行再拆分;
响应于确定所述连接类型为左连接,根据所确定的每个分区的数据量对所述多个第一分区进行再拆分,包括:对于所述多个第一分区中的每个分区:
确定该分区的数据量是否大于阈值;以及
响应于确定该分区的数据量大于阈值,对该分区进行再拆分;以及
响应于确定所述连接类型为右连接,根据所确定的每个分区的数据量对所述多个第二分区进行再拆分,包括:对于所述多个第二分区中的每个分区:
确定该分区的数据量是否大于阈值;以及
响应于确定该分区的数据量大于阈值,对该分区进行再拆分;以及
将所述多个第一数据集分区和所述多个第二数据集分区分配至各自的计算节点以进行所述第一数据集和所述第二数据集的连接。
2.根据权利要求1所述的方法,其中,
所述多个第一分区和所述多个第二分区一一对应,并且
其中,所述选择性地对所述多个第一分区和所述多个第二分区进行再拆分还包括:
响应于确定所述多个第一分区中的某个第一分区被再拆分,对所述多个第二分区中与该第一分区对应的第二分区进行复制,使得得到的所述多个第一数据集分区和所述多个第二数据集分区一一对应。
3.根据权利要求1或2所述的方法,其中,
所述多个第一分区和所述多个第二分区一一对应,并且
其中,所述选择性地对所述多个第一分区和所述多个第二分区进行再拆分还包括:
响应于确定所述多个第二分区中的某个第二分区被再拆分,对所述多个第一分区中与该第二分区对应的第一分区进行复制,使得得到的所述多个第一数据集分区和所述多个第二数据集分区一一对应。
4.根据权利要求1或2所述的方法,其中,所述将待连接的所述第一数据集和所述第二数据集分别拆分为多个第一分区和多个第二分区包括:
根据待连接的第一数据集和第二数据集的关联关系,将所述第一数据集和所述第二数据集分别拆分为多个第一分区和多个第二分区。
5.根据权利要求4所述的方法,其中,所述关联关系包括所述第一数据集和所述第二数据集的共有键值对。
6.根据权利要求1或2所述的方法,其中,所述阈值是根据每个计算节点的计算能力设定的。
7.根据权利要求6所述的方法,其中,所述计算能力包括该计算节点的内存大小。
8.一种数据处理的装置,包括:
拆分模块,所述拆分模块被配置为将待连接的第一数据集和第二数据集分别拆分为多个第一分区和多个第二分区;
确定模块,所述确定模块被配置为确定所述多个第一分区和所述多个第二分区中的每个分区的数据量;
再拆分模块,所述再拆分模块被配置为根据所述第一数据集和所述第二数据集的连接类型以及所确定的每个分区的数据量,选择性地对所述多个第一分区和所述多个第二分区进行再拆分,以得到多个第一数据集分区和多个第二数据集分区,其中,所述连接类型包括以下各项中的一种:内连接、左连接以及右连接,并且所述选择性地对所述多个第一分区和所述多个第二分区进行再拆分包括:
响应于确定所述连接类型为内连接,根据所确定的每个分区的数据量对所述多个第一分区和所述多个第二分区分别进行再拆分,包括:对于所述多个第一分区和所述多个第二分区两者中的每个分区:
确定该分区的数据量是否大于阈值;以及
响应于确定该分区的数据量大于阈值,对该分区进行再拆分;
响应于确定所述连接类型为左连接,根据所确定的每个分区的数据量对所述多个第一分区进行再拆分,包括:对于所述多个第一分区中的每个分区:
确定该分区的数据量是否大于阈值;以及
响应于确定该分区的数据量大于阈值,对该分区进行再拆分;以及
响应于确定所述连接类型为右连接,根据所确定的每个分区的数据量对所述多个第二分区进行再拆分,包括:对于所述多个第二分区中的每个分区:
确定该分区的数据量是否大于阈值;以及
响应于确定该分区的数据量大于阈值,对该分区进行再拆分;以及
分配模块,所述分配模块被配置为将所述多个第一数据集分区和所述多个第二数据集分区分配至各自的计算节点以进行所述第一数据集和所述第二数据集的连接。
9.一种计算机设备,包括:
存储器、处理器以及存储在所述存储器上的计算机程序,
其中,所述处理器被配置为执行所述计算机程序以实现权利要求1至7中任一项所述方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
CN202110254726.8A 2021-03-05 2021-03-05 数据处理的方法、装置、计算机设备以及存储介质 Active CN112905596B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110254726.8A CN112905596B (zh) 2021-03-05 2021-03-05 数据处理的方法、装置、计算机设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110254726.8A CN112905596B (zh) 2021-03-05 2021-03-05 数据处理的方法、装置、计算机设备以及存储介质

Publications (2)

Publication Number Publication Date
CN112905596A CN112905596A (zh) 2021-06-04
CN112905596B true CN112905596B (zh) 2024-02-02

Family

ID=76108115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110254726.8A Active CN112905596B (zh) 2021-03-05 2021-03-05 数据处理的方法、装置、计算机设备以及存储介质

Country Status (1)

Country Link
CN (1) CN112905596B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590322A (zh) * 2021-07-30 2021-11-02 北京沃东天骏信息技术有限公司 一种数据处理方法和装置
CN117149717A (zh) * 2023-08-31 2023-12-01 中电云计算技术有限公司 表连接处理方法、装置、设备及存储介质

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102844754A (zh) * 2010-03-30 2012-12-26 惠普发展公司,有限责任合伙企业 用于对并行数据库管理系统的外连接的系统和方法
CN106716400A (zh) * 2015-06-26 2017-05-24 华为技术有限公司 一种数据表的分区管理方法及装置
CN107066612A (zh) * 2017-05-05 2017-08-18 郑州云海信息技术有限公司 一种基于SparkJoin操作的自适应数据倾斜调整方法
CN107480205A (zh) * 2017-07-24 2017-12-15 北京京东尚科信息技术有限公司 一种进行数据分区的方法和装置
CN108776692A (zh) * 2018-06-06 2018-11-09 北京京东尚科信息技术有限公司 用于处理信息的方法和装置
CN108959510A (zh) * 2018-06-27 2018-12-07 阿里巴巴集团控股有限公司 一种分布式数据库的分区级连接方法和装置
CN110019187A (zh) * 2017-09-12 2019-07-16 阿里巴巴集团控股有限公司 一种数据分配方法、装置及设备
CN110032563A (zh) * 2019-02-19 2019-07-19 阿里巴巴集团控股有限公司 一种失配值的处理方法、系统以及电子设备
CN110168516A (zh) * 2016-12-09 2019-08-23 华为技术有限公司 用于大规模并行处理的基于代价的动态计算节点分组优化
CN110196879A (zh) * 2018-04-25 2019-09-03 腾讯科技(深圳)有限公司 数据处理方法、装置、计算设备及存储介质
CN110209431A (zh) * 2018-02-28 2019-09-06 杭州海康威视数字技术股份有限公司 数据分区拆分方法及装置
US10409648B1 (en) * 2017-03-01 2019-09-10 Amazon Technologies, Inc. Splitting processing responsibility for separately stored data partitions
CN111083189A (zh) * 2018-10-18 2020-04-28 北京京东尚科信息技术有限公司 用于在运行时处理数据倾斜的系统和方法
CN111339064A (zh) * 2020-03-03 2020-06-26 中国平安人寿保险股份有限公司 数据倾斜矫正方法、装置及计算机可读存储介质
CN111753019A (zh) * 2019-03-26 2020-10-09 北京沃东天骏信息技术有限公司 一种应用于数据仓库的数据分区方法和装置
CN111767265A (zh) * 2020-05-14 2020-10-13 中邮消费金融有限公司 一种连接操作中数据倾斜方法、系统及计算机设备

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102844754A (zh) * 2010-03-30 2012-12-26 惠普发展公司,有限责任合伙企业 用于对并行数据库管理系统的外连接的系统和方法
CN106716400A (zh) * 2015-06-26 2017-05-24 华为技术有限公司 一种数据表的分区管理方法及装置
CN110168516A (zh) * 2016-12-09 2019-08-23 华为技术有限公司 用于大规模并行处理的基于代价的动态计算节点分组优化
US10409648B1 (en) * 2017-03-01 2019-09-10 Amazon Technologies, Inc. Splitting processing responsibility for separately stored data partitions
CN107066612A (zh) * 2017-05-05 2017-08-18 郑州云海信息技术有限公司 一种基于SparkJoin操作的自适应数据倾斜调整方法
CN107480205A (zh) * 2017-07-24 2017-12-15 北京京东尚科信息技术有限公司 一种进行数据分区的方法和装置
CN110019187A (zh) * 2017-09-12 2019-07-16 阿里巴巴集团控股有限公司 一种数据分配方法、装置及设备
CN110209431A (zh) * 2018-02-28 2019-09-06 杭州海康威视数字技术股份有限公司 数据分区拆分方法及装置
CN110196879A (zh) * 2018-04-25 2019-09-03 腾讯科技(深圳)有限公司 数据处理方法、装置、计算设备及存储介质
CN108776692A (zh) * 2018-06-06 2018-11-09 北京京东尚科信息技术有限公司 用于处理信息的方法和装置
CN108959510A (zh) * 2018-06-27 2018-12-07 阿里巴巴集团控股有限公司 一种分布式数据库的分区级连接方法和装置
CN111083189A (zh) * 2018-10-18 2020-04-28 北京京东尚科信息技术有限公司 用于在运行时处理数据倾斜的系统和方法
CN110032563A (zh) * 2019-02-19 2019-07-19 阿里巴巴集团控股有限公司 一种失配值的处理方法、系统以及电子设备
CN111753019A (zh) * 2019-03-26 2020-10-09 北京沃东天骏信息技术有限公司 一种应用于数据仓库的数据分区方法和装置
CN111339064A (zh) * 2020-03-03 2020-06-26 中国平安人寿保险股份有限公司 数据倾斜矫正方法、装置及计算机可读存储介质
CN111767265A (zh) * 2020-05-14 2020-10-13 中邮消费金融有限公司 一种连接操作中数据倾斜方法、系统及计算机设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
基于增量式分区策略的MapReduce数据均衡方法;王卓 等;《计算机学报》;第39卷(第01期);19-35 *
基于改进分区算法的Spark数据倾斜优化研究;杨永坤;《中国优秀硕士学位论文全文数据库 信息科技辑》(第06期);I138-298 *
非均匀数据分布下的MapReduce连接查询算法优化;张敬伟 等;《计算机科学与探索》;第11卷(第05期);752-767 *

Also Published As

Publication number Publication date
CN112905596A (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
CN109074377B (zh) 用于实时处理数据流的受管理功能执行
US9563426B1 (en) Partitioned key-value store with atomic memory operations
US10356150B1 (en) Automated repartitioning of streaming data
US10685033B1 (en) Systems and methods for building an extract, transform, load pipeline
CN112905596B (zh) 数据处理的方法、装置、计算机设备以及存储介质
US9063918B2 (en) Determining a virtual interrupt source number from a physical interrupt source number
EP4009170B1 (en) Data management
Allam Usage of Hadoop and Microsoft Cloud in Big Data Analytics: An Exploratory Study
CN110249312B (zh) 用于将数据集成作业从源框架转换到目标框架的方法和系统
CN112905854A (zh) 数据处理方法、装置、计算设备及存储介质
CN112925792B (zh) 数据存储控制方法、装置、计算设备及介质
CN112433812B (zh) 一种虚拟机跨集群迁移方法、系统、设备及计算机介质
CN110781159B (zh) Ceph目录文件信息读取方法、装置、服务器及存储介质
US20190294717A1 (en) Method and system for performing inner-joins on a sharded data set
US10637915B1 (en) Storage services configured for storage-oriented applications
US20240220334A1 (en) Data processing method in distributed system, and related system
US11157456B2 (en) Replication of data in a distributed file system using an arbiter
CN110286981A (zh) 虚拟云桌面服务器的使用状态的显示方法及显示系统
CN110888972A (zh) 一种基于Spark Streaming的敏感内容识别方法及装置
US9563687B1 (en) Storage configuration in data warehouses
US10146791B2 (en) Open file rebalance
CN113297226B (zh) 数据存储方法、数据读取方法、装置、电子设备及介质
CN109617954B (zh) 一种创建云主机的方法和装置
CN113609168A (zh) 数据导出方法、装置、终端以及可读存储介质
US20220197874A1 (en) Efficient storage of key-value data with schema integration

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