CN103455518A - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN103455518A CN103455518A CN2012101800950A CN201210180095A CN103455518A CN 103455518 A CN103455518 A CN 103455518A CN 2012101800950 A CN2012101800950 A CN 2012101800950A CN 201210180095 A CN201210180095 A CN 201210180095A CN 103455518 A CN103455518 A CN 103455518A
- Authority
- CN
- China
- Prior art keywords
- data
- task
- file
- data file
- compute node
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据处理方法及装置。其中,该方法包括:对第一矩阵中的数据进行整合,得到第一数据文件;对第二矩阵中的数据进行整合,得到第二数据文件;将第二数据文件划分为多个数据块,将多个数据块分布式缓存为多个缓存块文件;将第一数据文件分别与各个缓存块文件进行运算,记录运算结果。通过本发明,避免了从硬盘文件中读取第二数据文件、把数据转换成内存对象的问题,以及重复读取第二数据文件,而导致数据处理速度降低的问题,提高了数据处理中矩阵运算的速度,从而提高了数据处理的速度。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种数据处理方法及装置。
背景技术
矩阵运算是数学中常见的一种运算,在推荐算法中的协同过滤算法里经常会用到。而协同过滤算法通常要用海量数据作为输入,导致矩阵运算的行和列数量都很大。因此,在单机做大规模矩阵运算时,存在两个问题:一个是运算速度很有限;一个是矩阵数据不能全部载入内存后再相乘的,因为此时数据量已经远远大于计算机内存。
相关技术中,采用分布式计算***作为协同过滤算法的计算平台,解决了运算速度的问题;同时,数据的输入可以从文件中读取,解决了矩阵运算的第一个矩阵的输入问题。
然而,由于第二个矩阵数据太过庞大,不能全部载入内存参与计算,并且,如果每次都从硬盘文件中读取就会遇到文件读取和把数据转换成内存对象的瓶颈。从第一个矩阵读入一条数据,第二个矩阵就会被全部载入一遍,因此,导致运算时间成倍增加,甚至导致运算时间数量级的增加,导致数据处理速度降低。
发明内容
针对相关技术中数据处理中进行矩阵运算时,每次从第一个矩阵读入一条数据,都需要将第二个矩阵的数据从硬盘全部载入内存,使得矩阵运算时间增加,从而导致数据处理速度降低的问题,本发明提供了一种数据处理方法及装置,以至少解决上述问题。
根据本发明的一个方面,提供了一种数据处理方法,包括:对第一矩阵中的数据进行整合,得到第一数据文件;对第二矩阵中的数据进行整合,得到第二数据文件;将所述第二数据文件划分为多个数据块,将所述多个数据块分布式缓存为多个缓存块文件;将所述第一数据文件分别与各个所述缓存块文件进行运算,记录运算结果。
优选地,将所述第一数据文件分别与各个所述缓存块文件进行运算,包括:创建多个任务,将所述第一数据文件作分别输入到各个任务;在各个任务中分别将一个所述缓存块文件载入到内存,与输入的所述第一数据文件进行运算,其中,不同的所述任务使用不同的所述缓存块文件。
优选地,所述各个任务在多个运算节点上执行,其中,不同的所述运算节点执行不同的所述任务。
优选地,将所述第一数据文件分别与各个所述缓存块文件进行运算,包括:创建多个任务组,每个任务组中包含多个任务;将所述第一数据文件划分为多个数据文件,将各个所述数据文件分别输入到一个任务组中的各个任务,其中,同一任务组中的各个任务输入的数据文件相同,不同任务组组间的任务输入的数据文件不相同;在各个任务组的各个任务中分别将一个所述缓存块文件载入到内存,与输入的所述数据文件进行运算,其中,同一任务组中不同的所述任务使用不同的所述缓存块文件。
优选地,所述各个任务组在多个运算节点上执行,其中,不同的所述运算节点执行不同的所述任务组。
优选地,所述各个任务组中的各个任务在多个运算节点上执行,其中,不同的所述运算节点执行不同的所述任务。
优选地,所述缓存块文件的大小不大于所述运算节点的内存大小。
根据本发明的另一个方面,提供了一种数据处理装置,包括:第一整合模块,用于对第一矩阵中的数据进行整合,得到第一数据文件;第二整合模块,用于对第二矩阵中的数据进行整合,得到第二数据文件;拆分模块,用于将所述第二数据文件划分为多个数据块;缓存模块,用于将所述多个数据块分布式缓存为多个缓存块文件;处理模块,用于将所述第一数据文件分别与各个所述缓存块文件进行运算,记录运算结果。
优选地,所述处理模块包括:第一创建单元,用于创建多个任务;第一输入单元,用于将所述第一数据文件作分别输入到各个任务;第一处理单元,用于在各个任务中分别将一个所述缓存块文件载入到内存,与输入的所述第一数据文件进行运算,其中,不同的所述任务使用不同的所述缓存块文件。
优选地,所述第一处理单元在多个运算节点上执行所述各个任务,其中,不同的所述运算节点上的第一处理单元执行不同的所述任务。
优选地,所述处理模块包括:第二创建单元,用于创建多个任务组,每个任务组中包含多个任务;拆分单元,用于将所述第一数据文件划分为多个数据文件;第二输入单元,用于将各个所述数据文件分别输入到一个任务组中的各个任务,其中,同一任务组中的各个任务输入的数据文件相同,不同任务组组间的任务输入的数据文件不相同;第二处理单元,用于在各个任务组的各个任务中分别将一个所述缓存块文件载入到内存,与输入的所述数据文件进行运算,其中,同一任务组中不同的所述任务使用不同的所述缓存块文件。
优选地,所述第二处理单元在多个运算节点上执行所述各个任务组,其中,不同的所述运算节点上的第二处理单元执行不同的所述任务组。
优选地,所述缓存块文件的大小不大于所述运算节点的内存大小。
通过本发明,对第一矩阵中的数据进行整合,得到第一数据文件。对第二矩阵中的数据进行整合,得到第二数据文件;将第二数据文件划分为多个数据块,将多个数据块分布式缓存为多个缓存块文件。将第一数据文件分别与各个缓存块文件进行运算,记录运算结果。避免了从硬盘文件中读取第二数据文件、把数据转换成内存对象的问题,以及重复读取第二数据文件,而导致数据处理速度降低的问题,提高了数据处理中矩阵运算的速度,从而提高了数据处理的速度。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据处理方法的流程图;
图2是根据本发明实施例的数据处理装置的结构框图;
图3是根据本发明实施例优选的处理模块的结构框图;
图4是根据本发明实施例又一优选的处理模块的结构框图;
图5是根据本发明实施例的Hadoop分布式计算平台的作业处理流程图;
图6是根据本发明实施例的矩阵A的示意图;
图7是根据本发明实施例的矩阵B的示意图;
图8是根据本发明实施例的矩阵A与矩阵B运算结果的示意图;
图9是根据本发明实施例矩阵A与矩阵B运算方法的流程示意图;
图10是根据本发明实施例的商品推荐数据处理方法的流程示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例一
根据本发明实施例,提供了一种数据处理方法,降低数据处理时的矩阵运算时间,从而提高数据处理速度。
图1是根据本发明实施例的数据处理方法的流程图,如图1所示,该方法可以包括步骤S102至步骤S108。
步骤S102,对第一矩阵中的数据进行整合,得到第一数据文件。
步骤S104,对第二矩阵中的数据进行整合,得到第二数据文件。
步骤S106,将第二数据文件划分为多个数据块,将多个数据块分布式缓存为多个缓存块文件。
步骤S108,将第一数据文件分别与各个缓存块文件进行运算,记录运算结果。
通过本发明实施例,对第一矩阵中的数据进行整合,得到第一数据文件。对第二矩阵中的数据进行整合,得到第二数据文件;将第二数据文件划分为多个数据块,将多个数据块分布式缓存为多个缓存块文件。将第一数据文件分别与各个缓存块文件进行运算,记录运算结果。避免了从硬盘文件中读取第二数据文件、把数据转换成内存对象的问题,以及重复读取第二数据文件,而导致数据处理速度降低的问题,提高了数据处理中矩阵运算的速度,从而提高了数据处理的速度。
本发明实施例提供的方法可以应用到多种数据处理场景,特别是互联网数据挖掘。例如,在商品推荐***中,可以对浏览、下载、收藏、推荐、赠送等原始用户行为数据进行转换,作为用户商品评分所需要的输入文件。用户商品评分可以包含两个部分,先利用前面的输出做输入,计算出用户偏好的数据,然后计算出用户对商品的喜好评分。以用户对商品的喜好评分做输入,转置此矩阵变为商品的用户评分矩阵。
进行数据处理中的矩阵运算时,需要重复读读取第二矩阵所得的第二数据文件,读取的数据量大,导致运算节点内存溢出,影响矩阵运算的进行;此外,重复从硬盘文件中读取第二数据文件、把数据转换成内存对象的导致运算速度降低。因此,在本发明实施例中,将第二数据文件拆分成多个数据块,将拆分得到的数据块分布式缓存为多个缓存块文件,避免了重复从磁盘文件中读取第二数据文件,以及第二数据文件的数据量过大造成运算节点内存溢出的问题,提高了矩阵运算的速度。
此外,进行数据处理中的矩阵运算时,第一矩阵得到的第一数据文件可以只读取一次(可以从内存中读取或从磁盘文件中读取),因此,可以不对第一数据文件进行分块,即将第一数据文件作为一个整体,分别与第二数据文件的各个缓存块文件进行运算。优选地,为了提高运算速度,可以对第一数据文件进行分块,将第一数据文件的各个分块,分别与第二数据文件的各个缓存块文件进行运算。
在本发明实施例的一个优选实施方式中,将第一数据文件分别与各个缓存块文件进行运算时,可以创建多个任务,将第一数据文件作分别输入到各个任务,在各个任务中分别将一个缓存块文件载入到内存,与输入的第一数据文件进行运算,与第一数据文件进行运算时,不同的任务使用不同的缓存块文件。例如,可以将第二数据文件划分为5个缓存块文件,在每个任务将5个缓存块文件中的一个缓存文件载入内存转为合适的数据对象,并将第一数据分别与载入的缓存块文件进行运算。
各个任务可以由一个运算节点执行,即在一个运算节点上完成各个任务,得到第一矩阵与第二矩阵的运算结果。为了进一步提高处理速度,在本发明实施例的一个优选实施方式中,各个任务可以在多个运算节点上执行,各个运算节点执行一个或多个任务,其中,不同的运算节点执行不同的任务。各个运算节点并行处理各个任务,提高矩阵运算的处理速度,从而提高数据处理速度。例如,在分布式计算***中,可以将各个任务分发到多个运算节点,由每个运算节点执行分发到该运算节点的任务,其中,不同的运算节点被分发不同的任务。每个运算节点分别将一个缓存块文件载入到内存,与输入的第一数据文件进行运算。
为了进一步提高数据处理速度,进行矩阵运算时,可以将第一数据文件划分为多个数据文件,将各个数据文件分别与数据缓存文件进行运算。因此,在本发明实施例的另一个优选实施方式中,将第一数据文件分别与各个缓存块文件进行运算时,可以创建多个任务组,每个任务组中包含多个任务;将第一数据文件划分为多个数据文件,将各个数据文件分别输入到一个任务组中的各个任务,其中,同一任务组中的各个任务输入的数据文件相同,不同任务组组间的任务输入的数据文件不相同;在各个任务组的各个任务中分别将一个缓存块文件载入到内存,与输入的数据文件进行运算,其中,同一任务组中不同的任务使用不同的缓存块文件。
在实际应用中,各个任务组可以由一个运算节点执行,即,在一个运算节点上完成各个任务组,得到第一矩阵与第二矩阵的运算结果。为了进一步提高处理速度,在本发明实施例的一个优选实施方式中,各个任务组可以在多个运算节点上执行,其中,不同的运算节点执行不同的任务组。即,由多个运算节点并行执行各个任务组,每个运算节点执行一个或多个任务组。例如,在分布式计算***中,可以将各个任务组分发到多个运算节点,由每个运算节点分别执行分发到该运算节点的任务组中的任务,每个运算节点在各个任务中分别将一个缓存块文件载入到内存,与分发到该运算节点的数据文件进行运算,其中,不同的运算节点被分发不同的任务组。
例如,可以将第一数据文件拆分为5个数据文件,第二数据文件拆分为10个缓存块文件,则可以创建5个任务组,每个任务组中包含10个任务,将任务组分发到多个运算节点,例如,将每个任务组分发到一个运算节点,由每个运算节点执行一个任务组。一个运算节点上的每个任务组中包含10个任务,在各个任务中将一个数据文件分别与一个缓存块文件进行运算。
进一步的,每个任务组中包含多个任务,而每个任务可以在一个运算节点上执行,也可以在多个运算节点上执行。因此,在本发明实施例的一个优选实施方式中,各个任务组的各个任务可以在多个运算节点上执行,其中,不同的运算节点执行各个任务组中不同的任务。例如,在分布式计算***中,可以将一个任务组中的多个任务分发到多个运算节点,由各个运算节点分别执行一个任务组中的任务。即,将多个任务组中的多个任务分发到多个运算节点,由多个运算节点执行多个任务,其中,不同的运算节点执行不同的任务。例如,将上述每个任务组中的10个任务分发到10个运算节点,每个运算节点执行一个任务,将该任务的第一数据文件的数据文件与一个第二数据文件的缓存块文件进行运算。
在实际应用中,一个运算节点可以执行一个任务组或多个任务组,也可以执行一个任务或多个任务。分发任务或任务组时,可以根据运算节点的处理能力,确定分发到运算节点的任务或任务组的数量。例如,对于处理能力强的运算节点,可以分发多个任务或任务组;对于处理能力小的运算节点,可以少分发任务或任务组。
鉴于矩阵数据量非常大时,矩阵不能全部载入内存后再进行运算,在数据量大于运算节点的内存时,将造成运算节点内存溢出。为了不免运算节点出现内存溢出的问题,在本发明实施例的一个优选实施方式中,缓存块文件的大小不大于运算节点的内存大小。缓存块文件的大小可以根据实际情况进行划分,缓存块文件越小,第二数据文件划分的缓存块文件越多,分布式计算时,使用的运算节点越多,数据处理的速度越快。缓存块文件的大小可以通过经验值确定,也可以根据执行数据处理的运算节点的内存大小动态确定。
根据本发明实施例,对应于本发明上述实施例提供的数据处理方法,还提供了一种数据处理装置,用以实现上述方法。
图2是根据本发明实施例的数据处理装置的结构框图,如图2所示,该装置主要包括:第一整合模块10、第二整合模块20、拆分模块30、缓存模块40,以及处理模块50。其中,第一整合模块10,用于对第一矩阵中的数据进行整合,得到第一数据文件;第二整合模块20,用于对第二矩阵中的数据进行整合,得到第二数据文件;拆分模块30,与第二整合模块20相耦合,用于将第二数据文件划分为多个数据块;缓存模块40,与拆分模块30相耦合,用于将多个数据块分布式缓存为多个缓存块文件;处理模块50,与第一整合模块10和缓存模块40相耦合,用于将第一数据文件分别与各个缓存块文件进行运算,记录运算结果。
通过本发明实施例,第一整合模块10对第一矩阵中的数据进行整合,得到第一数据文件。第二整合模块20对第二矩阵中的数据进行整合,得到第二数据文件;拆分模块30将第二数据文件划分为多个数据块,缓存模块40将多个数据块分布式缓存为多个缓存块文件。处理模块50将第一数据文件分别与各个缓存块文件进行运算,记录运算结果。避免了从硬盘文件中读取第二数据文件、把数据转换成内存对象的问题,以及重复读取第二数据文件,而导致数据处理速度降低的问题,提高了数据处理的速度。
进行数据处理中的矩阵运算时,需要重复读读取第二矩阵所得的第二数据文件,读取的数据量大,导致运算节点内存溢出,影响矩阵运算的进行;此外,重复从硬盘文件中读取第二数据文件、把数据转换成内存对象的导致运算速度降低。因此,在本发明实施例中,将第二数据文件拆分成多个数据块,将拆分得到的数据块分布式缓存为多个缓存块文件,避免了重复从磁盘文件中读取第二数据文件,以及第二数据文件的数据量过大造成运算节点内存溢出的问题,提高了矩阵运算的速度。
此外,进行数据处理中的矩阵运算时,第一矩阵得到的第一数据文件可以只读取一次(可以从内存中读取或从磁盘文件中读取),因此,可以不对第一数据文件进行分块,即将第一数据文件作为一个整体,分别与第二数据文件的各个缓存块文件进行运算。优选地,为了提高运算速度,可以对第一数据文件进行分块,将第一数据文件的各个分块,分别与第二数据文件的各个缓存块文件进行运算。
例如,可以将第二数据文件划分为5个缓存块文件,在每个任务将5个缓存块文件中的一个缓存文件载入内存转为合适的数据对象,并将第一数据分别与载入的缓存块文件进行运算。
将第一数据文件分别与各个缓存块文件进行运算时,可以创建多个任务,将第一数据文件作分别输入到各个任务,在各个任务中分别将一个缓存块文件载入到内存,与输入的第一数据文件进行运算,与第一数据文件进行运算时,不同的任务使用不同的缓存块文件。因此,在本发明实施例的一个优选实施方式中,如图3所示,处理模块50可以包括:第一创建单元502,用于创建多个任务;第一输入单元504,与第一创建单元502相耦合,用于将第一数据文件作分别输入到各个任务;第一处理单元506,与第一输入单元504相耦合,用于在各个任务中分别将一个缓存块文件载入到内存,与输入的第一数据文件进行运算,其中,不同的任务使用不同的缓存块文件。
各个任务可以由一个运算节点执行,即在一个运算节点上完成各个任务,得到第一矩阵与第二矩阵的运算结果。为了进一步提高处理速度,在本发明实施例的一个优选实施方式中,第一处理单元506可以在多个运算节点上执行各个任务,其中,不同的运算节点上的第一处理单元506执行不同的任务。各个运算节点上的第一处理单元506执行一个或多个任务,各个运算节点并行处理各个任务,提高矩阵运算的处理速度,从而提高数据处理速度。例如,在分布式计算***中,可以将各个任务分发到多个运算节点,由每个运算节点执行分发到该运算节点的任务,其中,不同的运算节点被分发不同的任务。每个运算节点分别将一个缓存块文件载入到内存,与输入的第一数据文件进行运算。
为了进一步提高数据处理速度,进行矩阵运算时,可以将第一数据文件划分为多个数据文件,将各个数据文件分别与数据缓存文件进行运算。因此,在本发明实施例的另一个优选实施方式中,如图4所示,处理模块50还可以包括:第二创建单元508,用于创建多个任务组,每个任务组中包含多个任务;拆分单元510,与第二创建单元508相耦合,用于将第一数据文件划分为多个数据文件;第二输入单元512,与拆分单元510相耦合,用于将各个数据文件分别输入到一个任务组中的各个任务,其中,同一任务组中的各个任务输入的数据文件相同,不同任务组组间的任务输入的数据文件不相同;第二处理单元514,与第二输入单元512相耦合,用于在各个任务组的各个任务中分别将一个缓存块文件载入到内存,与输入的数据文件进行运算,其中,同一任务组中不同的任务使用不同的缓存块文件。
在实际应用中,各个任务组可以由一个运算节点执行,即在一个运算节点上完成各个任务组,得到第一矩阵与第二矩阵的运算结果。为了进一步提高处理速度,在本发明实施例的一个优选实施方式中,第二处理单元514可以在多个运算节点上执行各个任务组,其中,不同运算节点上的第二处理单元514执行不同的任务组。例如,在分布式计算***中,可以由多个运算节点共同执行各个任务组,各个运算节点执行一个或多个任务组。可以将多个任务组分发到多个运算节点,每个运算节点上的第二处理单元514在各个任务组的各个任务中,分别将一个缓存块文件载入到内存,与输入的数据文件进行运算,其中,不同的运算节点被分发不同的任务组。
例如,可以将第一数据文件拆分为5个数据文件,第二数据文件拆分为10个缓存块文件,则可以创建5个任务组,每个任务组中包含10个任务,将任务组分发到多个运算节点,例如,将每个任务组分发到一个运算节点,由每个运算节点执行一个任务组。一个运算节点上的每个任务组中包含10个任务,在各个任务中将一个数据文件分别与一个缓存块文件进行运算。
进一步的,每个任务组中包含多个任务,而每个任务可以在一个运算节点上执行,也可以在多个运算节点上执行。即,各个任务组的各个任务可以在多个运算节点上执行,由不同的运算节点执行各个任务组中不同的任务。因此,在本发明实施例的一个优选实施方式中,第二处理单元514可以在多个运算节点上执行各个任务组的各个任务,其中,不同运算节点上的第二处理单元514执行不同的任务。例如,在分布式计算***中,可以将一个任务组中的多个任务分发到多个运算节点,由多个运算节点分别执行一个任务组的多个任务,一个运算节点执行一个任务组中的一个或多个任务,其中,不同的运算节点执行不同的任务。
鉴于矩阵数据量非常大时,矩阵不能全部载入内存后再进行运算,在数据量大于运算节点的内存时,将造成运算节点内存溢出。为了不免运算节点出现内存溢出的问题,在本发明实施例的一个优选实施方式中,缓存块文件的大小不大于运算节点的内存大小。缓存块文件的大小可以根据实际情况进行划分,缓存块文件越小,第二数据文件划分的缓存块文件越多,分布式计算时,使用的运算节点越多,数据处理的速度越快。缓存块文件的大小可以通过经验值确定,也可以根据执行数据处理的运算节点的内存大小动态确定。
实施例二
Hadoop是一个在由通用计算设备组成的大型集群上执行分布式应用的基础框架。它由Apache基金会开发,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群实现高速运算和存储。
根据本发明实施例,以在Hadoop分布式平台上实现上述方法为例,对本发明实施例提供的上述方法进行说明。为了能够在Hadoop分布式计算平台上进行协同过滤算法的计算,使之能达到能实际应用的程度,在本发明实施例中,通过解决数据处理中第二个矩阵数据的加载问题,解决了矩阵运算的速度问题。
矩阵运算是由Hadoop的一系列运算单元-作业组成,作业是由一系列运算任务组成。如图5所示,后面作业的输入就是前面作业的输出,最后一个作业输出最后的矩阵运算结果。
如图6和7所示,A(第一矩阵)和B(第二矩阵)为待处理的矩阵,其中,A1是由所有a1,x元素所组成的向量,A2是由所有a2,x元素所组成的向量,An是由所有an,x元素所组成的向量。B1是由所有bx,1元素所组成的向量,B2是由所有bx,2元素所组成的向量,Bn是由所有bn,2元素所组成的向量。
在Hadoop分布式计算平台中,可以分为三个作业完成矩阵A和矩阵B的运算,具体的,可以包括以下三个步骤:
步骤1,在Hadoop的第一个作业完成矩阵A的数据整合,并以文件形式输出待用;
步骤2,在Hadoop的第二个作业完成矩阵B的数据整合,并以文件形式输出待用;
步骤3,在Hadoop的第三个作业完成矩阵A和矩阵B的运算(如图8所示),并以文件形式输出矩阵运算结果。
上述步骤3可以包括以下几个步骤:
步骤301,把第三个作业的输入文件设置成第一个作业的结果输出文件,按照Hadoop的分布式特性,将输入文件拆分给若干个任务去执行。在步骤301中,是否对矩阵A进行拆分输入文件,不会影响加载第二个矩阵(矩阵B)的数据。
步骤302,获取第二个作业的结果输出文件总大小TSize,按经验值M计算出拆分的个数n,将第二个作业的输出文件划成n块。
在上述步骤302中,经验值M的确定,可以是当M大小的块文件载入内存后,不发生内存溢出的情况,本领域技术人员可以根据实际情况调整拆分文件的大小,使得文件块能够载入运算节点的内存,而不发生内存溢出。
步骤303,步骤302的n块数据,利用Hadoop的分布式缓存功能,把每块数据传到Hadoop各个运算节点,作为第三个作业的每个任务的缓存文件,载入到各个运算节点的内存中,然后和第三个作业的输入数据两两计算,产生结果写入文件。
如图9所示,上述步骤303可以包含以下几个步骤:
步骤30301,第一个作业的输出文件,即输入Z(即矩阵A),根据Hadoop的分布式特性,被拆开成输入A、输入B、输入C.......分别给多个作业任务作为输入数据。
步骤30302,缓存数据N(即矩阵B),根据经验值M被拆分成缓存1、缓存2、缓存3.......分别给多个作业任务作为缓存文件并载入到内存转为对象形式。
步骤30303,输入A和缓存1、2、3....n分别运算并输出结果。等同于输入A与缓存N的运算。
步骤30304,输入B和缓存1、2、3....n分别运算并输出结果。其实等同于输入B与缓存N的运算。
步骤30305,以此类推,直至完成所有两两计算。
步骤30306,最后得到的就是输入A、B、C.......分别与缓存N的运算结果集合,也就是输入Z与缓存N的运算结果。
在实际应用中,矩阵A和矩阵B可以相同也可以相同。上述方法对行和列都很大的向量点积等的计算也适用。具体的,上述方法可以在计算机中,用JAVA程序实现,但改成其它Hadoop平台支持的语言一样能实现。
通过本发明实施例,采用将第二个矩阵进行拆分,将第一个矩阵与拆分后的矩阵进行矩阵运算,提供了运算速度,比从文件中读取第二个矩阵的运算速度快了至少一个数量级。所以使得原本在Hadoop平台中的难点-矩阵运算可以达到实际应用的要求。
具体实例
图10是根据本发明实施例的商品推荐数据处理方法的流程示意图,下面结合图10对本发明实施例的上述方法作进一步的详细描述。该方法可以包括以下步骤:
步骤一,用浏览、下载、收藏、推荐、赠送job对原始用户行为数据进行转换,输出下一个作业(job)用户商品评分所需要的输入文件。
步骤二,用户商品评分包含两个部分,先利用前面job的输出做输入,计算出用户偏好的数据,然后计算出用户对商品的喜好评分。
步骤三,以用户对商品的喜好评分做输入,转置此矩阵变为商品的用户评分矩阵。
步骤四,商品相似度计算是商品用户评分矩阵本身与本身做矩阵运算。商品用户评分矩阵作为输入数据,假设划分为10个文件。商品用户评分矩阵也作为缓存数据分块,假设划分为5个缓存块文件。10个输入文件被传给10组任务(task),每组有5个task,接收同一个的输入文件,每组的5个task各使用不同的缓存块,一个task对应一个缓存块,载入内存转为合适的数据对象。
在步骤四中,整个矩阵运算被拆成了10*5=50个task分布计算,不仅实现了大数据量的矩阵运算,而且把整个矩阵运算划分成更多的task,提高了并发计算的速度。
步骤五,用户的商品预测评分作业是用户的商品评分矩阵与商品相似度矩阵之间做矩阵运算。用户的商品评分矩阵作为输入数据,假设划分为10个文件。商品相似度矩阵作为缓存数据分块,假设划分为5个缓存块文件。10个输入文件被传给10组task,每组有5个task,接收同一个的输入文件,每组的5个task各使用不同的缓存块,一个task对应一个缓存块,载入内存转为合适的数据对象。这样整个矩阵运算被拆成了10*5=50个task分布计算。
步骤六,得到用户的商品预测评分数据后,如果想得到商品的用户预测评分,只要简单的转置下此矩阵数据即可。
在上述步骤中,应用了两个大规模矩阵运算,第二个矩阵的分块后参与运算大大提高了运算速度,简单高效的实现了推荐算法,得到了对商品推荐商品(商品相似度数据)、对用户推荐商品(用户的商品预测评分)、对商品推荐用户(商品的用户预测评分)这三组常见的数据挖掘推荐结果。
从以上的描述中,可以看出,本发明实现了如下技术效果:对第一矩阵中的数据进行整合,得到第一数据文件。对第二矩阵中的数据进行整合,得到第二数据文件;将第二数据文件划分为多个数据块,将多个数据块分布式缓存为多个缓存块文件。将第一数据文件分别与各个缓存块文件进行运算,记录运算结果。避免了从硬盘文件中读取第二数据文件、把数据转换成内存对象的问题,以及重复读取第二数据文件,而导致数据处理速度降低的问题,提高了数据处理中矩阵运算的速度,从而提高了数据处理的速度。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种数据处理方法,其特征在于,包括:
对第一矩阵中的数据进行整合,得到第一数据文件;
对第二矩阵中的数据进行整合,得到第二数据文件;
将所述第二数据文件划分为多个数据块,将所述多个数据块分布式缓存为多个缓存块文件;
将所述第一数据文件分别与各个所述缓存块文件进行运算,记录运算结果。
2.根据权利要求1所述的方法,其特征在于,将所述第一数据文件分别与各个所述缓存块文件进行运算,包括:
创建多个任务,将所述第一数据文件作分别输入到各个任务;
在各个任务中分别将一个所述缓存块文件载入到内存,与输入的所述第一数据文件进行运算,其中,不同的所述任务使用不同的所述缓存块文件。
3.根据权利要求2所述的方法,其特征在于,所述各个任务在多个运算节点上执行,其中,不同的所述运算节点执行不同的所述任务。
4.根据权利要求1所述的方法,其特征在于,将所述第一数据文件分别与各个所述缓存块文件进行运算,包括:
创建多个任务组,每个任务组中包含多个任务;
将所述第一数据文件划分为多个数据文件,将各个所述数据文件分别输入到一个任务组中的各个任务,其中,同一任务组中的各个任务输入的数据文件相同,不同任务组组间的任务输入的数据文件不相同;
在各个任务组的各个任务中分别将一个所述缓存块文件载入到内存,与输入的所述数据文件进行运算,其中,同一任务组中不同的所述任务使用不同的所述缓存块文件。
5.根据权利要求4所述的方法,其特征在于,所述各个任务组在多个运算节点上执行,其中,不同的所述运算节点执行不同的所述任务组。
6.根据权利要求5所述的方法,其特征在于,所述各个任务组中的各个任务在多个运算节点上执行,其中,不同的所述运算节点执行不同的所述任务。
7.根据权利要求3、5或6所述的方法,其特征在于,所述缓存块文件的大小不大于所述运算节点的内存大小。
8.一种数据处理装置,其特征在于,包括:
第一整合模块,用于对第一矩阵中的数据进行整合,得到第一数据文件;
第二整合模块,用于对第二矩阵中的数据进行整合,得到第二数据文件;
拆分模块,用于将所述第二数据文件划分为多个数据块;
缓存模块,用于将所述多个数据块分布式缓存为多个缓存块文件;
处理模块,用于将所述第一数据文件分别与各个所述缓存块文件进行运算,记录运算结果。
9.根据权利要求8所述的装置,其特征在于,所述处理模块包括:
第一创建单元,用于创建多个任务;
第一输入单元,用于将所述第一数据文件作分别输入到各个任务;
第一处理单元,用于在各个任务中分别将一个所述缓存块文件载入到内存,与输入的所述第一数据文件进行运算,其中,不同的所述任务使用不同的所述缓存块文件。
10.根据权利要求9所述的装置,其特征在于,所述第一处理单元在多个运算节点上执行所述各个任务,其中,不同的所述运算节点上的第一处理单元执行不同的所述任务。
11.根据权利要求8所述的装置,其特征在于,所述处理模块包括:
第二创建单元,用于创建多个任务组,每个任务组中包含多个任务;
拆分单元,用于将所述第一数据文件划分为多个数据文件;
第二输入单元,用于将各个所述数据文件分别输入到一个任务组中的各个任务,其中,同一任务组中的各个任务输入的数据文件相同,不同任务组组间的任务输入的数据文件不相同;
第二处理单元,用于在各个任务组的各个任务中分别将一个所述缓存块文件载入到内存,与输入的所述数据文件进行运算,其中,同一任务组中不同的所述任务使用不同的所述缓存块文件。
12.根据权利要求11所述的装置,其特征在于,所述第二处理单元在多个运算节点上执行所述各个任务组,其中,不同的所述运算节点上的第二处理单元执行不同的所述任务组。
13.根据权利要求10或12所述的装置,其特征在于,所述缓存块文件的大小不大于所述运算节点的内存大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210180095.0A CN103455518B (zh) | 2012-06-04 | 2012-06-04 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210180095.0A CN103455518B (zh) | 2012-06-04 | 2012-06-04 | 一种数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103455518A true CN103455518A (zh) | 2013-12-18 |
CN103455518B CN103455518B (zh) | 2018-01-02 |
Family
ID=49737897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210180095.0A Active CN103455518B (zh) | 2012-06-04 | 2012-06-04 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103455518B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630728A (zh) * | 2014-11-24 | 2016-06-01 | 三星电子株式会社 | 使用具有不同的精度的计算器处理数据的方法和设备 |
CN106527993A (zh) * | 2016-11-09 | 2017-03-22 | 北京搜狐新媒体信息技术有限公司 | 一种分布式***中的海量文件储存方法及装置 |
CN107870813A (zh) * | 2016-09-22 | 2018-04-03 | 中兴通讯股份有限公司 | 一种分布式算法处理数据的方法及装置 |
CN109165097A (zh) * | 2018-08-23 | 2019-01-08 | 北京九狐时代智能科技有限公司 | 一种数据处理方法以及数据处理装置 |
CN111385354A (zh) * | 2020-03-02 | 2020-07-07 | 拉扎斯网络科技(上海)有限公司 | 文件传输方法、装置、电子设备和非易失性存储介质 |
CN113014414A (zh) * | 2019-12-20 | 2021-06-22 | 北京金山云网络技术有限公司 | 网络数据的预测方法、装置、***和服务器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1416352B1 (en) * | 2002-10-29 | 2008-07-23 | Broadcom Corporation | Method and apparatus for efficient matrix multiplication in a direct sequence CDMA system |
CN102214160A (zh) * | 2011-07-08 | 2011-10-12 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
-
2012
- 2012-06-04 CN CN201210180095.0A patent/CN103455518B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1416352B1 (en) * | 2002-10-29 | 2008-07-23 | Broadcom Corporation | Method and apparatus for efficient matrix multiplication in a direct sequence CDMA system |
CN102214160A (zh) * | 2011-07-08 | 2011-10-12 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
Non-Patent Citations (2)
Title |
---|
姚玉坤等: "并行计算***中的矩阵乘算法及其MPI实现", 《数字通信》 * |
张新菊等: "行划分的矩阵相乘并行改进及其DSP实现", 《微计算机信息》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630728A (zh) * | 2014-11-24 | 2016-06-01 | 三星电子株式会社 | 使用具有不同的精度的计算器处理数据的方法和设备 |
CN107870813A (zh) * | 2016-09-22 | 2018-04-03 | 中兴通讯股份有限公司 | 一种分布式算法处理数据的方法及装置 |
CN106527993A (zh) * | 2016-11-09 | 2017-03-22 | 北京搜狐新媒体信息技术有限公司 | 一种分布式***中的海量文件储存方法及装置 |
CN106527993B (zh) * | 2016-11-09 | 2019-08-30 | 北京搜狐新媒体信息技术有限公司 | 一种分布式***中的海量文件储存方法及装置 |
CN109165097A (zh) * | 2018-08-23 | 2019-01-08 | 北京九狐时代智能科技有限公司 | 一种数据处理方法以及数据处理装置 |
CN109165097B (zh) * | 2018-08-23 | 2021-06-08 | 北京九狐时代智能科技有限公司 | 一种数据处理方法以及数据处理装置 |
CN113014414A (zh) * | 2019-12-20 | 2021-06-22 | 北京金山云网络技术有限公司 | 网络数据的预测方法、装置、***和服务器 |
CN113014414B (zh) * | 2019-12-20 | 2023-02-24 | 北京金山云网络技术有限公司 | 网络数据的预测方法、装置、***和服务器 |
CN111385354A (zh) * | 2020-03-02 | 2020-07-07 | 拉扎斯网络科技(上海)有限公司 | 文件传输方法、装置、电子设备和非易失性存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103455518B (zh) | 2018-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Su et al. | Redundancy-reduced mobilenet acceleration on reconfigurable logic for imagenet classification | |
CN112214727B (zh) | 运算加速器 | |
US11327690B2 (en) | Enhanced input of machine-learning accelerator activations | |
CN104915322B (zh) | 一种卷积神经网络硬件加速方法 | |
US9529590B2 (en) | Processor for large graph algorithm computations and matrix operations | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
US8677366B2 (en) | Systems and methods for processing hierarchical data in a map-reduce framework | |
US9053067B2 (en) | Distributed data scalable adaptive map-reduce framework | |
CN103455518A (zh) | 一种数据处理方法及装置 | |
CN103473121A (zh) | 一种基于云计算平台的海量图片并行处理方法 | |
CN106502964B (zh) | 一种基于Spark的极限学习机并行化计算方法 | |
CN105930479A (zh) | 一种数据倾斜处理方法及装置 | |
CN103347055A (zh) | 云计算平台中的任务处理***、设备及方法 | |
Hussain et al. | Novel Dynamic Partial Reconfiguration Implementation of K‐Means Clustering on FPGAs: Comparative Results with GPPs and GPUs | |
US11868243B2 (en) | Topological scheduling | |
Mousouliotis et al. | Squeezejet: High-level synthesis accelerator design for deep convolutional neural networks | |
CN107402905A (zh) | 基于神经网络的计算方法及装置 | |
KR101361080B1 (ko) | 행렬간 연산 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체 | |
CN111047037B (zh) | 数据处理方法、装置、设备及存储介质 | |
Tian et al. | swSuperLU: A highly scalable sparse direct solver on Sunway manycore architecture | |
Coronado‐Barrientos et al. | AXC: A new format to perform the SpMV oriented to Intel Xeon Phi architecture in OpenCL | |
CN109635238A (zh) | 矩阵运算方法、装置、设备及可读介质 | |
Yu et al. | GPU-based JFNG method for power system transient dynamic simulation | |
Sun et al. | Sparse cholesky factorization on fpga using parameterized model | |
Stramondo et al. | Designing and building application‐centric parallel memories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |