CN115562861A - 针对数据倾斜的数据处理的方法和装置 - Google Patents
针对数据倾斜的数据处理的方法和装置 Download PDFInfo
- Publication number
- CN115562861A CN115562861A CN202211203462.4A CN202211203462A CN115562861A CN 115562861 A CN115562861 A CN 115562861A CN 202211203462 A CN202211203462 A CN 202211203462A CN 115562861 A CN115562861 A CN 115562861A
- Authority
- CN
- China
- Prior art keywords
- data
- key
- associated data
- processing
- calculation
- 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
Images
Classifications
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
Abstract
本公开涉及一种针对数据倾斜的数据处理的方法和装置,上述方法包括:获取待处理的键‑值对形式的关联数据,该关联数据的键和值分别对应为:处理对象的标识、该处理对象的明细数据;预判该关联数据对应的键是否为热点键,该热点键用于表征该关联数据的明细数据一次性计算需要消耗的计算资源超出设定阈值的状态;在预判该关联数据对应的键为热点键的情况下,将该关联数据进行初始分组,使得各组的数据处理量符合预设范围,并将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果;基于该关联数据的键,对该关联数据进行重新分组,并根据该中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果。
Description
技术领域
本公开涉及分布式计算和数据处理技术领域,尤其涉及一种针对数据倾斜的数据处理的方法和装置。
背景技术
在很多数据处理的场景下,存在不同细粒度程度的数据,对于粗细粒度的数据,在计算时需要基于该粗细粒度数据下的更细化细粒度的明细数据进行计算。以物流场景作为示例,一件货物首先属于一个包裹,一个包裹属于一个运单,在一个路段内,运单会对应一个委托书,委托书会对应一个派车单,一个派车单属于一个派车任务。因为存在这样的所属关系,基于更细化细粒度的明细数据计算粗粒度下的聚合值,是物流场景下非常常见的聚合计算的特征,例如,基于多个运单明细体积来计算委托书明细体积。
然而,这些数据处理场景经常会面临数据倾斜的问题。数据倾斜是指在分布式系统处理数据过程中,数据从上游往下游分发时,发送到不同节点的数据量明显不均匀的情况,其中极少量的节点要处理大量数据,剩余节点要处理的数据量很小的情况。由此导致集群的资源利用率不高且部分节点处理时效性差的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开的实施例提供了一种针对数据倾斜的数据处理的方法和装置。
第一方面,本公开的实施例提供了一种针对数据倾斜的数据处理的方法。上述方法包括:获取待处理的键-值对形式的关联数据,上述关联数据的键为处理对象的标识,上述关联数据的值为上述处理对象的明细数据;预判上述关联数据对应的键是否为热点键,上述热点键用于表征上述关联数据的明细数据一次性计算需要消耗的计算资源超出设定阈值的状态;在预判上述关联数据对应的键为热点键的情况下,将上述关联数据进行初始分组,使得各组的数据处理量符合预设范围,并将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果;基于上述关联数据的键,对上述关联数据进行重新分组,并根据上述中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果。
根据本公开的实施例,将上述关联数据进行初始分组,使得各组的数据处理量符合预设范围,包括:获取上述关联数据的描述字段信息,上述描述字段信息为上述关联数据中与上述键无关的额外描述信息或者与上述键有关且为上述键下属的细粒度更高的描述信息;根据上述关联数据的总个数和上述第一处理集群中资源槽的最大并行度进行平均分配计算,得到关联数据在平均分配状态下各组的数据量范围;当上述各组的数据量范围符合上述预设范围时,根据上述描述字段信息,将上述关联数据划分为多组数据,且各组的分组号的最大值不超过上述最大并行度。
根据本公开的实施例,上述方法还包括:当上述各组的数据量范围不符合上述预设范围时,将上述关联数据划分为多个批次,使得每个批次的关联数据的总量在上述资源槽的数据处理量承接范围之内。
根据本公开的实施例,上述将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果,包括:将一个或多个批次的各组关联数据的分组号和对应的键进行拼接,得到拼接有分组号的分组标识键;对上述分组标识键进行哈希计算;根据上述分组标识键进行哈希计算后的结果,将上述一个或多个批次的各组关联数据分发至第一处理集群对应的资源槽进行计算,得到各组关联数据的计算结果,上述计算结果作为上述中间处理结果。
根据本公开的实施例,上述方法还包括:在预判上述关联数据对应的键不是热点键的情况下,将上述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果,上述第二处理集群与上述第一处理集群为不同的集群。
根据本公开的实施例,将上述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果,包括:对上述关联数据的键进行哈希计算;根据上述关联数据的键进行哈希计算后的结果,将上述关联数据分发至第二处理集群对应的资源槽进行计算,得到的计算结果作为上述目标处理结果。
根据本公开的实施例,上述关联数据中的明细数据均被分发至中间状态缓存中,上述中间状态缓存中的数据能被上述第一处理集群和上述第二处理集群共同访问。
根据本公开的实施例,上述预判上述关联数据对应的键是否为热点键,包括:读取热点键缓存列表中的列表数据;在上述热点键缓存列表中不存在列表数据的情况下,提取上述关联数据中处理对象的特征信息;将上述特征信息输入至预先训练好的逻辑回归模型中进行处理,输出上述特征信息对应的关联数据的键是否为热点键的结果,并将结果为热点键的关联数据的键信息作为列表数据存入至热点键缓存列表中。
根据本公开的实施例,上述逻辑回归模型用于确定上述特征信息对应的预测明细数据,并根据上述预测明细数据确定上述关联处理对象对应的预测明细数据是否导致数据倾斜状态;上述数据倾斜状态为上述预测明细数据一次性计算需要消耗的计算资源超出设定阈值的状态;在上述逻辑回归模型确定上述预测明细数据导致数据倾斜状态的情况下,输出上述关联数据对应的键为热点键的结果;在上述逻辑回归模型确定上述预测明细数据不导致数据倾斜状态的情况下,输出上述关联数据对应的键为非热点键的结果。
根据本公开的实施例,预判上述关联数据对应的键是否为热点键,还包括:在上述热点键缓存列表中存在列表数据的情况下,将上述热点键缓存列表中的列表数据与当前关联数据的键进行匹配;在匹配一致的情况下,预判上述当前关联数据对应的键为热点键;在匹配不一致的情况下,预判上述当前关联数据对应的键为非热点键。
根据本公开的实施例,上述方法还包括:在上述热点键缓存列表中存在列表数据且预判上述关联数据对应的键不是热点键的情况下,执行以下操作:将上述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果;提取上述关联数据中处理对象的特征信息,将上述特征信息输入至预先训练好的逻辑回归模型中进行处理,得到热点分析结果。
根据本公开的实施例,上述方法还包括:在上述第二处理集群对上述关联数据进行计算期间,接收到上述热点分析结果表征上述关联数据对应的键为热点键的情况下,执行以下操作:将上述第二处理集群针对上述关联数据的已计算部分的历史计算结果保存至中间状态缓存中;上述中间状态缓存中的数据能被上述第一处理集群和上述第二处理集群共同访问;将上述关联数据的未计算部分进行初始分组,使得各组的数据处理量符合预设范围,并将划分后的各组未计算部分分发至上述第一处理集群的资源槽中进行计算,得到接续中间处理结果;上述第一处理集群基于上述关联数据的键,对上述未计算部分进行重新分组,并根据上述接续中间处理结果来对经重新分组后的未计算部分进行计算,得到接续处理结果;上述第一处理集群根据上述接续处理结果与从上述中间状态缓存读取的上述历史计算结果来进行计算,得到目标处理结果。
根据本公开的实施例,上述方法还包括:针对上述热点键缓存列表中的上述列表数据,获取与上述列表数据对应的处理对象的生命周期信息;上述列表数据为上述处理对象的标识信息;根据上述生命周期信息,生成上述列表数据的有效状态标签的有效期;根据上述有效期,监测上述列表数据的有效状态标签是否失效;在监测到特定列表数据的有效状态标签失效的情况下,将上述特定列表数据从上述热点键缓存列表中删除。
根据本公开的实施例,上述处理对象为物流场景下的委托书,上述明细数据为运单数据;上述目标处理结果为不同用户标识下的委托书的运单数据对应的运输总体积。
第二方面,本公开的实施例提供了一种针对数据倾斜的数据处理的装置。上述装置包括:数据获取模块、热点预判模块、初始分组模块、热点任务下发模块、重新分组模块和计算模块。上述数据获取模块用于获取待处理的键-值对形式的关联数据,上述关联数据的键为处理对象的标识,上述关联数据的值为上述处理对象的明细数据。上述热点预判模块用于预判上述关联数据对应的键是否为热点键,上述热点键用于表征上述关联数据的明细数据一次性计算需要消耗的计算资源超出设定阈值的状态。上述初始分组模块用于在预判上述关联数据对应的键为热点键的情况下,将上述关联数据进行初始分组,使得各组的数据处理量符合预设范围。上述热点任务下发模块用于将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果。上述重新分组模块用于基于上述关联数据的键,对上述关联数据进行重新分组。上述计算模块用于根据上述中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果。
第三方面,本公开的实施例提供了一种电子设备。上述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现如上所述的针对数据倾斜的数据处理的方法。
第四方面,本公开的实施例提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的针对数据倾斜的数据处理的方法。
本公开实施例提供的一些技术方案至少具有如下优点的部分或全部:
通过在计算任务向处理集群进行分发之前对关联数据对应的键是否为热点键进行预判,针对预判为热点键的关联数据,先进行初始分组,使得各组的数据处理量符合预设范围,经过初始分组的关联数据分别分发至第一处理集群的资源槽中进行计算,得到中间处理结果;该初始分组确保数据处理量集中的关联数据被打散分发至第一处理集群中各个资源槽,能够实现资源槽中资源的有效利用;另外基于上述关联数据的键,对上述关联数据进行重新分组,并根据上述中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果,如此一来,能够有效提升数据处理效率以及提升集群的资源利用率,克服了将数据处理量集中的数据分发至一个处理节点进行处理导致的处理效率低以及集群资源利用率低的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了适用于本公开实施例的针对数据倾斜的数据处理的方法的系统架构;
图2示意性地示出了根据本公开一实施例的针对数据倾斜的数据处理的方法的流程图;
图3示意性地示出了根据本公开另一实施例的针对数据倾斜的数据处理的方法的流程图;
图4示意性地示出了根据本公开一实施例的操作S220的详细实施过程图;
图5示意性地示出了根据本公开又一实施例的针对数据倾斜的数据处理的方法的流程图;
图6示意性地示出了根据本公开又一实施例的针对数据倾斜的数据处理的方法的详细实施过程图;
图7示意性地示出了根据本公开再一实施例的针对数据倾斜的数据处理的方法的流程图;
图8示意性地示出了根据本公开又另一实施例的针对数据倾斜的数据处理的方法的流程图;
图9示意性地示出了根据本公开一实施例的操作S230的详细实施过程图;
图10示意性地示出了根据本公开实施例的针对数据倾斜的数据处理的装置的结构框图;以及
图11示意性地示出了本公开实施例提供的电子设备的结构框图。
具体实施方式
在实现本公开技术构思的过程中发现:在物流场景下进行实际数据加工的过程中,不同的粗粒度数据下的细粒度明细数据的数量相差非常大,例如委托书下的运单数量范围可以从个位数到上千不等,这就导致了如果单纯按照委托书编号进行分组,虽然每个计算节点要处理的委托书个数相同,但是因为不同委托书下运单数量存在较大差异,因此存在多个运单数量多的委托书数据下发到同一个计算节点的情况,从而导致严重的数据倾斜。数据倾斜会导致不同的计算节点,要处理的数据量有很大的区别。在整个程序拓扑结构中,几个处理数据量大的节点,处理速度会比较慢,成为整个程序处理的性能瓶颈,进而影响指标加工的时效性,使数据可能存在较大延迟。
此外,数据倾斜导致少量节点处理大部分数据,而其他节点因为要处理的数据量小,其计算资源在大部分时间处于闲置状态。从宏观上看,整个集群的资源利用率不高,没有充分利用现有资源。
有鉴于此,本公开的实施例提供了一种针对数据倾斜的数据处理的方法,上述方法包括:获取待处理的键-值对形式的关联数据,上述关联数据的键为处理对象的标识,上述关联数据的值为上述处理对象的明细数据;预判上述关联数据对应的键是否为热点键,上述热点键用于表征上述关联数据的明细数据一次性计算需要消耗的计算资源超出设定阈值的状态;在预判上述关联数据对应的键为热点键的情况下,将上述关联数据进行初始分组,使得各组的数据处理量符合预设范围,并将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果;基于上述关联数据的键,对上述关联数据进行重新分组,并根据上述中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果。
通过对待处理的关联数据进行热点键的预判,上述热点键用于表征上述关联数据的明细数据一次性计算需要消耗的计算资源超出设定阈值的状态,针对预判为热点键的关联数据,采取初始打散分组后分发至热点键对应的处理集群的资源槽进行聚合计算并重新分组后再次聚合计算的方式,能够有效提升数据处理效率以及提升集群的资源利用率,克服了将数据处理量集中的数据分发至一个处理节点进行处理导致的处理效率低以及集群资源利用率低的问题。
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1示意性地示出了适用于本公开实施例的针对数据倾斜的数据处理的方法的系统架构。
参照图1所示,适用于本公开实施例的针对数据倾斜的数据处理的方法的系统架构100包括:终端设备101、102、103,网络104和服务器105。网络104是在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如物流管理类应用、购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备。例如电子设备包括但不限于智能手机、平板电脑、笔记本电脑、台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103上传的物流数据(例如物流委托书、物流运单数据等)进行数据处理提供服务支持的后台管理服务器(仅为示例)或者为提供计算服务的云服务器。后台管理服务器可以对接收到的委托书数据、物流运单数据等进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的针对数据倾斜的数据处理的方法一般可以由数据处理端来执行,该数据处理端例如为服务器105或具有一定运算能力的终端设备。相应地,本公开实施例所提供的针对数据倾斜的数据处理的装置一般可以设置于服务器105中或上述具有一定运算能力的终端设备中。本公开实施例所提供的针对数据倾斜的数据处理的方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的针对数据倾斜的数据处理的装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
本公开的第一个示例性实施例提供了一种针对数据倾斜的数据处理的方法。
图2示意性地示出了根据本公开一实施例的针对数据倾斜的数据处理的方法的流程图。
参照图2所示,本公开实施例提供的针对数据倾斜的数据处理的方法,包括以下操作:S210、S220、S230和S240。
在操作S210,获取待处理的键-值对形式的关联数据,上述关联数据的键为处理对象的标识,上述关联数据的值为上述处理对象的明细数据。
以物流场景为例,上述处理对象为物流场景下的委托书,上述明细数据为运单数据。在其他应用场景中,关联数据中的处理对象是具有粗细粒度的概念,处理对象具有的一个或多个明细数据是更为细化细粒度的数据。
在一应用场景中,物流中涉及的不同商户的委托书和各个商户下的运单会以实时发生的数据流形式传输给数据处理端,数据处理端例如为服务器或具有计算能力的终端设备,由于一个委托书可以对应于数十个到数千个不等的运单数据,在一个派车单中,车辆能够运输的体积有限,一个派车任务可能对应于多个派车单,一个派车单可能对应于同一个用户的多个委托书或者对应于不同用户的多个委托书,那么基于更细化细粒度的明细数据来计算粗粒度下的聚合值,成为数据处理端常见的处理任务。对于数据处理端而言,面对进行数据聚合计算的数据处理任务时,首先会将依次接收到的委托书的数据和明细数据进行关联,得到关联数据。
例如通过对委托书A的信息进行分析后,确定委托书A对应的运单数据分别为运单数据1、运单数据2和运单数据3。以委托书的标识(例如为委托书编号)IDA作为关联数据的键,以明细数据作为关联数据的值,得到的以键-值对形式存储的关联数据表示为以下形式:IDA-运单数据1,IDA-运单数据2,IDA-运单数据3。
在操作S220,预判上述关联数据对应的键是否为热点键;上述热点键用于表征上述关联数据的明细数据一次性计算需要消耗的计算资源超出设定阈值的状态。
例如,在一实施例中,通过对委托书的运单数据的计算量进行预测,确定一次性计算该运单数据需要消耗的计算资源是否超出设定阈值,例如某个委托书对应有1000条运单数据,如果将这1000个运单数据分发至一个节点进行计算会导致数据倾斜的问题;因此,基于该操作S220,预先对关联数据的状态进行预判,当确定对该关联数据中的处理对象(这里以委托书示例)的明细数据(运单数据)进行一次性计算需要消耗的计算资源超出设定阈值时,那么预判该关联数据对应的键为热点键。
进而在后续的数据处理逻辑中,针对热点针对预判为热点键的关联数据,采取初始打散分组后分发至热点键对应的处理集群的资源槽进行聚合计算并重新分组后再次聚合计算的方式,以进行计算资源的合理分配以及提升数据处理效率,避免数据集中在某个节点处理导致的性能瓶颈。
在操作S230,在预判上述关联数据对应的键为热点键的情况下,将上述关联数据进行初始分组,使得各组的数据处理量符合预设范围,并将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果。
当某个关联数据的键被预判为热点键后,对该关联数据进行初始分组,初始分组的过程是将同一个key的多个数据进行打散并划分为多个组并对应分发至第一处理集群的资源槽中进行计算。初始分组的组数使得各组的数据处理量符合预设范围,可以参照对应执行数据处理的第一处理集群的资源槽的最大并行度来进行设置。
在操作S240,基于上述关联数据的键,对上述关联数据进行重新分组,并根据上述中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果。
通过对关联数据重新分组,由于是基于关联数据的键进行重新分组,这样相当于将之前进行打散后初始分组的各个明细数据又归为同一个大组里面,例如,接续上述实施例,对应key为‘abc’的数据,会在一个分区进行计算,此时1000条明细数据对应的计算过程实际上相当于对以下5个数据:计算结果R1、R2、R3、R4和R5进行聚合计算,从而生成最终的聚合结果。
例如,上述目标处理结果为不同用户标识下的委托书的运单数据对应的运输总体积。
基于上述操作S210~S250,通过在计算任务向处理集群进行分发之前对关联数据对应的键是否为热点键进行预判,针对预判为热点键的关联数据,先进行初始分组,使得各组的数据处理量符合预设范围,经过初始分组的关联数据分别分发至第一处理集群的资源槽中进行计算,得到中间处理结果;该初始分组确保数据处理量集中的关联数据被打散分发至第一处理集群中各个资源槽,能够实现资源槽中资源的有效利用;另外基于上述关联数据的键,对上述关联数据进行重新分组,并根据上述中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果,如此一来,能够有效提升数据处理效率以及提升集群的资源利用率,克服了将数据处理量集中的数据分发至一个处理节点进行处理导致的处理效率低以及集群资源利用率低的问题。
上述步骤S210~S240可以由服务器或具有计算能力的终端设备来执行,例如可以采用Flink计算引擎来实现上述方法。
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时计算系统可以执行批处理和流处理程序。
可以理解的是,上述方法也可以拓展应用至其他分布式计算的架构中来解决数据倾斜问题。
图3示意性地示出了根据本公开另一实施例的针对数据倾斜的数据处理的方法的流程图。
根据本公开的实施例,参照图4所示,针对数据倾斜的数据处理的方法除了包括上述操作S210~S240之外,还包括以下操作:S310。该操作S310是与操作S230和S240并列的另一个分支。
通过在操作S220预判关联数据对应的键是否为热点键,根据结果为“是”或“否”,将对应的关联数据进行分流处理,针对预判结果为“是”这一分支,执行操作S230和操作S240对应的热点key处理逻辑;针对预判结果为“否”这一分支,执行操作S310对应的非热点key处理逻辑。
在操作S310,在预判上述关联数据对应的键不是热点键的情况下,将上述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果。上述第二处理集群与上述第一处理集群为不同的集群。
根据本公开的实施例,将上述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果,包括:对上述关联数据的键进行哈希计算;根据上述关联数据的键进行哈希计算后的结果,将上述关联数据分发至第二处理集群对应的资源槽进行计算,得到的计算结果作为上述目标处理结果。
例如,可以按照委托书编号进行哈希(hash)计算,根据哈希计算后的结果来分发至各自对应的资源槽中进行计算。所有委托书编号相同的数据,如key都为‘abc’的数据,会在同一个分区进行计算。该计算环节,可以利用第二处理集群中的最大并行度的资源。
根据本公开的实施例,参照图3所示,上述关联数据中的明细数据均被分发至中间状态缓存中,上述中间状态缓存中的数据能被上述第一处理集群和上述第二处理集群共同访问。
在以上整体执行逻辑的基础上,下面来对操作S220的各种实施例进行详细介绍。
图4示意性地示出了根据本公开一实施例的操作S220的详细实施过程图。
根据本公开的实施例,参照图4的一个分支所示,上述操作S220中,预判上述关联数据对应的键是否为热点键,包括以下操作:S410、S420a、S430a和S440a。
在操作S410,读取热点键缓存列表中的列表数据。
在操作S420a,在上述热点键缓存列表中不存在列表数据的情况下,提取上述关联数据中处理对象的特征信息。
例如,处理对象为委托书,明细数据为运单数据。通过获取当前日期前100天的委托书和运单数据,在一实施例中,提取每条委托书当中的业务类型、商家属性和车型作为委托书的特征信息;或者在另一实施例中,提取每条委托书当中的运输类型、运输方式、调度类型、业务类型、商家属性、承运商类型、承运商性质、车型、始发站点类型、目的地站点类型等作为特征信息。
在操作S430a,将上述特征信息输入至预先训练好的逻辑回归模型中进行处理,输出上述特征信息对应的关联数据的键是否为热点键的结果。
在操作S440a,将结果为热点键的关联数据的键信息作为列表数据存入至热点键缓存列表中。
上述操作S410、S420a、S430a和S440a可以由基于逻辑回归模型构建得到的热点key分析引擎来执行,在热点键缓存列表中不存在列表数据的情况下,直接基于预先训练好的逻辑回归模型来对关联数据的键是否为热点键进行预判。该热点key分析引擎通过对实时处理的关联数据的键是否为热点key进行实时预判,从而能够快速且动态地进行分流,调整热点key和非热点key对应的关联数据各自对应的处理集群和计算逻辑,充分利用集群的计算资源并提升数据处理效率。
根据本公开的实施例,上述操作S430a中,逻辑回归模型用于确定上述特征信息对应的预测明细数据,并根据上述预测明细数据确定上述关联处理对象对应的预测明细数据是否导致数据倾斜状态;上述数据倾斜状态为上述预测明细数据一次性计算需要消耗的计算资源超出设定阈值的状态;在上述逻辑回归模型确定上述预测明细数据导致数据倾斜状态的情况下,输出上述关联数据对应的键为热点键的结果;在上述逻辑回归模型确定上述预测明细数据不导致数据倾斜状态的情况下,输出上述关联数据对应的键为非热点键的结果。
例如,逻辑回归模型可以表示为以下表达式:
其中,hθ(x)表示逻辑回归模型;x为逻辑回归模型的输入,表示关联数据中处理对象的特征信息;θT表示参数矩阵θ的转置;θTx表示上述特征信息对应的预测明细数据;g()为映射函数,用于将连续值映射到0到1之间。该映射函数可以对应于以上过程:根据上述预测明细数据确定上述关联处理对象对应的预测明细数据是否导致数据倾斜状态。
根据本公开的实施例,参照图4的另一个分支所示,上述操作S220中,预判上述关联数据对应的键是否为热点键,还包括以下操作:S420b、S431b和S432b。
在操作S420b,在上述热点键缓存列表中存在列表数据的情况下,将上述热点键缓存列表中的列表数据与当前关联数据的键进行匹配。
在操作S431b,在匹配一致的情况下,预判上述当前关联数据对应的键为热点键。
在操作S432b,在匹配不一致的情况下,预判上述当前关联数据对应的键为非热点键。
上述操作S420b、S431b和S432b可以由基于逻辑回归模型构建得到的热点key分析引擎来执行,在热点键缓存列表中存在列表数据的情况下,热点key分析引擎的处理逻辑是先从热点键缓存列表的列表数据(存在的话就说明列表数据是处于有效期内的)中匹配,如果匹配一致,则说明当前关联数据对应的键为热点键,这样一来便可以将关联数据划分至热点key对应的处理集群(第一处理集群)中执行对应的处理逻辑(例如为操作S230和S240)。
图5示意性地示出了根据本公开又一实施例的针对数据倾斜的数据处理的方法的流程图;图6示意性地示出了根据本公开又一实施例的针对数据倾斜的数据处理的方法的详细实施过程图。
根据本公开的实施例,参照图5和图6所示,针对数据倾斜的数据处理的方法除了包括上述操作S210~S240之外,还包括以下操作:S511和S512。本实施例的操作S511和S512可以理解为前述包含操作S310的实施例的一个分支实施例。
在上述热点键缓存列表中存在列表数据且预判上述关联数据对应的键不是热点键的情况下,执行以下操作S511和S512。操作S511和S512可以各自独立执行,不限定二者的先后执行顺序。
在操作S511:将上述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果。
在操作S512,提取上述关联数据中处理对象的特征信息,将上述特征信息输入至预先训练好的逻辑回归模型中进行处理,得到热点分析结果。
上述操作S420b、S431b和S432b可以由基于逻辑回归模型构建得到的热点key分析引擎来执行,在热点键缓存列表中存在列表数据的情况下,热点key分析引擎的处理逻辑是先从热点键缓存列表的列表数据(存在的话就说明列表数据是处于有效期内的)中匹配,如果匹配一致,则说明当前关联数据对应的键为热点键,这样一来便可以将关联数据划分至热点key对应的处理集群(第一处理集群)中执行对应的处理逻辑(例如为操作S230和S240)。
该实施例中,上述操作S410、S420b、S431b、S432b、S511和S512可以由基于逻辑回归模型构建得到的热点key分析引擎来执行,在热点键缓存列表中存在列表数据的情况下,热点key分析引擎的处理逻辑是先从热点键缓存列表的列表数据(存在的话就说明列表数据是处于有效期内的)中匹配,如果匹配一致,则说明当前关联数据对应的键为热点键,这样一来便可以将关联数据划分至热点key对应的处理集群(第一处理集群)中执行对应的处理逻辑(例如为操作S230和S240);如果匹配不一致,则说明当前关联数据对应的键为非热点键。由于在预判过程中很可能存在热点键缓存列表中存在的列表数据并不全面,因此有些不在热点键缓存列表中的键对应关联数据可能是对应于热点key的情况,基于这种情形,通过在后续的处理逻辑中执行操作S511和S512,一方面,确保关联数据经过热点key分析引擎分析后能够对应分发至非热点key对应的第二处理集群来得到及时处理;同时如果在第二处理集群对关联数据进行处理的期间,在操作S512中得到的热点分析结果为热点key,那么这种情况下能够及时中止第二处理集群对实际为热点key对应的关联数据的处理,并重新将该关联数据转发至第一处理集群进行后续处理,避免了采用非热点key对应的处理逻辑处理实际为热点key对应的数据导致的资源分配不均、资源利用率低以及计算效率低等问题。
图7示意性地示出了根据本公开再一实施例的针对数据倾斜的数据处理的方法的流程图。
根据本公开的实施例,在包含操作S410、S420b、S431b、S432b、S511和S512的实施例中,针对数据倾斜的数据处理的方法还包括以下操作:S710、S720、S730和S740,为了简化示意,在图7中仅示意了操作S710~S740。
在上述第二处理集群对上述关联数据进行计算期间,接收到上述热点分析结果表征上述关联数据对应的键为热点键的情况下,执行上述操作S710~S740。
在操作S710,将上述第二处理集群针对上述关联数据的已计算部分的历史计算结果保存至中间状态缓存中。上述中间状态缓存中的数据能被上述第一处理集群和上述第二处理集群共同访问。
在操作S720,将上述关联数据的未计算部分进行初始分组,使得各组的数据处理量符合预设范围,并将划分后的各组未计算部分分发至上述第一处理集群的资源槽中进行计算,得到接续中间处理结果。
在操作S730,上述第一处理集群基于上述关联数据的键,对上述未计算部分进行重新分组,并根据上述接续中间处理结果来对经重新分组后的未计算部分进行计算,得到接续处理结果。
在操作S740,上述第一处理集群根据上述接续处理结果与从上述中间状态缓存读取的上述历史计算结果来进行计算,得到目标处理结果。
例如在以下场景中,如果某个key对应的委托书数据X不在热点key缓存列表,进行计算过程中,开始被划分至非热点算子(例如为第二处理集群的资源槽)进行计算,计算过程中(尚未结束,计算了一部分数据),输入至热点分析引擎经判断是热点key,那么非热点算子会保存该key的历史计算结果,并将委托书数据X分配到热点算子(例如为第一处理集群的资源槽)进行处理,在热点算子进行数据处理时,延续之前的计算,计算剩余没有计算过的明细数据;由于中间状态缓存(也可以描述为公共中间状态缓存)中的数据能被上述第一处理集群和上述第二处理集群共同访问,因此,不论某个关联数据是否被预判为热点key来分流至不同的处理算子计算,都可以知道之前已经计算过的聚合结果,后续可以直接在这个结果的基础上进行累加。简言之,通过公共中间状态缓存保存计算中间结果,实现计算计算资源切换前后的任务中过程数据的一致性。
图8示意性地示出了根据本公开又另一实施例的针对数据倾斜的数据处理的方法的流程图。
根据本公开的实施例,在包含热点键缓存列表的实施例中,上述方法还包括以下操作:S810、S820、S830和S840,为了简化示意,在图8中仅示意出操作S810~S840。
在操作S810,针对上述热点键缓存列表中的上述列表数据,获取与上述列表数据对应的处理对象的生命周期信息。上述列表数据为上述处理对象的标识信息。
例如委托书的有效期作为处理对象的生命周期信息。
在操作S820,根据上述生命周期信息,生成上述列表数据的有效状态标签的有效期。
在操作S830,根据上述有效期,监测上述列表数据的有效状态标签是否失效。
在操作S840,在监测到特定列表数据的有效状态标签失效的情况下,将上述特定列表数据从上述热点键缓存列表中删除。
基于上述操作S810~S840,通过在热点key缓存列表中对列表数据配置有效状态标签,实现对热点key信息的有效性管理,从而能够实现热点key的动态更新与过期,确保热点key缓存列表中已有的列表数据是有效的,无效的数据已经被删除。该实施方式中,当热点key分析引擎预判某个关联数据的键属于热点key,则将对应的key信息存入热点key缓存,之后当该数据处理端再接收到该key的数据,就会按照热key的方式来处理,从而不会流入到热点key分析引擎中;直到该key在热点key缓存中过期失效后重新判定。当热点点key缓存列表中的某个key被删除之后,之后该数据处理端再收到该key的数据后,会将其分流到非热点key处理算子,除非热点key分析引擎再次将其判定为热点key,才会由热点key处理算子进行处理。
在以上各个实施例的基础上,下面对操作S230的实施例进行详细介绍。
图9示意性地示出了根据本公开一实施例的操作S230的详细实施过程图。
根据本公开的实施例,参照图9所示,上述操作S230中,将上述关联数据进行初始分组,使得各组的数据处理量符合预设范围,包括以下操作:S910、S920、S930a。
在操作S910,获取上述关联数据的描述字段信息。上述描述字段信息为上述关联数据中与上述键无关的额外描述信息或者与上述键有关且为上述键下属的细粒度更高的描述信息。
例如关联数据为key-value对列表形式;描述字段信息为列表序号。例如,key(键)为‘abc’,将各个关联数据在键-值对列表中的序号作为描述字段信息。
在操作S920,根据上述关联数据的总个数和上述第一处理集群中资源槽的最大并行度进行平均分配计算,得到关联数据在平均分配状态下各组的数据量范围。
例如,以委托书作为处理对象的示例,相同key下的关联数据的总个数等于同一个委托书下的所有待处理运单数据的总个数。将第一处理集群中资源槽的最大并行度表示为K,K≥2且为整数。
在操作S930a,当上述各组的数据量范围符合上述预设范围时,根据上述描述字段信息,将上述关联数据划分为多组数据,且各组的分组号的最大值不超过上述最大并行度。
例如,预设范围可以是第一处理集群中的资源槽的平均数据处理范围。
根据本公开的实施例,参照图9所示的另一个分支,将上述关联数据进行初始分组,还包括以下操作S930b。
在操作S930b,当上述各组的数据量范围不符合上述预设范围时,将上述关联数据划分为多个批次,使得每个批次的关联数据的总量在上述资源槽的数据处理量承接范围之内。
根据本公开的实施例,参照图9所示,上述操作S230中,将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果,包括以下操作:S940、S950和S960。
在操作S940,将一个或多个批次的各组关联数据的分组号和对应的键进行拼接,得到拼接有分组号的分组标识键。
例如分组号的计算公式为x=当前关联数据在键-值对列表中的序号%5+1,那么第一条关联数据的分组标识键为‘abc_1’,第二条关联数据的分组标识键变为‘abc_2’,以此类推,直到最大并行度5。
在操作S950,对上述分组标识键进行哈希计算。
在操作S960,根据上述分组标识键进行哈希计算后的结果,将上述一个或多个批次的各组关联数据分发至第一处理集群对应的资源槽进行计算,得到各组关联数据的计算结果,上述计算结果作为上述中间处理结果。
例如初始分组和进行初始聚合计算的过程可以基于轮询对key加盐的方式来得到各个分组。
按照轮询的方式对key加盐进行初始分组的过程举例如下:设定同一个委托书编号下对应有1000条明细数据,第一处理集群的资源槽的最大并行度为5。关联数据同样也是1000条,这1000条的key(键)均为‘abc’,通过轮询的方式对各条依次处于列表中的关联数据进行加盐,例如将各个关联数据在键-值对列表中的序号作为加盐的条件,盐的计算公式为x=当前关联数据在键-值对列表中的序号%5+1,那么第一条关联数据的key变为‘abc_1’,第二条关联数据的key变为‘abc_2’,以此类推,直到最大并行度5,从而将部分数据聚集在一组,后续基于第一处理集群的资源槽来分别对位于同一组内的数据进行预聚合计算,得到中间处理结果:‘abc_1’分组对应的各个明细数据的计算结果R1、‘abc_2’分组对应的各个明细数据的计算结果R2、‘abc_3’分组对应的各个明细数据的计算结果R3、‘abc_4’分组对应的各个明细数据的计算结果R4、‘abc_5’分组对应的各个明细数据的计算结果R5。
本公开的第二个示例性实施例提供了一种针对数据倾斜的数据处理的装置。
图10示意性地示出了根据本公开实施例的针对数据倾斜的数据处理的装置的结构框图。
参照图10所示,本公开实施例提供的数据处理的装置1000包括:数据获取模块1001、热点预判模块1002、初始分组模块1003、热点任务下发模块1004、重新分组模块1005和计算模块1006。
上述数据获取模块1001用于获取待处理的键-值对形式的关联数据,上述关联数据的键为处理对象的标识,上述关联数据的值为上述处理对象的明细数据。
上述热点预判模块1002用于预判上述关联数据对应的键是否为热点键,上述热点键用于表征上述关联数据的明细数据一次性计算需要消耗的计算资源超出设定阈值的状态。
上述初始分组模块1003用于在预判上述关联数据对应的键为热点键的情况下,将上述关联数据进行初始分组,使得各组的数据处理量符合预设范围。
上述热点任务下发模块1004用于将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果。
上述重新分组模块1005用于基于上述关联数据的键,对上述关联数据进行重新分组。
上述计算模块1006用于根据上述中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果。
上述装置1000中的各个模块的具体功能实现的执行逻辑可以参照前述第一个实施例的相关描述。
上述热点任务下发模块1004还用于在预判上述关联数据对应的键不是热点键的情况下,将上述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果。上述第二处理集群与上述第一处理集群为不同的集群。
根据本公开的实施例,上述装置1000还包括用于执行第一个实施例中操作S511、S512、S710~S740、S810~S840的功能模块或子模块。
上述装置1000中的各个模块中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。上述装置1000中的各个模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,上述装置1000中的各个模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
本公开的第三个示例性实施例提供了一种电子设备。
图11示意性示出了本公开实施例提供的电子设备的结构框图。
参照图11所示,本公开实施例提供的电子设备1100包括处理器1101、通信接口1102、存储器1103和通信总线1104,其中,处理器1101、通信接口1102和存储器1103通过通信总线1104完成相互间的通信;存储器1103,用于存放计算机程序;处理器1201,用于执行存储器上所存放的程序时,实现如上所述的针对数据倾斜的数据处理的方法。
本公开的第四个示例性实施例还提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的针对数据倾斜的数据处理的方法。
该计算机可读存储介质可以是上述实施例中描述的设备/装置中所包含的;也可以是单独存在,而未装配入该设备/装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (17)
1.一种针对数据倾斜的数据处理的方法,其特征在于,包括:
获取待处理的键-值对形式的关联数据,所述关联数据的键为处理对象的标识,所述关联数据的值为所述处理对象的明细数据;
预判所述关联数据对应的键是否为热点键,所述热点键用于表征所述关联数据的明细数据一次性计算需要消耗的计算资源超出设定阈值的状态;
在预判所述关联数据对应的键为热点键的情况下,将所述关联数据进行初始分组,使得各组的数据处理量符合预设范围,并将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果;
基于所述关联数据的键,对所述关联数据进行重新分组,并根据所述中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果。
2.根据权利要求1所述的方法,其特征在于,将所述关联数据进行初始分组,使得各组的数据处理量符合预设范围,包括:
获取所述关联数据的描述字段信息,所述描述字段信息为所述关联数据中与所述键无关的额外描述信息或者与所述键有关且为所述键下属的细粒度更高的描述信息;
根据所述关联数据的总个数和所述第一处理集群中资源槽的最大并行度进行平均分配计算,得到关联数据在平均分配状态下各组的数据量范围;
当所述各组的数据量范围符合所述预设范围时,根据所述描述字段信息,将所述关联数据划分为多组数据,且各组的分组号的最大值不超过所述最大并行度。
3.根据权利要求2所述的方法,其特征在于,还包括:
当所述各组的数据量范围不符合所述预设范围时,将所述关联数据划分为多个批次,使得每个批次的关联数据的总量在所述资源槽的数据处理量承接范围之内。
4.根据权利要求3所述的方法,其特征在于,所述将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果,包括:
将一个或多个批次的各组关联数据的分组号和对应的键进行拼接,得到拼接有分组号的分组标识键;
对所述分组标识键进行哈希计算;
根据所述分组标识键进行哈希计算后的结果,将所述一个或多个批次的各组关联数据分发至第一处理集群对应的资源槽进行计算,得到各组关联数据的计算结果,所述计算结果作为所述中间处理结果。
5.根据权利要求1所述的方法,其特征在于,还包括:
在预判所述关联数据对应的键不是热点键的情况下,将所述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果,所述第二处理集群与所述第一处理集群为不同的集群。
6.根据权利要求5所述的方法,其特征在于,将所述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果,包括:
对所述关联数据的键进行哈希计算;
根据所述关联数据的键进行哈希计算后的结果,将所述关联数据分发至第二处理集群对应的资源槽进行计算,得到的计算结果作为所述目标处理结果。
7.根据权利要求5所述的方法,其特征在于,所述关联数据中的明细数据均被分发至中间状态缓存中,所述中间状态缓存中的数据能被所述第一处理集群和所述第二处理集群共同访问。
8.根据权利要求1所述的方法,其特征在于,所述预判所述关联数据对应的键是否为热点键,包括:
读取热点键缓存列表中的列表数据;
在所述热点键缓存列表中不存在列表数据的情况下,提取所述关联数据中处理对象的特征信息;
将所述特征信息输入至预先训练好的逻辑回归模型中进行处理,输出所述特征信息对应的关联数据的键是否为热点键的结果,并将结果为热点键的关联数据的键信息作为列表数据存入至热点键缓存列表中。
9.根据权利要求8所述的方法,其特征在于,所述逻辑回归模型用于确定所述特征信息对应的预测明细数据,并根据所述预测明细数据确定所述关联处理对象对应的预测明细数据是否导致数据倾斜状态;所述数据倾斜状态为所述预测明细数据一次性计算需要消耗的计算资源超出设定阈值的状态;
在所述逻辑回归模型确定所述预测明细数据导致数据倾斜状态的情况下,输出所述关联数据对应的键为热点键的结果;
在所述逻辑回归模型确定所述预测明细数据不导致数据倾斜状态的情况下,输出所述关联数据对应的键为非热点键的结果。
10.根据权利要求8所述的方法,其特征在于,所述预判所述关联数据对应的键是否为热点键,还包括:
在所述热点键缓存列表中存在列表数据的情况下,将所述热点键缓存列表中的列表数据与当前关联数据的键进行匹配;
在匹配一致的情况下,预判所述当前关联数据对应的键为热点键;
在匹配不一致的情况下,预判所述当前关联数据对应的键为非热点键。
11.根据权利要求10所述的方法,其特征在于,还包括:
在所述热点键缓存列表中存在列表数据且预判所述关联数据对应的键不是热点键的情况下,执行以下操作:
将所述关联数据分发至第二处理集群的资源槽中进行计算,得到目标处理结果;
提取所述关联数据中处理对象的特征信息,将所述特征信息输入至预先训练好的逻辑回归模型中进行处理,得到热点分析结果。
12.根据权利要求11所述的方法,其特征在于,还包括:
在所述第二处理集群对所述关联数据进行计算期间,接收到所述热点分析结果表征所述关联数据对应的键为热点键的情况下,执行以下操作:
将所述第二处理集群针对所述关联数据的已计算部分的历史计算结果保存至中间状态缓存中;所述中间状态缓存中的数据能被所述第一处理集群和所述第二处理集群共同访问;
将所述关联数据的未计算部分进行初始分组,使得各组的数据处理量符合预设范围,并将划分后的各组未计算部分分发至所述第一处理集群的资源槽中进行计算,得到接续中间处理结果;
所述第一处理集群基于所述关联数据的键,对所述未计算部分进行重新分组,并根据所述接续中间处理结果来对经重新分组后的未计算部分进行计算,得到接续处理结果;
所述第一处理集群根据所述接续处理结果与从所述中间状态缓存读取的所述历史计算结果来进行计算,得到目标处理结果。
13.根据权利要求8所述的方法,其特征在于,还包括:
针对所述热点键缓存列表中的所述列表数据,获取与所述列表数据对应的处理对象的生命周期信息;所述列表数据为所述处理对象的标识信息;
根据所述生命周期信息,生成所述列表数据的有效状态标签的有效期;
根据所述有效期,监测所述列表数据的有效状态标签是否失效;
在监测到特定列表数据的有效状态标签失效的情况下,将所述特定列表数据从所述热点键缓存列表中删除。
14.根据权利要求1所述的方法,其特征在于,所述处理对象为物流场景下的委托书,所述明细数据为运单数据;所述目标处理结果为不同用户标识下的委托书的运单数据对应的运输总体积。
15.一种针对数据倾斜的数据处理的装置,其特征在于,包括:
数据获取模块,用于获取待处理的键-值对形式的关联数据,所述关联数据的键为处理对象的标识,所述关联数据的值为所述处理对象的明细数据;
热点预判模块,用于预判所述关联数据对应的键是否为热点键,所述热点键用于表征所述关联数据的明细数据一次性计算需要消耗的计算资源超出设定阈值的状态;
初始分组模块,用于在预判所述关联数据对应的键为热点键的情况下,将所述关联数据进行初始分组,使得各组的数据处理量符合预设范围;
热点任务下发模块,用于将划分后的各组关联数据分发至第一处理集群的资源槽中进行计算,得到中间处理结果;
重新分组模块,用于基于所述关联数据的键,对所述关联数据进行重新分组;
计算模块,用于根据所述中间处理结果来对经重新分组后的关联数据进行计算,得到目标处理结果。
16.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-14中任一项所述的方法。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-14中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211203462.4A CN115562861A (zh) | 2022-09-29 | 2022-09-29 | 针对数据倾斜的数据处理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211203462.4A CN115562861A (zh) | 2022-09-29 | 2022-09-29 | 针对数据倾斜的数据处理的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115562861A true CN115562861A (zh) | 2023-01-03 |
Family
ID=84743725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211203462.4A Pending CN115562861A (zh) | 2022-09-29 | 2022-09-29 | 针对数据倾斜的数据处理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115562861A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117009094A (zh) * | 2023-10-07 | 2023-11-07 | 联通在线信息科技有限公司 | 数据倾斜打散方法、装置、电子设备及存储介质 |
-
2022
- 2022-09-29 CN CN202211203462.4A patent/CN115562861A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117009094A (zh) * | 2023-10-07 | 2023-11-07 | 联通在线信息科技有限公司 | 数据倾斜打散方法、装置、电子设备及存储介质 |
CN117009094B (zh) * | 2023-10-07 | 2024-02-23 | 联通在线信息科技有限公司 | 数据倾斜打散方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shukri et al. | Enhanced multi-verse optimizer for task scheduling in cloud computing environments | |
CN108536650B (zh) | 生成梯度提升树模型的方法和装置 | |
Ghorbannia Delavar et al. | HSGA: a hybrid heuristic algorithm for workflow scheduling in cloud systems | |
US10616139B1 (en) | Reducing quota access | |
CN109218355A (zh) | 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法 | |
Xie et al. | Virtualized network function forwarding graph placing in SDN and NFV-enabled IoT networks: A graph neural network assisted deep reinforcement learning method | |
Ma et al. | Towards revenue-driven multi-user online task offloading in edge computing | |
Jangiti et al. | Scalable and direct vector bin-packing heuristic based on residual resource ratios for virtual machine placement in cloud data centers | |
Smolka et al. | Evaluation of fog application placement algorithms: a survey | |
Khattar et al. | An energy efficient and adaptive threshold VM consolidation framework for cloud environment | |
CN115562861A (zh) | 针对数据倾斜的数据处理的方法和装置 | |
CN113495779A (zh) | 一种任务调度方法和装置、任务执行系统 | |
Femminella et al. | IoT, big data, and cloud computing value chain: pricing issues and solutions | |
Loheswaran | An upgraded fruit fly optimisation algorithm for solving task scheduling and resource management problem in cloud infrastructure | |
Jiang et al. | Model-based comparison of cloud-edge computing resource allocation policies | |
CN113300982B (zh) | 资源分配方法、设备、系统及存储介质 | |
Imdoukh et al. | Optimizing scheduling decisions of container management tool using many‐objective genetic algorithm | |
Portaluri et al. | Multi objective virtual machine allocation in cloud data centers | |
CN106845926B (zh) | 一种第三方支付监管系统分布式数据流处理方法及系统 | |
CN115421930A (zh) | 任务处理方法、系统、装置、设备及计算机可读存储介质 | |
Zohrati et al. | Flexible approach to schedule tasks in cloud‐computing environments | |
CN113656046A (zh) | 一种应用部署方法和装置 | |
Negru et al. | Cost-aware cloud storage service allocation for distributed data gathering | |
CN114911604A (zh) | 资源调度方法、装置和管理设备 | |
Li et al. | Cost-and time-based data deployment for improving scheduling efficiency in distributed clouds |
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 |