CN107346331A - 一种基于Spark云计算平台的并行序列模式挖掘方法 - Google Patents
一种基于Spark云计算平台的并行序列模式挖掘方法 Download PDFInfo
- Publication number
- CN107346331A CN107346331A CN201710482965.2A CN201710482965A CN107346331A CN 107346331 A CN107346331 A CN 107346331A CN 201710482965 A CN201710482965 A CN 201710482965A CN 107346331 A CN107346331 A CN 107346331A
- Authority
- CN
- China
- Prior art keywords
- sequence
- data
- key
- storehouse
- burst
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Fuzzy Systems (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于Spark云计算平台的并行序列模式挖掘方法,针对现有的串行化序列模式挖掘算法在处理海量数据时计算能力低效的问题和现有的基于Hadoop的并行序列模式挖掘算法具有高IO开销和负载不平衡的问题,设计了合理的投影序列数据库切分策略,最大限度的解决了负载不平衡的问题。在此基础上根据MapReduce编程框架的特性,对原始PrefixSpan算法进行了并行化,利用Spark云计算平台的大规模并行计算能力提高了海量数据序列模式挖掘效率。本发明的技术方案具有简单、快速的特点,能够较好地提高序列模式挖掘的效率。
Description
技术领域
本发明属于序列模式挖掘技术领域,特别涉及一种基于Spark云计算平台的并行序列模式挖掘方法。
背景技术
(1)序列模式挖掘技术
[文献1]最早提出序列模式挖掘的概念。序列模式挖掘就是挖掘序列数据库中频繁出现的有序事件或子序列。序列模式挖掘作为数据挖掘研究领域中重要的研究内容之一,有着很广泛的应用需求,比如用户购买行为分析、生物序列分析、出租车频繁轨迹模式发现、人类移动行为模式分析。以下是序列模式挖掘中的一些术语的定义。
定义1:对于一个集合I={ik,k=1,2,…,m}是一个包含m个不同项的集合,称一个子集为一个项集。
定义2:序列是由多个项集组成的集合,记为S=<s1,s2,…,sn>,其中某个具体的序列的长度等于序列包含项的数目。假定某个序列的长度为l,则称此序列是l-序列。
定义3:序列数据库由<Sid,S>组成,其中第一列Sid表示序列号,第二列S表示序列的具体组成项集,每行表示一条序列记录。
定义4:对于序列S支持度定义为序列S在全局序列数据库中出现的次数。已知最小支持度,如果序列S的支持度不低于最小支持度,那么序列S就是序列模式。长度为l的序列模式称为l-序列模式。
定义5:给定两个序列α=<a1,a2,..an>,β=<b1,b2,…bm>(m≤n),β被称为α的前缀当且仅当或am-bm=Φ.序列γ=<am-bm,am+1,…,an>被称为α相对于β的后缀。
定义6:α是序列数据库D中的一个序列模式,α的投影数据库是以α为前缀的所有后缀的集合,记为S|α。
[文献2]提出了采用冗余候选模式的剪除策略和哈希树来实现候选模式快速访存的GSP算法。[文献3]提出了基于垂直数据表示的SPADE算法。[文献4]提出了基于投影数据库的PrefixSpan算法。这些传统的串行化算法虽然随着数据结构的优化和挖掘机制的改变,在性能上有一定提高,但在面对大规模数据集时算法的处理速度往往达不到人们的要求。直到20世纪初,计算机硬件的急速发展极大的推动了并行序列模式挖掘算法的研究。国内外学者相继提出了各种分布式序列模式挖掘算法。
[文献5]提出了基于树投影技术的两种不同的并行化算法来解决分布内存并行计算机的序列模式发现问题。[文献6]提出了通过语法序列树减少数据传输量的DMGSP算法。[文献7]提出了快速挖掘全局最大频繁项目集的FMGSP算法。但是由于分布式内存系统或网格计算系统这些并行平台并未提供容错机制,所以在这些并行平台上面实现的并行序列模式挖掘算法不具备容错性。此外,在这些平台上开发并行算法需要程序员具备大量的并行算法开发经验。
云计算平台的出现为实现并行算法提供了新的方法和途径,使得高效低成本的从海量数据中进行序列模式挖掘成为可能。由Apache基金会所开发的Hadoop云计算平台由于其开源性、可扩展性、高容错性、使不具备丰富并行算法开发经验的程序员可以在Hadoop平台上轻松的开发并行程序,因此很多学者提出了基于Hadoop平台的并行序列模式挖掘算法。[文献8]提出了基于Hadoop的并行增量序列模式挖掘算法DPSP算法。[文献9]提出了基于Hadoop的并行闭序列挖掘算法-BIDE-MR算法。[文献10]提出了基于Hadoop的SPAMC算法。[文献11]提出了基于Hadoop的并行PrefixSpan算法。[文献12]提出了基于事务分解思想的基于Hadoop的PrefixSpan并行算法。[文献13]提出了基于数据库切分的基于Hadoop的DGSP算法。文献[8][9][10][11]提出的基于迭代式MapReduce任务的并行序列模式挖掘算法需要执行多个需要从HDFS中读取序列数据库的MapReduce任务,会产生很大的IO开销。文献[12][13]提出的基于非迭代式MapReduce任务的并行序列模式挖掘算法并不能有效的将计算任务均匀的分派到各个计算节点,造成了负载不均衡。
(2)Map-Reduce编程框架
Map-Reduce是一种编程框架,采用了概念"Map(映射)"和"Reduce(归约)",用于大规模数据集(大于1TB)的并行运算,在[文献14]中提出。用户只需编写两个称作Map和Reduce的函数即可,系统能够管理Map或Reduce并行任务的执行以及任务之间的协调,并且能够处理上述某个任务失败的情况,并且同时能够保障对硬件故障的容错性。
基于Map-Reduce的计算过程如下:
1)用户程序中的Map-Reduce库首先将输入文件分成M个数据分片,每个分片的大小一般从16到64MB(用户可以通过可选的参数来控制每个数据片段的大小),然后Map-Reduce库在机群中创建大量的程序副本。
2)这些程序副本有一个特殊的程序-主控程序,副本中其它的程序都是由主控程序分配任务的工作程序。有M个Map任务和R个Reduce任务将被分配,主控程序将一个Map任务或Reduce任务分配给一个空闲的工作程序。
3)被分配了Map任务的工作程序读取相关的输入数据片段,从输入的数据片段中解析出键-值(key,value)对,然后把键-值对传递给用户自定义的Map函数,Map函数将产生的中间临时键-值对保存在本地内存缓存中。
4)缓存中的键-值对通过分区函数分成R个区域,之后周期性的写入到本地磁盘上。缓存的键-值对在本地磁盘上的存储位置将被回传给主控程序,由主控程序负责把这些存储位置再传给被分配了Reduce任务的工作程序。
5)当被分配了Reduce任务的工作程序接收到主控程序发来的数据存储位置信息后,使用远程过程调用(remote procedure calls)从被分配了Map任务的工作程序所在主机的磁盘上读取这些缓存数据。当被分配了Reduce任务的工作程序读取了所有的中间数据后,通过对键进行排序后使得具有相同键的数据聚合在一起。由于许多不同的键会映射到相同的Reduce任务上,因此必须进行排序。如果中间数据太大无法在内存中完成排序,那么就要在外部进行排序。
6)被分配了Reduce任务的工作程序遍历排序后的中间数据,对于每一个唯一的中间键-值对,被分配了Reduce任务的工作程序将这个键和它相关的中间值的集合传递给用户自定义的Reduce函数。Reduce函数的输出被追加到所属分区的输出文件。
7)当所有的Map和Reduce任务都完成之后,主控程序唤醒用户程序。在这个时候,在用户程序里的对Map-Reduce调用才返回。
(3)Spark云计算平台
Spark是由UC Berkeley AMP实验室开发的开元通用并行云计算平台,Spark基于MapReduce思想实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但是不同地方是运算中间输出结果能存储在内存中,从而不在需要读写分布式文件系统(HDFS),因此Spark能更好的运行数据挖掘与机器学习等需要迭代的MapReduce算法。Spark启用了内存分布数据集,它可以提供交互式查询,除此之外还可以将数据集缓存在内存中,提高数据集读写速率。实现计算过程中的数据集的重用,优化迭代工作负载。Spark底层可使用多种分布式文件系统如HDFS文件系统存放数据,不过更多的是与资源调度平台Mesos和YARN一起合作出现。
RDD(弹性分布式数据集)是Spark的核心,RDD是分布于各个计算节点存储于内存中的数据对象集合,RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。RDD分布在多个节点上,并可以对其进行并行处理。RDD是可扩展、弹性的,在运算过程中,内存小于RDD时,可以转存到磁盘上,确保内存足够继续运算。RDD是已被分区、只读的、不可变的并能够被并行操作的数据集合,只能通过在其它RDD执行确定的转换操作(如map、join、filter和group by)而创建,然而这些限制使得实现容错的开销很低。与分布式共享内存系统需要付出高昂代价的检查点和回滚不同,RDD通过Lineage来重建丢失的分区:一个RDD中包含了如何从其它RDD衍生所必需的相关信息,从而不需要检查点操作就可以重构丢失的数据分区。尽管RDD不是一个通用的共享内存抽象,但却具备了良好的描述能力、可伸缩性和可靠性,并能够广泛适用于数据并行类应用。
有关文献:
[文献1]Agrawal R,Srikant R.Mining sequential patterns:The 11thInternational Conference on Data Engineering[C].Taipei:IEEE Computer Society,1995:3-141.
[文献2]Srikant R,Agrawal R.Mining sequential pattern:Generations andperformance improvement[C]//proceedings of the 5th International ConferenceExtendingDatabase Technology.Avignon:Lecture Notes in Computer Science,1996:.3-17.
[文献3]Zaki M.SPADE:An efficient algorithm for mining frequentsequences[J].Machine Learning,2001.41(2):31-60.
[文献4]Pei J,Han J,Pinto H.PrefixSpan mining sequential patternsefficiently by prefix-projected pattern growth[C]//proceedings of the 17thInternational Conference on Data Engineering.Washington,IEEE Transactions onData Engineering,2004.16(1):1424-1440.
[文献5]Gurainikv,Gargn,Vipink.Parallel tree Projection algorithm forsequence mining[C]//proceedings of the 7th International European Conferenceon Parallel Processing.London,2001:310-320.
[文献6]龚振志,胡孔法,达庆利,张长海.DMGSP:一种快速分布式全局序列模式挖掘算法[J].东南大学学报,2007.16(04):574-579.
[文献7]Zhang Changhai,Hu Kongfa,Liu Haidong.FMGSP:an efficient methodof mining global sequential patterns[C].//proceedings of the 4thInternational Conference on Fuzzy Systems and Knowledge Discovery.LosAlanitos IEEE Computer Society.2007:761-765.
[文献8]J.Huang,S.Lin,M.Chen,“DPSP:Distributed Progressive SequentialPattern Mining on the Cloud,”Lecture Notes in Computer Science,pp.27-34,2010.
[文献9]D.Yu,W.Wu,S.Zheng,Z.Zhu,“BIDE-Based Parallel Mining ofFrequent Closed Sequences with MapReduce,”In:Proceedings of the 12thInternational Conference on Algorithms and Architecturesfor ParallelProcessing,pp.177-186 2012.
[文献10]Chun-Chieh Chen,Chi-Yao Tseng,Chi-Yao Tseng,“Highly ScalableSequential Pattern Mining Based on MapReduce Model on the Cloud,”In2013IEEEInternational Congress on Big Data,pp.310–317,2013.
[文献11]P.N.Sabrina,“Miltiple MapReduce and Derivative projecteddatabase:new approach for supporting prefixspan scalability,”IEEE,pp.148-153,Nov.2015.
[文献12]X.Wang,“Parallel sequential pattern mining bytranscationdecompostion,”IEEE Fuzzy Systems and Knowledge Discovery(FSKD),2010Seventh International Conference on,vol.4,pp.1746-1750.
[文献13]X.Yu,J.Liu,C.Ma,B.Li,“A MapReduce reinforeced distributedsequential pattern mining algorithm,”Algorithms and Architectures forParallel Processing,vol.9529,pp.183-197,Dec.2015.
[文献14]Jeffrey Dean and Sanjay Ghemawat.Map-Reduce:Simplified dataprocessing on large Cluster[C]//proceedings of the 6th Conference onSymposium on Operating Systems Design and Implementation.New York:ACM Press,2004:137-149.
发明内容
为了解决串行化序列模式挖掘算法在处理海量数据时计算能力低效的问题和现有的基于Hadoop的并行序列模式挖掘算法具有高IO开销和负载不平衡的问题,本发明提供了一种基于Spark云计算平台的并行序列模式挖掘方法。
本发明所采用的技术方案是:一种基于Spark云计算平台的并行序列模式挖掘方法,其特征在于:包括数据库切分、支持度计数和投影数据库生成三步骤,且三步迭代执行,直到没有新的序列模式产生为止;
所述数据库切分,具体实现包括以下子步骤:
步骤1.1:在第一次执行时,将原始数据库切分成相同大小的数据库分片,使每个数据库分片中的包含的序列个数近似相等;将数据库分片从HDFS中导入RDD中,接下来的所有MapReduce任务从RDD中读取数据库分片或生成的序列模式,并将该任务生成的投影数据库或序列模式存入RDD中;
步骤1.2:在后续迭代执行时,将投影数据库切分成相同大小的数据库分片,使每个数据库分片中的包含的序列个数近似相等;将投影数据库分片存入RDD中,接下来的所有MapReduce任务从RDD中读取投影数据库分片或生成的序列模式,并将该任务生成的投影数据库或序列模式存入RDD中;
所述支持度计数,其具体实现包括以下子步骤:
步骤2.1:在第一次执行时,调用第一个flatMap函数从序列数据库片段中读取每条序列,其中序列以<LongWritable偏移量,Text序列>键值对的形式存储;调用另一个flatMap函数将序列切分为项,产生<项,1>键值对;拥有相同键的键值对被合并传递给Reduce节点,Reduce节点调用ReducebyKey()函数计算<项,1>键值对的支持度,输出支持度大于等于设定的最小支持度的键值对;这些键值对的键即为1-序列模式,值即为该1-序列模式的支持度计数;删除原始序列数据库中的非1-序列模式,形成新的序列数据库,后续的MapReduce任务都基于此新的序列数据库进行操作;
步骤2.2:在后续迭代执行时,每一个Map节点首先调用flatMap函数从投影数据库片段Si|α中读取每一行后缀序列,然后再调用另一个flatMap函数将后缀序列中的第一项切分出来,将这一项b加入到前缀α后产生<α+b,1>键值对;拥有相同键的键值对被合并传递给Reduce节点;最后每一个Reduce节点调用ReducebyKey()函数计算<α+b,1>键值对的支持度,输出支持度大于等于设定的最小支持度的键值对;
所述投影数据库生成,利用一个MapReduce任务为每个在支持度计数步中产生的序列模式生成相应的投影数据库;其具体实现包括以下子步骤:
步骤3.1:每个Map节点调用flatMap()函数读取在之前的以α为前缀的投影数据库中的后缀序列;
步骤3.2:每个map函数计算前缀α′的后缀,以α为前缀的投影数据库中的后缀序列中第一次出现前缀α′的后缀即为α′的后缀;其中α′是以α为前缀的序列模式;
步骤3.3:将Map节点产生的键值对传递给Reduce节点,Reduce节点对这些键值对不做任何的处理,生成最终的投影数据库。
本发明设计了合理的投影序列数据库切分策略,最大限度的解决了负载不平衡的问题。在此基础上根据MapReduce编程框架的特性,对原始PrefixSpan算法进行了并行化,利用Spark云计算平台的大规模并行计算能力提高了海量数据序列模式挖掘效率。本发明的技术方案具有简单、快速的特点,能够较好地提高序列模式挖掘的效率。
附图说明
图1为本发明实施例的流程图;
图2为本发明实施例第一次执行支持度计数步示意图;
图3为本发明实施例第一次执行投影数据库生成步示意图;
图4为本发明实施例第二次执行支持度计数步示意图;
图5为本发明实施例第二次执行投影数据库生成步示意图;
图6为本发明实施例第三次执行支持度计数步示意图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
本发明设计的基于Spark云计算平台的序列模式挖掘算法的流程见附图1,所有步骤可由本领域技术人员采用计算机软件技术实现流程自动运行。该方法主要包括三个步骤:数据库切分步、支持度计数步和投影数据库生成步。这三步迭代执行,直到没有新的序列模式产生。
实施例具体实现过程如下:
步骤1,数据库切分;
为了实现较好的负载平衡,在第一次执行该步时,将原始数据库切分成相同大小的数据库分片(分片数最好与集群中Map节点数相同),使每个数据库分片中包含的序列近乎相等。为了减小IO开销并且充分的利用集群内存,将这些数据库分片从HDFS中导入RDD中,接下来的所有MapReduce任务从RDD中读取数据库分片、投影数据库分片或生成的序列模式,并将该任务生成的投影数据库或序列模式存入RDD中。
本实施例在第一次执行数据库切分步时,设定将原始序列数据库划分为n=3个数据库分片。
原始序列数据库内容如下表1:
表1
序列号 | 序列 |
S1 | <(c d)(e f g)> |
S2 | <h> |
S3 | <(a b)a c> |
S4 | <c g> |
S5 | <a c g h> |
S6 | <g a> |
划分得到的数据库分片1、2、3分别如下表2、3、4:
表2
表3
序列号 | 序列 |
S3 | <(a b)a c> |
S4 | <c g> |
表4
序列号 | 序列 |
S5 | <a c g h> |
S6 | <g a> |
步骤2,支持度计数;
在第一次执行支持度计数步时,该步首先调用第一个flatMap函数从序列数据库片段中读取每条序列,其中序列以<LongWritable offset,Text sequence>键值对的形式存储。随后调用另一个flatMap函数将序列切分为项,产生<项,1>键值对。拥有相同键的键值对被合并传递给Reduce节点,Reduce节点调用ReducebyKey()函数计算<项,1>键值对的支持度,输出支持度大于等于设定的最小支持度的键值对。这些键值对的键即为1-序列模式,值即为该1-序列模式的支持度计数。然后删除原始序列数据库中的非1-序列模式,形成新的序列数据库,后续的MapReduce任务都基于这个新的序列数据库进行操作。
实施例设定最小支持度为2,Spark集群中包含3个Map节点和2个Reduce节点,第一次执行支持度计数步的具体执行过程参见图2,Map节点对数据库分片1产生键值对结果如下表5:
表5
Map节点对数据库分片2产生键值对结果如下表6:
表6
输出结果 |
<a,1> |
<b,1> |
<a,1> |
<c,1> |
<c,1> |
<h,1> |
Map节点对数据库分片3产生键值对结果如下表7:
表7
输出结果 |
<a,1> |
<c,1> |
<g,1> |
<h,1> |
<g,1> |
<a,1> |
Reduce节点合并具有相同的键的键值对,输出支持度大于等于2的键值对的结果如下表8:
表8
序列模式 | 支持度 |
a | 3 |
c | 4 |
g | 4 |
h | 2 |
删除原始序列数据库中非1-序列模式后得到新的数据库如下表9:
表9
序列号 | 序列 |
S1 | <cg> |
S2 | <h> |
S3 | <a a c> |
S4 | <c g> |
S5 | <a c g h> |
S6 | <g a> |
步骤3,投影数据库生成;
在这一步中,利用一个MapReduce任务为每个在支持度计数步中产生的序列模式生成相应的投影数据库。需要说明的是,一个前缀(如前缀<a c>)的后缀是之前的前缀(如前缀<a>)的后缀的子序列。所以对前缀α′的构造无需扫描原始的序列数据库,只需扫描α的投影数据库即可,其中α′是以α为前缀的序列模式。在这个MapReduce任务中,每个Map节点调用flatMap()函数读取在之前的以α为前缀的投影数据库中的后缀序列。然后每个map函数计算前缀α′的后缀,以α为前缀的投影数据库中的后缀序列中第一次出现前缀α′的后缀即为α′的后缀。然后将Map节点产生的键值对传递给Reduce节点。Reduce节点对这些键值对不做任何的处理,生成最终的投影数据库。
实施例,第一次执行投影数据库生成步的具体执行过程参见图3,Map节点对数据库分片1产生键值对结果如下表10:
表10
输出结果 |
<c,g> |
Map节点对数据库分片2产生键值对结果如下表11:
表11
输出结果 |
<a,a c> |
<a,c> |
<c,g> |
Map节点对数据库分片3产生键值对结果如下表12:
表12
输出结果 |
<a,c g h> |
<c,g h> |
<g,h> |
<g,a> |
Reduce节点对这些键值对不做任何的处理,生成最终的投影数据库如下表13:
表13
前缀 | 后缀 |
c | <g> |
a | <a c> |
a | <c> |
c | <g> |
a | <c g h> |
c | <g h> |
g | <h> |
g | <a> |
在迭代执行数据库切分步时,为了实现较好的负载平衡,将投影数据库切分成相同大小的数据库分片(分片数最好与集群中Map节点数相同),使每个数据库分片中的包含的序列近乎相等。
在第二次执行数据库切分步时,本实施例设定将表13的投影序列数据库划分为n=3个数据库分片。
划分得到的数据库分片1、2、3分别如下表14、15、16:
表14
前缀 | 后缀 |
c | <g> |
a | <a c> |
a | <c> |
表15
前缀 | 后缀 |
c | <g> |
a | <c g h> |
c | <g h> |
表16
前缀 | 后缀 |
g | <h> |
g | <a> |
在迭代执行支持度计数步时,每一个Map节点首先调用flatMap函数从投影数据库片段Si|α中读取每一行后缀序列,然后再调用另一个flatMap函数将后缀序列中的第一项切分出来,然后将这一项b加入到前缀α后产生<α+b,1>键值对。然后拥有相同键的键值对被合并传递给Reduce节点。最后每一个Reduce节点调用ReducebyKey()函数计算<α+b,1>键值对的支持度,输出支持度大于等于设定的最小支持度的键值对。
本实施例第二次执行支持度计数步的具体执行过程参见图4,Map节点对数据库分片1产生键值对结果如下表17:
表17
输出结果 |
<c,g> |
<a,a> |
<a,c> |
Map节点对数据库分片2产生键值对结果如下表18:
表18
输出结果 |
<c,g> |
<a,c> |
<c,g> |
Map节点对数据库分片3产生键值对结果如下表19:
表19
输出结果 |
<g,h> |
<g,a> |
Reduce节点合并具有相同的键的键值对,输出支持度大于等于2的键值对的结果如下表20:
表20
序列模式 | 支持度 |
a c | 2 |
c g | 3 |
在迭代执行投影数据库生成步骤时,利用一个MapReduce任务为每个在支持度计数步中产生的序列模式生成相应的投影数据库。需要说明的是,一个前缀(如前缀<a c>)的后缀是之前的前缀(如前缀<a>)的后缀的子序列。所以对前缀α′的构造无需扫描原始的序列数据库,只需扫描α的投影数据库即可,其中α′是以α为前缀的序列模式。在这个MapReduce任务中,每个Map节点调用flatMap()函数读取在之前的以α为前缀的投影数据库中的后缀序列。然后每个map函数计算前缀α′的后缀,以α为前缀的投影数据库中的后缀序列中第一次出现前缀α′的后缀即为α′的后缀。然后将Map节点产生的键值对传递给Reduce节点。Reduce节点对这些键值对不做任何的处理,生成最终的投影数据库。
本实施例第二次执行投影数据库生成步的具体执行过程参见图5,Map节点对数据库分片1产生键值对结果如下表21:
表21
输出结果 |
<a c,g h> |
Map节点对数据库分片2产生键值对结果如下表22:
表22
输出结果 |
<c g,h> |
Map节点对数据库分片3没有产生键值对。
Reduce节点对这些键值对不做任何的处理,生成最终的投影数据库如下表23:
表23
前缀 | 后缀 |
a c | <g h> |
c g | <h> |
在第三次执行数据库切分步时,为了实现较好的负载平衡,将投影数据库切分成相同大小的数据库分片(分片数最好与集群中Map节点数相同),使每个数据库分片中的包含的序列近乎相等。在第三次执行数据库切分步时,本实施例设定将表23的投影序列数据库划分为n=2个数据库分片。
划分得到的数据库分片1、2分别如下表24、25:
表24
前缀 | 后缀 |
a c | <g h> |
表25
前缀 | 后缀 |
c g | <h> |
在第三次执行支持度计数步时,每一个Map节点首先调用flatMap函数从投影数据库片段Si|α中读取每一行序列(后缀),然后再调用另一个flatMap函数将序列中的每一项切分出来,然后将每一项b加入到前缀α后产生<α+b,1>键值对。然后拥有相同键的键值对被合并传递给Reduce节点。最后每一个Reduce节点调用ReducebyKey()函数计算<α+b,1>键值对的支持度,输出支持度大于等于设定的最小支持度的键值对。
本实施例第三次执行支持度计数步的具体执行过程参见图6,Map节点对数据库分片1产生键值对结果如下表26:
表26
输出结果 |
<ac,g> |
Map节点对数据库分片2产生键值对结果如下表27:
表27
输出结果 |
<c g,h> |
Reduce节点合并具有相同的键的键值对,输出支持度大于等于2的键值对,发现所有的Reduce节点没有输出,因此程序终止。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (3)
1.一种基于Spark云计算平台的并行序列模式挖掘方法,其特征在于:包括数据库切分、支持度计数和投影数据库生成三步骤,且三步迭代执行,直到没有新的序列模式产生为止;
所述数据库切分,具体实现包括以下子步骤:
步骤1.1:在第一次执行时,将原始数据库切分成相同大小的数据库分片,使每个数据库分片中的包含的序列个数近似相等;将数据库分片从HDFS中导入RDD中,接下来的所有MapReduce任务从RDD中读取数据库分片或生成的序列模式,并将该任务生成的投影数据库或序列模式存入RDD中;
步骤1.2:在后续迭代执行时,将投影数据库切分成相同大小的数据库分片,使每个数据库分片中的包含的序列个数近似相等;将投影数据库分片存入RDD中,接下来的所有MapReduce任务从RDD中读取投影数据库分片或生成的序列模式,并将该任务生成的投影数据库或序列模式存入RDD中;
所述支持度计数,利用一个MapReduce任务发现序列模式;其具体实现包括以下子步骤:
步骤2.1:在第一次执行时,调用第一个flatMap函数从序列数据库片段中读取每条序列,其中序列以<LongWritable偏移量,Text序列>键值对的形式存储;调用另一个flatMap函数将序列切分为项,产生<项,1>键值对;拥有相同键的键值对被合并传递给Reduce节点,Reduce节点调用ReducebyKey()函数计算<项,1>键值对的支持度,输出支持度大于等于设定的最小支持度的键值对;这些键值对的键即为1-序列模式,值即为该1-序列模式的支持度计数;删除原始序列数据库中的非1-序列模式,形成新的序列数据库,后续的MapReduce任务都基于此新的序列数据库进行操作;
步骤2.2:在后续迭代执行时,每一个Map节点首先调用flatMap函数从投影数据库片段Si|α中读取每一行后缀序列,然后再调用另一个flatMap函数将后缀序列中的第一项切分出来,将这一项b加入到前缀α后产生<α+b,1>键值对;拥有相同键的键值对被合并传递给Reduce节点;最后每一个Reduce节点调用ReducebyKey()函数计算<α+b,1>键值对的支持度,输出支持度大于等于设定的最小支持度的键值对;
所述投影数据库生成,利用一个MapReduce任务为每个在支持度计数步中产生的序列模式生成相应的投影数据库;其具体实现包括以下子步骤:
步骤3.1:每个Map节点调用flatMap()函数读取在之前的以α为前缀的投影数据库中的后缀序列;
步骤3.2:每个map函数计算前缀α′的后缀,以α为前缀的投影数据库中的后缀序列中第一次出现前缀α′的后缀即为α′的后缀;其中α′是以α为前缀的序列模式;
步骤3.3:将Map节点产生的键值对传递给Reduce节点,Reduce节点对这些键值对不做任何的处理,生成最终的投影数据库。
2.根据权利要求1所述的基于Spark云计算平台的并行序列模式挖掘方法,其特征在于:步骤1.1中,数据库分片的数量与集群中Map节点数相同。
3.根据权利要求1所述的基于Spark云计算平台的并行序列模式挖掘方法,其特征在于:步骤1.2中,在迭代过程中,将投影数据库切分成相同大小的数据库分片,使每个数据库分片中的包含的序列个数近似相等。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710482965.2A CN107346331B (zh) | 2017-06-22 | 2017-06-22 | 一种基于Spark云计算平台的并行序列模式挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710482965.2A CN107346331B (zh) | 2017-06-22 | 2017-06-22 | 一种基于Spark云计算平台的并行序列模式挖掘方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107346331A true CN107346331A (zh) | 2017-11-14 |
CN107346331B CN107346331B (zh) | 2019-08-20 |
Family
ID=60256475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710482965.2A Expired - Fee Related CN107346331B (zh) | 2017-06-22 | 2017-06-22 | 一种基于Spark云计算平台的并行序列模式挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107346331B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108197272A (zh) * | 2018-01-05 | 2018-06-22 | 北京搜狐新媒体信息技术有限公司 | 一种分布式关联规则增量的更新方法及装置 |
CN110995725A (zh) * | 2019-12-11 | 2020-04-10 | 北京明略软件系统有限公司 | 数据处理方法和装置、电子设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105678398A (zh) * | 2015-12-24 | 2016-06-15 | 国家电网公司 | 基于大数据技术的电力负荷预测方法及基于该方法的研究应用系统 |
CN106126341A (zh) * | 2016-06-23 | 2016-11-16 | 成都信息工程大学 | 应用于大数据的多计算框架处理系统及关联规则挖掘方法 |
CN106599122A (zh) * | 2016-12-01 | 2017-04-26 | 东北大学 | 一种基于垂直分解的并行频繁闭序列挖掘方法 |
CN105022670B (zh) * | 2015-07-17 | 2018-03-13 | 中国海洋大学 | 一种云计算平台中的异构分布式任务处理系统及其处理方法 |
-
2017
- 2017-06-22 CN CN201710482965.2A patent/CN107346331B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022670B (zh) * | 2015-07-17 | 2018-03-13 | 中国海洋大学 | 一种云计算平台中的异构分布式任务处理系统及其处理方法 |
CN105678398A (zh) * | 2015-12-24 | 2016-06-15 | 国家电网公司 | 基于大数据技术的电力负荷预测方法及基于该方法的研究应用系统 |
CN106126341A (zh) * | 2016-06-23 | 2016-11-16 | 成都信息工程大学 | 应用于大数据的多计算框架处理系统及关联规则挖掘方法 |
CN106599122A (zh) * | 2016-12-01 | 2017-04-26 | 东北大学 | 一种基于垂直分解的并行频繁闭序列挖掘方法 |
Non-Patent Citations (2)
Title |
---|
MANISH JUGROOT: ""Characteristics of Nanosecond Pulsed Discharges in Atmospheric"", 《PLASMA SCIENCE AND TECHNOLOGY》 * |
俞东进等: ""基于多核并行的海量数据序列模式挖掘"", 《计算机应用研究》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108197272A (zh) * | 2018-01-05 | 2018-06-22 | 北京搜狐新媒体信息技术有限公司 | 一种分布式关联规则增量的更新方法及装置 |
CN110995725A (zh) * | 2019-12-11 | 2020-04-10 | 北京明略软件系统有限公司 | 数据处理方法和装置、电子设备及计算机可读存储介质 |
CN110995725B (zh) * | 2019-12-11 | 2021-12-07 | 北京明略软件系统有限公司 | 数据处理方法和装置、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107346331B (zh) | 2019-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Parallel processing systems for big data: a survey | |
Gessert et al. | NoSQL database systems: a survey and decision guidance | |
Zhang et al. | Maiter: An asynchronous graph processing framework for delta-based accumulative iterative computation | |
He et al. | Comet: batched stream processing for data intensive distributed computing | |
Dean et al. | MapReduce: simplified data processing on large clusters | |
Bichsel et al. | A simple algorithm for shape from shading | |
Verma et al. | Breaking the MapReduce stage barrier | |
Kepner et al. | Achieving 100,000,000 database inserts per second using Accumulo and D4M | |
Chen et al. | Computation and communication efficient graph processing with distributed immutable view | |
Ju et al. | iGraph: an incremental data processing system for dynamic graph | |
Maitrey et al. | Handling big data efficiently by using map reduce technique | |
Li et al. | Data mining using clouds: An experimental implementation of apriori over mapreduce | |
Joy et al. | Parallel frequent itemset mining with spark RDD framework for disease prediction | |
Dehne et al. | A distributed tree data structure for real-time OLAP on cloud architectures | |
Jiménez-Peris et al. | How to select a replication protocol according to scalability, availability and communication overhead | |
Shi et al. | DFPS: Distributed FP-growth algorithm based on Spark | |
Qi | S-store: A scalable data store towards permissioned blockchain sharding | |
Zhu et al. | WolfGraph: The edge-centric graph processing on GPU | |
CN107346331B (zh) | 一种基于Spark云计算平台的并行序列模式挖掘方法 | |
Lu et al. | Fast failure recovery in vertex-centric distributed graph processing systems | |
Yang | From Google file system to omega: a decade of advancement in big data management at Google | |
CN107145548B (zh) | 一种基于Spark平台的并行序列模式挖掘方法 | |
Wang et al. | Research of decision tree on YARN using MapReduce and Spark | |
Essam et al. | Towards enhancing the performance of parallel FP-growth on Spark | |
Hu et al. | A fast parallel association rules mining algorithm based on FP-forest |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190820 Termination date: 20200622 |
|
CF01 | Termination of patent right due to non-payment of annual fee |