CN104794128B - 数据处理方法和装置 - Google Patents
数据处理方法和装置 Download PDFInfo
- Publication number
- CN104794128B CN104794128B CN201410026143.XA CN201410026143A CN104794128B CN 104794128 B CN104794128 B CN 104794128B CN 201410026143 A CN201410026143 A CN 201410026143A CN 104794128 B CN104794128 B CN 104794128B
- Authority
- CN
- China
- Prior art keywords
- dimension
- processing
- thread
- mark
- threads
- 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
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供数据处理方法和装置。该方法包括:针对多维度处理中的各维度处理,分别判断维度标识数量与预定线程数量之差的绝对值是否小于等于预定阈值;当判定维度标识数量与预定线程数量之差的绝对值小于等于预定阈值时,将各维度标识对应的处理都分别分配到预定数量的线程中的多个线程上执行,使得同一维度标识对应的处理在多个线程上并行完成。进一步地,当判定维度标识数量与预定线程数量之差的绝对值大于预定阈值时,将各维度标识对应的处理分别分配到预定数量的线程中的对应单一线程上执行,使得同一维度标识对应的处理在同一线程上完成。由此,能够使事件流数据的各并发处理尽可能同时完成,从而提高整个实时处理的效率,方便用户的使用。
Description
技术领域
本申请涉及互联网领域,更具体地涉及一种用于事件流数据的多维度处理中的数据处理方法和装置。
背景技术
随着互联网的迅猛发展,网上数据交互越来越普遍,当前已经成为人们生活中的主要数据交互方式。
在网上数据交互的过程中,出于对网上海量的交互数据进行高效实时处理的需要,一般会利用事件流技术处理海量的交互数据。所谓事件流是指,同一数据源在不同时刻发生的同类事件构成时间上严格有序的流。即,将同类数据形成多个事件,当多个事件按一定顺序触发,就形成了事件流。针对事件流数据,可以执行在多个维度上的统计处理。
例如,针对网上业务交互过程中实时产生的物流订单事件的事件流数据,可以根据需要从诸如快递维度、卖家维度、买家维度等多个维度来对其进行统计处理。具体地,在每个维度上可以针对多个维度标识来分别进行统计。例如,可以统计不同快递在当日内配送的物流订单量以及不同物流订单状态下的统计量等快递维度上的信息,即不同快递ID(快递标识)下的这些信息。也可以统计不同卖家在当日内产生的物流订单量等卖家维度上的信息,即不同卖家ID(卖家标识)下的这些信息。也可以统计不同买家在当日内产生的物流订单量等买家维度上的信息,即不同买家ID(买家标识)下的这些信息。
针对实时产生的一个物流订单事件对应的事件流数据,通常需要同时执行上述多个维度上的处理。该多个维度上的处理因而通常被称为并发处理。当针对该事件流数据的所有并发处理都完成时,才认为对该事件流数据的处理完成,进而才可以继续针对下一事件流数据即下一物流订单事件执行类似处理。
然而,在一些并发处理中涉及的维度标识数量可能相差悬殊,例如快递通常只有十几个,而卖家和买家通常是上百万,因而在快递维度处理上的快递标识数量的数量级在十几个,而卖家或买家维度处理上的卖家或买家标识数量的数量级在百万级。根据现有工作机制,假设分配给每个并发处理的线程数量为128,则每个订单事件会分别按照卖家标识%(取模运算)128和快递标识%128的方式被统计处理,也就是,遵循的原则是将同一维度标识的处理分配到同一线程上处理。因此,由于卖家和买家标识数量在百万级,卖家和买家维度的统计处理会均匀分配到128个线程上处理,而快递标识数量只有十几个,所以快递维度的统计处理虽然被分配了128个线程,但实际使用中只用了十几个线程处理。因此,快递维度上的处理存在大量的空置线程,资源浪费。
尽管可以根据各并发处理的需要来分配不同数量的线程,以使得各维度上的处理不会出现空闲线程,但作为同一事件流数据的并发处理,由于快递维度上的处理只能在十几个线程上处理,相对于卖家或买家维度上的处理而言处理时间很长,因此,并发处理的处理时间相差悬殊,线程数少的处理会拖累整个实时统计处理的效率,从而也给整个实时处理带来无形的瓶颈。
因此,需求一种改进的数据处理方案来克服现有技术中的上述问题。
发明内容
本申请的目的就在于,提供一种改进的数据处理技术,来解决上述并发处理实际使用的线程数量不同导致的整个实时处理效率不高的问题。
具体而言,根据本申请实施例的一个方面,提供一种数据处理方法,用于事件流数据的多维度处理,其特征在于,包括:针对所述多维度处理中的各维度处理,分别判断所述维度处理中的维度标识数量与预定线程数量之差的绝对值是否小于等于预定阈值;当判定所述维度处理中的维度标识数量与预定线程数量之差的绝对值小于等于预定阈值时,将所述维度处理中的各维度标识对应的处理都分别分配到所述预定数量的线程中的多个线程上执行,使得同一维度标识对应的处理在所述多个线程上并行完成。
根据本申请实施例的另一个方面,提供一种数据处理装置,用于事件流数据的多维度处理,其特征在于,包括:判断模块,用于针对所述多维度处理中的各维度处理,分别判断所述维度处理中的维度标识数量与预定线程数量之差的绝对值是否小于等于预定阈值;第一处理模块,用于当判定所述维度处理中的维度标识数量与预定线程数量之差的绝对值小于等于预定阈值时,将所述维度处理中的各维度标识对应的处理都分别分配到所述预定数量的线程中的多个线程上执行,使得同一维度标识对应的处理在所述多个线程上并行完成。
与现有技术相比,根据本申请的技术方案,针对并发处理中维度标识数量与预定线程数量接近的那些并发处理,通过根据维度标识进行切分,使得其中同一维度标识的处理分配到不同的线程上并行执行,并根据维度标识将不同线程上的执行结果合并得到该维度标识的处理结果。由此充分利用各并发处理线程,加快维度标识数量与预定线程数量接近的那些并发处理的处理速度,使得事件流数据的各并发处理能够尽可能同时完成,从而提高整个实时处理的效率,方便用户的使用。
进一步而言,根据本申请的技术方案,可以根据事件流数据中的各维度标识在特定时间段内的处理量,来针对不同维度标识的处理分配不同数量的线程,从而实现自适应切分处理,由此可以进一步提高各并发处理的处理速度,进而进一步提高整个实时处理的效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了根据本申请一个实施例的数据处理方法的流程图;
图2示出了根据本申请一个实施例的将各维度标识对应的处理分别分配到多个线程上的方法的流程图;
图3示出了根据本申请另一实施例的将各维度标识对应的处理分别分配到多个线程上的方法的流程图;
图4示出了根据本申请一个实施例的设置维度标识对应的线程标识集合的方法的流程图;以及
图5示出了根据本申请一个实施例的数据处理装置的结构框图。
具体实施方式
本申请的主要思想就在于,取代现有技术中同一维度标识的处理分配到同一线程执行的方案,针对同一事件流数据的多个并发处理中维度标识数与预定线程数相当的那些并发处理,通过使得同一维度标识的处理分配到多个不同线程上并行执行,从而加快这些并发处理的处理速度,避免线程空置,使得所有并发处理尽可能同时完成,进而提高事件流数据的整体实时处理效率,方便用户的使用。
在此基础上,本申请的思想还在于,根据事件流数据中各维度标识在特定时间段内涉及的处理量,实现自适应调整分配给每个维度标识对应处理的线程数量,从而进一步优化多个并发处理的处理速度,并且进一步提高事件流数据的整体实时处理效率和方便用户的使用。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参照图1,图1示出了根据本申请一个实施例的数据处理方法100的流程图。
如图1所示,在步骤S110处,针对事件流数据的多维度处理中的各维度处理,分别判断所述维度处理中的维度标识数量与预定线程数量之差的绝对值是否小于等于预定阈值。
具体而言,当需要针对事件流数据执行多维度统计处理(多个并发处理)时,可以从数据库的日志文件中实时或准实时地获取相应事件流。然后分别判断各个维度处理涉及的维度标识的数量与分配给该维度处理的预定线程数量是否相当。在本实施例中是通过判断维度标识数量与预定线程数量之差的绝对值是否小于等于预定阈值的方式来判断的。这里提及的预定线程数量是指服务器根据自身负载能力而预先分配给每个维度处理的线程数量。需要指出的是,分配给每个维度处理的线程数量都是相同的。本领域技术人员可以理解到,这里提及的预定阈值可以根据需要设定。在一种优选实施例中,可以设定预定阈值为预定线程数量的倍数。更优选地,可以将预定阈值设定为预定线程数量的两倍。
在一个具体示例中,例如,在针对实时产生的大量物流订单的流数据执行卖家维度和快递维度的多个维度上的统计处理时,在卖家维度上的处理涉及的卖家标识数量上百万,而在快递维度上的处理涉及的快递标识数量只有十几个。假设分配给每个维度处理的线程数量都为128,并且预定阈值优选为256,则可以判定卖家维度上的处理涉及的维度标识数量与预定线程数量之差的绝对值远大于预定阈值,而快递维度上的处理涉及的维度标识数量与预定线程数量之差的绝对值小于预定阈值。
接下来,如果在步骤S110处判定维度处理中维度标识数量与预定线程数量之差的绝对值小于等于预定阈值,则进入步骤S120。
在步骤S120处,将所述维度处理中的各维度标识对应的处理都分别分配到所述预定数量的线程中的多个线程上执行,使得同一维度标识对应的处理在所述多个线程上并行完成。
具体而言,将维度处理涉及的每个维度标识的处理都分别分配到多个线程上,而不是像现有技术中那样同一维度标识的处理都只分配到同一个线程上。由此可以加快该维度处理的处理速度,进而可以与其它并行的维度处理尽可能同时完成,从而缩短整个实时处理的时间,提高整个实时处理的效率。如在上述具体示例中那样,针对快递维度上的处理执行步骤S120的操作,也就是,将各个快递标识对应的处理都分别分配到多个线程上执行。例如,可以将实时产生的物流订单流中涉及例如A快递的流数据统计处理按照预定规则分配到所有预定线程上并行执行,同时将涉及例如B快递的流数据统计处理也按照预定规则分配到所有预定线程上并行执行。
在本申请的实施例中,可以将每个维度标识的处理都分别分配到前面提及的所有预定线程上执行。在其它实施例中,也可以将每个维度标识的处理都分别分配到前面提及的预定数量的线程中的一部分线程上执行。稍后结合图4会有更详细描述。
关于步骤S120的实现,根据本申请的实施例,可以通过对维度标识的划分来将维度标识对应的处理分配到多个线程上执行。当然应理解到的是,也可以通过本领域已知或未来开发的其它任意合适方式来实现步骤S120。稍后会结合图2和图3进行更详细描述。
相应地,如果在步骤S110处判定维度处理中维度标识数量与预定线程数量之差的绝对值大于预定阈值,则进入步骤S130。
在步骤S130处,将所述维度处理中的各维度标识对应的处理分别分配到所述预定数量的线程中的对应单一线程上执行,使得同一维度标识对应的处理在同一线程上完成。
具体而言,该步骤S130的操作与现有技术中的操作类似,即,遵循使得同一维度标识对应的处理在同一线程上执行的原则。如在上述示例中那样,针对卖家维度上的处理,可以执行步骤S130的操作。例如,可以将事件流数据中各个卖家标识对应的处理按照哈希算法均匀分配到128个线程上执行,其中同一卖家标识对应的处理会被分配到同一线程上执行。相应地,卖家标识上百万个,所以同一线程上会承担多个卖家标识对应的处理。
通过图1的步骤S110-S130执行针对事件流数据的多维度实时统计处理,可以提高其中维度标识数量与预定线程数量相当的维度处理中的处理速度,使得各并发维度处理尽可能同时完成,从而整个实时处理效率得以提高。
图2示出了根据本申请实施例的将各维度标识对应的处理分别分配到多个线程上的方法200的流程图。
如图2所示,在步骤S210处,根据对所述维度处理中的每个维度标识的划分,将所述维度处理中的所述维度标识对应的处理分配到所述预定数量的线程中的多个线程上并行执行。
具体而言,通过将每个维度标识进行细分或切分,从而将涉及每个维度标识的处理划分成多份,进而分配给多个线程进行并行处理。
然后,在步骤S220处,合并同一维度标识对应的处理在所述多个线程上的执行结果,以完成所述维度处理中的各维度标识对应的处理。
具体而言,在通过步骤S210中的切分处理之后,将分配到多个线程上的涉及同一维度标识的多份处理的处理结果合并,从而可以得到该维度标识对应的处理结果。以相同方式,可以得到该维度处理中涉及的各个维度标识对应的处理结果,从而得到该维度处理的处理结果。
至此描述了本申请的一个实施例中将各维度标识对应的处理分别分配到多个线程上的方法步骤。
图3示出了根据本申请另一实施例中将各维度标识对应的处理分别分配到多个线程上的方法300的流程图。其中更详细地描述了如何根据对维度标识的划分来将各维度标识对应的处理分别分配到多个线程上。
如图3所示,在步骤S310处,针对当前事件流数据,确定维度标识对应的线程标识集合,所述线程标识集合包括维度标识对应的处理可用的线程对应的线程标识。
具体而言,根据当前事件流数据,可以确定当前处理所涉及的维度标识。在具体示例中,日志文件中物流订单事件的数据结构可以如下表1所示。
表1
因此,针对卖家维度的统计处理,可以从该数据结构中确定所涉及的维度标识即卖家标识。
然后根据确定的维度标识,可以从预先配置的包括维度标识与线程标识集合的对应关系的配置文件中确定与该维度标识对应的线程标识集合,该线程标识集合包括维度标识对应的处理可用的线程对应的线程标识。
根据本申请的实施例,在配置文件中可以初始化设置维度标识对应的线程标识集合,使得各维度标识对应的线程标识集合中的线程标识都分别对应于所述预定数量的线程。
在一个具体实施例中,可以通过根据服务器赋予维度标识本身的序列号或序号以及预定线程数量来初始化设置该维度处理中各维度标识对应的线程标识集合,从而预先生成上述配置文件。根据本申请的一个更具体实施例,配置文件中可以包括如下表2所示的对应关系。其中,m为预定线程数量,n为维度标识的总数,维度标识i对应的线程标识集合可以包括区间[-((i-1)*m+1),-i*m]内的整数。其中m和n均为正整数,i对应于维度标识本身的序列号,i=1,……,n。
表2
序列号 | 维度标识 | 线程标识集合 |
1 | 快递标识1 | [-1,-m]中的整数 |
2 | 快递标识2 | [-(m+1),-2m]中的整数 |
…… | …… | …… |
n | 快递标识n | [-((n-1)*m+1),-n*m]中的整数 |
这里需要指出的是,假设Thi_j表示分配给第i维度处理的第j个线程,其中,j=1,……,m。则各维度标识对应的线程标识集合中的线程标识均对应于该m个线程。例如,快递标识1对应的线程标识集合为{-1,-2,……,-m},则线程标识-1对应于m个线程中的第1个线程,线程标识-2对应于m个线程中的第2个线程,以此类推,线程标识-m对应于m个线程中的第m个线程。快递标识2对应的线程标识集合为{-(m+1),-(m+2),……,-2m},则线程标识-(m+1)对应于上述m个线程中的第1个线程,线程标识-(m+2)对应于上述m个线程中的第2个线程,以此类推,线程标识-2m对应于上述m个线程中的第m个线程。
接着,在步骤S320处,从所述线程标识集合中随机选择一个线程标识,以将该线程标识对应的线程用于所述当前事件流数据的处理。
也就是,将当前事件流数据涉及的当前维度标识对应的处理随机分配到预定线程中的一个线程上。当下一事件流数据涉及相同的维度标识时,则将下一事件流数据涉及的维度标识对应的处理也随机分配到预定线程中的一个线程上。这就相当于将同一维度标识对应的处理均匀分配到了预定线程中的多个线程上执行,并且,在其中每个线程上会产生与同一维度标识相应的线程标识对应的多个执行结果。
然后,在步骤S330处,根据维度标识对应的线程标识集合中的线程标识,合并维度标识对应的处理在各线程上的执行结果,以得到与该维度标识对应的处理结果。
如上所述,在其中每个线程上会产生与同一维度标识相应的线程标识对应的多个执行结果,所以通过将各线程上与同一维度标识相应的线程标识对应的执行结果合并,就可以得到该维度标识对应的处理结果。例如,沿用上述示例,快递标识1对应的线程标识集合为{-1,-2,……,-m},则可以通过将各线程上与线程标识-1,……,-m对应的执行结果合并,得到与快递标识1对应的处理结果。通过将各线程上与线程标识-(m+1),-(m+2),……,-2m对应的执行结果合并,可以得到与快递标识2对应的处理结果。以此类推,通过将各线程上与线程标识-((n-1)*m+1),-((n-1)*m+2),……,-n*m对应的执行结果合并,可以得到与快递标识n对应的处理结果。由此可以得到快递维度上的处理结果。
至此结合图2和图3描述了根据本申请实施例的将各维度标识对应的处理分别分配到多个线程上的处理过程。下面结合图4更详细地描述根据本申请一个优选实施例的线程标识集合的具体设置过程。
根据本申请发明人的构思,优选地,在实时处理过程中可以根据需要自适应调整分配给维度处理中的各维度标识对应处理的线程数量,由此进一步优化该维度处理速度,从而进一步提高整个实时处理效率。在实际操作中,可以通过自适应调整维度标识对应的线程标识集合的方式来实现。
图4示出了根据本申请一个实施例的设置维度标识对应的线程标识集合的方法400的流程图。如图4所示,在步骤S410处,初始化设置维度标识对应的线程标识集合,使得各维度标识对应的线程标识集合中的线程标识都分别对应于所述预定数量的线程。
该步骤类似于前面结合步骤S310的描述中提及的配置文件的预先配置过程,这里不再赘述。在实际操作中,可以在配置文件中预先配置这样的线程标识集合,也可以在实时处理过程中初始化设置维度标识对应的线程标识集合,即,实时生成该配置文件。
如前面所述,可以初始化设置维度标识对应的线程标识集合,如表2所示。
在步骤S420处,根据所述事件流数据中的各维度标识在特定时间段内的处理量,更新各维度标识对应的线程标识集合,使得各维度标识对应的线程标识集合中的线程标识对应于所述预定数量的线程中的一部分线程。
具体而言,在实时统计处理的初始时段内,可以根据上述初始化设置的线程标识集合对事件流数据执行特定维度上的处理,其中,该初始化设置的线程标识集合中的线程标识都分别对应于所有预定线程。然而,在实际情况下,特定维度处理中涉及的各维度标识的处理量大多数是不同的。因此,为了更加优化各维度处理,可以根据各维度标识的处理量来自适应调整分配给各维度标识的线程数量。
根据本申请的一个实施例,可以在针对事件流数据执行多个维度上的并发处理的同时,统计各个维度标识涉及的处理量。更具体而言,可以从特定时间段内的事件流数据中统计所述维度处理中的各维度标识出现的事件数,然后根据特定维度标识出现的事件数以及各维度标识出现的事件数,可以计算出所述特定维度标识在特定时间段内的处理量。
之后,根据各维度标识在特定时间段内的各自处理量,可以确定与各维度标识对应的各自线程标识集合。在一个具体实施例中,可以每隔特定时段,就根据这个时段内每个维度标识的处理量统计占比,来调整各维度标识对应的线程标识集合,从而调整分配给各维度标识处理的线程数量。
根据本申请的一个更具体实施例,针对每个维度处理,可以将其中第i个(序列号为i)维度标识i要分配的处理线程数设置为pi:
其中,i=1,……,n,并且满足n为该维度处理涉及的维度标识总数,m为分配给该维度处理的预定线程数量。
因此,可以将第i个维度标识i的线程标识集合确定为: 内的整数。配置文件中的上述表2的内容可以更新为下面的表3:
表3
从表3中可以看出,自适应更新后的线程标识集合是初始化设置的线程标识集合的子集。因此,在线程标识集合的自适应更新过程中,对于合并任一维度标识对应的各线程标识所对应的处理结果而言是没有任何影响的。
以上结合图1至图4描述了根据本申请实施例的用于事件流数据的多维度处理的数据处理方法。尽管在上述实施例中描述了通过从维度标识对应的线程标识集合中随机选择一个线程来对该维度标识对应的处理进行切分操作,但应理解到,还可以通过其它任意合适方式来对该维度标识对应的处理进行切分操作。例如,在其它实施例中,可以预先配置维度标识对应的替代标识集合,其中替代标识集合中包含与预定线程数量相同数量的不同替代标识。在实时处理过程中,通过将真实维度标识随机替换成预先配置的替代标识集合中的任一替代标识,然后根据替代标识可以将真实维度标识对应的处理均匀分配到这些预定线程上,最后再根据与维度标识对应的替代标识,合并分配到这些线程上的替代标识对应的处理结果,从而得到与该维度标识对应的处理结果。
根据本申请实施例的数据处理方法,能够充分利用各并发处理线程,加快维度标识数量与预定线程数量接近的那些并发处理的处理速度,使得事件流数据的各并发处理能够尽可能同时完成,从而提高整个实时处理的效率,方便用户的使用。
与上述数据处理方法类似,本申请实施例还提供相应的数据处理装置。
参照图5,图5示出了根据本申请一个实施例的数据处理装置500的结构框图。
如图5所示,装置500可以包括判断模块510、第一处理模块520和第二处理模块530。
具体而言,判断模块510可以用于针对所述多维度处理中的各维度处理,分别判断所述维度处理中的维度标识数量与预定线程数量之差的绝对值是否小于等于预定阈值。第一处理模块520可以用于当判定所述维度处理中的维度标识数量与预定线程数量之差的绝对值小于等于预定阈值时,将所述维度处理中的各维度标识对应的处理都分别分配到所述预定数量的线程中的多个线程上执行,使得同一维度标识对应的处理在所述多个线程上并行完成。第二处理模块530可以用于当判定所述维度处理中的维度标识数量与预定线程数量之差的绝对值大于所述预定阈值时,将所述维度处理中的各维度标识对应的处理分别分配到所述预定数量的线程中的对应单一线程上执行,使得同一维度标识对应的处理在同一线程上完成。
根据本申请的实施例,第一处理模块520可以进一步包括:切分子模块521和合并子模块522。更具体而言,切分子模块521可以用于根据对所述维度处理中的每个维度标识的划分,将所述维度处理中的所述维度标识对应的处理分配到所述预定数量的线程中的多个线程上并行执行。合并子模块522可以用于合并同一维度标识对应的处理在所述多个线程上的执行结果,以完成所述维度处理中的各维度标识对应的处理。
根据本申请的更具体实施例,切分子模块521可以进一步包括(图中未示出):确定子模块,用于针对当前事件流数据,确定维度标识对应的线程标识集合,所述线程标识集合包括维度标识对应的处理可用的线程对应的线程标识;以及选择子模块,用于从所述线程标识集合中随机选择一个线程标识,以将该线程标识对应的线程用于所述当前事件流数据的处理。
根据本申请的更具体实施例,合并子模块522可以进一步包括(图中未示出):获得子模块,用于根据维度标识对应的线程标识集合中的线程标识,合并维度标识对应的处理在各线程上的执行结果,以获得与该维度标识对应的处理结果。
根据本申请的更具体实施例,切分子模块521可以进一步包括(图中未示出):初始化设置子模块,用于初始化设置维度标识对应的线程标识集合,使得各维度标识对应的线程标识集合中的线程标识都分别对应于所述预定数量的线程。
根据本申请的更具体实施例,切分子模块521可以进一步包括(图中未示出):更新子模块,用于根据所述事件流数据中的各维度标识在特定时间段内的处理量,更新各维度标识对应的线程标识集合,使得各维度标识对应的线程标识集合中的线程标识对应于所述预定数量的线程中的一部分线程。
根据本申请的更具体实施例,切分子模块521可以进一步包括(图中未示出):统计子模块,用于从特定时间段内的事件流数据中统计所述维度处理中的各维度标识出现的事件数;以及计算子模块,用于根据特定维度标识出现的事件数以及各维度标识出现的事件数,计算所述特定维度标识在特定时间段内的处理量。
至此描述了根据本申请一个实施例的数据处理装置。以上描述的数据处理装置与之前描述的数据处理方法的处理是对应的,因此,关于其具体细节,可以参见之前描述的数据处理方法,这里不再赘述。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域内的技术人员应明白,本申请的实施例可提供为方法、设备、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据处理方法,用于事件流数据的多维度处理,其特征在于,包括:
针对所述多维度处理中的各维度处理,分别判断所述维度处理中的维度标识数量与预定线程数量之差的绝对值是否小于等于预定阈值;
当判定所述维度处理中的维度标识数量与预定线程数量之差的绝对值小于等于预定阈值时,将所述维度处理中的各维度标识对应的处理分别分配到所述预定数量的线程中的多个线程上执行,使得同一维度标识对应的处理在所述多个线程上并行完成。
2.根据权利要求1所述的方法,其特征在于,还包括:
当判定所述维度处理中的维度标识数量与预定线程数量之差的绝对值大于所述预定阈值时,将所述维度处理中的各维度标识对应的处理分别分配到所述预定数量的线程中的对应单一线程上执行,使得同一维度标识对应的处理在同一线程上完成。
3.根据权利要求2所述的方法,其特征在于,所述将所述维度处理中的各维度标识对应的处理都分别分配到所述预定数量的线程中的多个线程上执行,使得同一维度标识对应的处理在所述多个线程上并行完成,进一步包括:
根据对所述维度处理中的每个维度标识的划分,将所述维度处理中的所述维度标识对应的处理分配到所述预定数量的线程中的多个线程上并行执行;以及
合并同一维度标识对应的处理在所述多个线程上的执行结果,以完成所述维度处理中的各维度标识对应的处理。
4.根据权利要求3所述的方法,其特征在于,所述根据对所述维度处理中的每个维度标识的划分,将所述维度处理中的所述维度标识对应的处理分配到所述预定数量的线程中的多个线程上并行执行,进一步包括:
针对当前事件流数据,确定维度标识对应的线程标识集合,所述线程标识集合包括与维度标识对应的处理可用的线程对应的线程标识;以及
从所述线程标识集合中随机选择一个线程标识,以将该线程标识对应的线程用于所述当前事件流数据的处理。
5.根据权利要求3所述的方法,其特征在于,所述合并同一维度标识对应的处理在所述多个线程上的执行结果,进一步包括:
根据维度标识对应的线程标识集合中的线程标识,合并维度标识对应的处理在各线程上的执行结果,以获得与该维度标识对应的处理结果。
6.根据权利要求3所述的方法,其特征在于,所述根据对所述维度处理中的每个维度标识的划分,将所述维度处理中的所述维度标识对应的处理分配到所述预定数量的线程中的多个线程上并行执行,进一步包括:
初始化设置维度标识对应的线程标识集合,使得各维度标识对应的线程标识集合中的线程标识都分别对应于所述预定数量的线程。
7.根据权利要求3所述的方法,其特征在于,所述根据对所述维度处理中的每个维度标识的划分,将所述维度处理中的所述维度标识对应的处理分配到所述预定数量的线程中的多个线程上并行执行,进一步包括:
根据所述事件流数据中的各维度标识在特定时间段内的处理量,更新各维度标识对应的线程标识集合,使得各维度标识对应的线程标识集合中的线程标识对应于所述预定数量的线程中的一部分线程。
8.根据权利要求7所述的方法,其特征在于,所述根据对所述维度处理中的每个维度标识的划分,将所述维度处理中的所述维度标识对应的处理分配到所述预定数量的线程中的多个线程上并行执行,进一步包括:
从特定时间段内的事件流数据中统计所述维度处理中的各维度标识出现的事件数;以及
根据特定维度标识出现的事件数以及各维度标识出现的事件数,计算所述特定维度标识在特定时间段内的处理量。
9.一种数据处理装置,用于事件流数据的多维度处理,其特征在于,包括:
判断模块,用于针对所述多维度处理中的各维度处理,分别判断所述维度处理中的维度标识数量与预定线程数量之差的绝对值是否小于等于预定阈值;
第一处理模块,用于当判定所述维度处理中的维度标识数量与预定线程数量之差的绝对值小于等于预定阈值时,将所述维度处理中的各维度标识对应的处理都分别分配到所述预定数量的线程中的多个线程上执行,使得同一维度标识对应的处理在所述多个线程上并行完成。
10.根据权利要求9所述的装置,其特征在于,还包括:
第二处理模块,用于当判定所述维度处理中的维度标识数量与预定线程数量之差的绝对值大于所述预定阈值时,将所述维度处理中的各维度标识对应的处理分别分配到所述预定数量的线程中的对应单一线程上执行,使得同一维度标识对应的处理在同一线程上完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410026143.XA CN104794128B (zh) | 2014-01-20 | 2014-01-20 | 数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410026143.XA CN104794128B (zh) | 2014-01-20 | 2014-01-20 | 数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104794128A CN104794128A (zh) | 2015-07-22 |
CN104794128B true CN104794128B (zh) | 2018-06-22 |
Family
ID=53558922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410026143.XA Active CN104794128B (zh) | 2014-01-20 | 2014-01-20 | 数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104794128B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488231B (zh) * | 2016-01-22 | 2018-07-20 | 杭州电子科技大学 | 一种基于自适应表维度划分的大数据处理方法 |
CN105955713B (zh) * | 2016-05-10 | 2018-04-03 | 河北省科学院应用数学研究所 | 基于样条插值与数据并行的数据处理方法 |
CN110457355A (zh) * | 2019-08-21 | 2019-11-15 | 金蝶软件(中国)有限公司 | 一种数据聚合的方法、装置及计算机可读存储介质 |
CN111817979A (zh) * | 2020-06-23 | 2020-10-23 | 成都深思科技有限公司 | 一种基于嗅探模式的多维度流量关联的数据包处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409877A (zh) * | 2008-11-28 | 2009-04-15 | 中兴通讯股份有限公司 | 一种话单的生成方法 |
CN101510203A (zh) * | 2009-02-25 | 2009-08-19 | 南京联创科技股份有限公司 | 基于拆分机制并行处理实现大数据量高性能处理的方法 |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
CN102053859A (zh) * | 2009-11-09 | 2011-05-11 | 中国移动通信集团甘肃有限公司 | 批量数据处理的方法与装置 |
CN103383654A (zh) * | 2012-05-03 | 2013-11-06 | 百度在线网络技术(北京)有限公司 | 调节mapper在多核上执行的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7752423B2 (en) * | 2001-06-28 | 2010-07-06 | Intel Corporation | Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor |
-
2014
- 2014-01-20 CN CN201410026143.XA patent/CN104794128B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409877A (zh) * | 2008-11-28 | 2009-04-15 | 中兴通讯股份有限公司 | 一种话单的生成方法 |
CN101510203A (zh) * | 2009-02-25 | 2009-08-19 | 南京联创科技股份有限公司 | 基于拆分机制并行处理实现大数据量高性能处理的方法 |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
CN102053859A (zh) * | 2009-11-09 | 2011-05-11 | 中国移动通信集团甘肃有限公司 | 批量数据处理的方法与装置 |
CN103383654A (zh) * | 2012-05-03 | 2013-11-06 | 百度在线网络技术(北京)有限公司 | 调节mapper在多核上执行的方法及装置 |
Non-Patent Citations (1)
Title |
---|
多线程的效率;郭辉;《计算机应用》;20081215;第28卷(第S2期);第141-143页,第143页第3节第1段 * |
Also Published As
Publication number | Publication date |
---|---|
CN104794128A (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108074031A (zh) | 订单组分配方法及装置 | |
US10019396B2 (en) | Systems and methods for adaptive interrupt coalescing in a converged network | |
CN107656825A (zh) | 消息处理方法、装置及系统 | |
US9904525B2 (en) | Managing reusable artifacts using placeholders | |
CN104794128B (zh) | 数据处理方法和装置 | |
CN107395665A (zh) | 一种区块链业务受理及业务共识方法及装置 | |
CN105630590B (zh) | 一种业务信息处理方法及装置 | |
US11100525B2 (en) | System and method for intelligent discount distribution based on subscriber tier | |
US20180039516A1 (en) | Heterogeneous auto-scaling using homogeneous auto-scaling groups | |
CN106899666A (zh) | 一种针对业务标识的数据处理方法及装置 | |
CN104809602A (zh) | 一种提供物流信息的方法及装置 | |
CN107968810A (zh) | 一种服务器集群的资源调度方法、装置和系统 | |
CN108900434A (zh) | 数据收集分发方法及装置 | |
CN103634339A (zh) | 虚拟加密机装置、金融加密机及加密报文的方法 | |
CN110333951A (zh) | 一种商品抢购请求分配方法 | |
CN107463593A (zh) | 库存扣减方法及其设备 | |
US20220070509A1 (en) | Augmenting Dynamic Ad Insertion Inventory with Unused Inventory | |
CN105989133B (zh) | 事务处理方法及装置 | |
CN107578338A (zh) | 一种业务发布方法、装置及设备 | |
US20160342899A1 (en) | Collaborative filtering in directed graph | |
Kim et al. | Virtual machines placement for network isolation in clouds | |
CN108255875A (zh) | 将消息存储至分布式文件系统的方法和装置 | |
Cao et al. | Optimal control of an inventory system with joint production and pricing decisions | |
CN109361929A (zh) | 一种确定直播间标签的方法以及相关设备 | |
CN106202503B (zh) | 数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |