数据洗牌时内存溢出的修复方法及装置制造方法及图纸

技术编号:15198590 阅读:209 留言:0更新日期:2017-04-21 17:58
本发明专利技术公开了一种数据洗牌时内存溢出的修复方法及装置,涉及大数据处理领域,为解决在数据洗牌时,由于某个键值记录数特别多以至于内存装不下时,报内存溢出的问题而发明专利技术。本发明专利技术的方法包括:当对数据进行洗牌发生内存溢出时,找出目标键值记录,目标键值记录为记录数超过预设阈值的键值记录;对目标键值记录进行数据分流处理;将非目标键值记录重新进行洗牌,并做规约reduce操作,获得初步处理结果;将数据分流处理的结果与初步处理结果进行叠加,并做reduce操作,获得最终处理结果。本发明专利技术适合应用在对大数据处理的Spark领域。

Method and apparatus for repairing memory overflow during data shuffling

The invention discloses a method and device for repairing a data shuffling memory overflow, involving large data processing field, in order to solve the data shuffling, due to a number of key records that hold special memory, and the invention of memory overflow problem. The method of the invention comprises: when the data shuffling memory overflow, find the target key records, target key record is the number exceeds the preset threshold value; data distribution on target key records; the non target key records re shuffle, and reduce protocol operation, obtains the preliminary results; we can classify the data distribution processing results and preliminary results, and reduce operation, to obtain the final processing results. The invention is suitable for application in the Spark field of large data processing.

【技术实现步骤摘要】

本专利技术涉及大数据处理领域,尤其涉及一种数据洗牌时内存溢出的修复方法及装置
技术介绍
现今大数据时代下,想要占据领先地位,就需要深挖数据科学领域,走在学术前沿,才能在底层算法和模型方面走在前面,而Spark的这种学术基因,使得它从一开始就在大数据领域建立了一定优势。无论是性能,还是方案的统一性,对比传统的Hadoop,优势都非常明显。然而Spark属于内存计算机制,当进行数据洗牌如GroupByKey操作时,需要按相应Key的值将数据进行分组,并将分组后的数据传送至reduce阶段。在这过程中GroupByKey的算子需要将所有的键值的记录放到单台服务器上,利用服务器的内存资源进行运算。在上述进行GroupByKey的过程中,专利技术人发现:当某个键值出现非常多条的重复记录时,比如有上千万个重复的键值记录a,那么进行单机Reduce计算时,GroupByKey的算子需要将所有的重复的键值记录装载进内存才能运算,当记录数特别多,以至于内存装不下时,便会报出内存溢出的错误。
技术实现思路
本专利技术提供了一种数据洗牌时内存溢出的修复方法及装置,能够解决在数据洗牌时,由于某个键值记录数特别多以至于内存装不下时,报内存溢出的问题。为解决上述技术问题,一方面,本专利技术提供了一种数据洗牌时内存溢出的修复方法,该方法包括:当对数据进行洗牌发生内存溢出时,找出目标键值记录,所述目标键值记录为记录数超过预设阈值的键值记录;对所述目标键值记录进行数据分流处理;将非目标键值记录重新进行洗牌,并做规约reduce操作,获得初步处理结果;将所述数据分流处理的结果与所述初步处理结果进行叠加,并做reduce操作,获得最终处理结果。另一方面,本专利技术还提供了一种数据洗牌时内存溢出的修复装置,该装置包括:查找单元,用于当对数据进行洗牌发生内存溢出时,找出目标键值记录,所述目标键值记录为记录数超过预设阈值的键值记录;分流单元,用于对所述查找单元查找的所述目标键值记录进行数据分流处理;处理单元,用于将所述查找单元未查找的非目标键值记录重新进行洗牌,并做规约reduce操作,获得初步处理结果;叠加单元,用于将所述分流单元获得的所述数据分流处理的结果与所述处理单元获得的所述初步处理结果进行叠加,并做reduce操作,获得最终处理结果。本专利技术提供的数据洗牌时内存溢出的修复方法及装置,能够找出导致数据洗牌出现内存溢出的目标键值记录,然后对目标键值记录进行数据分流,其他的数据进行重新洗牌,最后将数据分流的结果和其他数据的洗牌结果进行叠加进入下一步的reduce计算。与现有技术相比,本专利技术能够在数据洗牌出现内存溢出后进行修复,所以可以解决在数据洗牌时,由于某个键值记录数特别多以至于内存装不下时,报内存溢出的问题。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了本专利技术实施例提供的一种数据洗牌时内存溢出的修复的方法流程图;图2示出了本专利技术实施例提供的一种当对数据进行洗牌发生内存溢出时,找出目标键值记录的方法流程图;图3示出了本专利技术实施例提供的一种数据二次洗牌的方法流程图;图4示出了本专利技术实施例提供的一种数据洗牌时内存溢出的修复装置的组成框图;图5示出了本专利技术实施例提供的另一种数据洗牌时内存溢出的修复装置的组成框图;图6示出了本专利技术实施例提供的又一种数据洗牌时内存溢出的修复装置的组成框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。为解决现有技术在数据洗牌时,由于某个键值记录数特别多以至于内存装不下时,报内存溢出的问题,本专利技术实施例提供了一种数据洗牌时内存溢出的修复方法,如图1所示,该方法包括:101、当对数据进行洗牌发生内存溢出时,找出目标键值记录,目标键值记录为记录数超过预设阈值的键值记录。在本实施例中,对数据进行洗牌是主要是指Spark领域中的Shuffle过程。Shuffle程是指按照一定的规则对数据进行处理,例如按照键值进行排序(GroupByKey),或者其他的规则。预设阈值用于限定一条键值记录重复的记录数,本实施例对预设的阈值没有具体的限制,根据实际的情况来决定。通常,洗牌过程中发生内存溢出的原因在于洗牌过程涉及的键值记录条数过多,而其中又存在一些记录数较多的键值记录。因此,将这些记录数较多的键值记录作为目标键值记录进行查找,并将其从需要洗牌的数据中分离出来进行单独的处理,就可以有效减少内存中的记录条数,从而避免出现内存溢出错误后不能继续进行数据处理的问题。另外,在本实施例中,找出目标键值记录的方式可以根据实际应用的情况不同进行选择。102、对目标键值记录进行数据分流处理。将步骤101中获得的目标键值记录进行数据分流处理。本实施例中对目标键值记录进行数据分流处理的原理是将目标键值记录拆分为数据流进行计算,即每出现一个键值记录就立即处理,而不是缓存起来成一批进行处理。这样就可以实现出现一个键值记录就加一个键值记录,最终得到所有的键值记录的总数的目的。这个数据分流的结果跟进行数据洗牌的结果是一样的,因此可以很方便并入正常的洗牌结果中进行下一步的reduce计算。103、将非目标键值记录重新进行洗牌,并做规约reduce操作,获得初步处理结果。由于步骤102已经对目标键值记录进行了数据分流处理,因此非目标键值记录就可以进行重新洗牌,并进行下一步reduce操作。将非目标键值记录重新洗牌与出现内存溢出前的数据洗牌过程是相同的,没有改变原先的洗牌方法,这样做也是对原先的洗牌方法的有效利用,使整个的修复方法更为简单。104、将数据分流处理的结果与所述初步处理结果进行叠加,并做reduce操作,获得最终处理结果。在本实施例中,为了使经过数据分流处理的结果和数据洗牌的结果达到一致,将步骤102中得到的数据分流处理的结果与步骤103中得到初步处理结果进行叠加,然后重新进行一次reduce的计算就可以得到最终的处理结果。本专利技术实施例提供的数据洗牌时内存溢出的修复方法,能够找出导致数据洗牌出现内存溢出的目标键值记录,然后对目标键值记录进行数据分流,其他的数据进行重新洗牌,最后将数据分流的结果和其他数据的洗牌结果进行叠加进入下一步的reduce计算。与现有技术相比,本专利技术实施例能够在数据洗牌出现内存溢出后进行修复,所以可以解决在数据洗牌时,由于某个键值记录数特别多以至于内存装不下时,报内存溢出的问题。作为对图1所示实施例的细化及扩展,本专利技术还提供了以下不同实施例。本实施例中给出了两种找出目标键值记录的方式。应当明确,以下实现方式中的具体公式、本文档来自技高网...
数据洗牌时内存溢出的修复方法及装置

【技术保护点】
一种数据洗牌时内存溢出的修复方法,其特征在于,所述方法包括:当对数据进行洗牌发生内存溢出时,找出目标键值记录,所述目标键值记录为记录数超过预设阈值的键值记录;对所述目标键值记录进行数据分流处理;将非目标键值记录重新进行洗牌,并做规约reduce操作,获得初步处理结果;将所述数据分流处理的结果与所述初步处理结果进行叠加,并做reduce操作,获得最终处理结果。

【技术特征摘要】
1.一种数据洗牌时内存溢出的修复方法,其特征在于,所述方法包括:当对数据进行洗牌发生内存溢出时,找出目标键值记录,所述目标键值记录为记录数超过预设阈值的键值记录;对所述目标键值记录进行数据分流处理;将非目标键值记录重新进行洗牌,并做规约reduce操作,获得初步处理结果;将所述数据分流处理的结果与所述初步处理结果进行叠加,并做reduce操作,获得最终处理结果。2.根据权利要求1所述的方法,其特征在于,所述找出目标键值记录,包括:按照重复记录数由多到少排序的顺序,找出前N个键值记录,其中N为大于1的正整数;分别计算所述N个键值记录占用的内存大小;将计算出的所述内存大小分别与最小的单机内存值进行比较;将内存大小超过所述单机内存值的键值记录确定为所述目标键值记录。3.根据权利要求2所述的方法,其特征在于,计算键值记录占用的内存大小,包括:将键值记录的条目数值,记为n_key的形式;计算单行键值记录的内存空间大小,记为s_key的形式,其中所述单行键值记录的内存空间大小包含键值长度和值列的长度的总长度;计算n_key*s_key,获得所述键值记录占用的内存大小。4.根据权利要求1所述的方法,其特征在于,所述找出目标键值记录,包括:找出重复记录数最多的键值记录作为所述目标键值记录。5.根据权利要求4所述的方法,其特征在于,在所述将非目标键值记录重新进行洗牌之后,所述方法进一步包括:若再次发生内存溢出,则从所述非目标键值记录中查找重复记录数最多的键值记录作为次级目标键值记录;将所述次级目标键值记录进行数据分流处理。6.根据权利要求4所述的方法,其特征在于,找出重复记录数最多的键值记录,包括:在数据处理之前,通过...

【专利技术属性】
技术研发人员:洪超
申请(专利权)人:北京国双科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1