[发明专利]基于Hadoop的关系表非冗余键集合识别方法在审
申请号: | 201410110441.7 | 申请日: | 2014-03-24 |
公开(公告)号: | CN103853844A | 公开(公告)日: | 2014-06-11 |
发明(设计)人: | 袁晓洁;韩术鹏;蔡祥睿;莫云音;温延龙 | 申请(专利权)人: | 南开大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 天津佳盟知识产权代理有限公司 12002 | 代理人: | 李益书 |
地址: | 300071*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 基于Hadoop的关系表非冗余键集合识别方法。包括:提出了一种基于数据修剪和属性修剪的键集合识别算法,并设计出了该算法的分布式解决方案MRKeyFinder。本发明提出的非冗余键集合识别算法,能够为大规模数据集中非冗余键集合信息识别提供一种有效的解决方案。本发明可用于数据建模、数据集成、异常检测、查询优化、建立索引等领域。 | ||
搜索关键词: | 基于 hadoop 关系 冗余 集合 识别 方法 | ||
【主权项】:
基于Hadoop的关系表非冗余键集合识别方法,其特征在于该方法包括如下步骤:第1、识别数据中的键集合第1.1、使用投影统计方法判断一个属性集合是否是键,定义1:键:键是数据表中唯一标识一条数据记录的属性或属性集合;在数据表中,不存在两条数据记录构成键的所有属性值都相同;第1.1.1、投影操作:将数据表在属性集合K进行投影得到数据集合S;第1.1.2、统计操作:统计投影后集合S中每一条数据在S中出现的次数,如果每一条数据都只出现过一次,则说明属性集合K是键,否则,K不是键;第1.2、对冗余的属性集进行修剪,定义2:冗余键:除了包含键的所有属性之外,还含有关系中的其它属性的属性集合;第1.2.1、基于启发式规则:如果一个属性集合是某个键的超集,那么这个属性集合是一个冗余键;根据启发式规则可以对需要进行键判别的属性集合进行修剪,避免对冗余键的投影统计操作;第1.2.2、对于键所组成的集合KeySet中的每一个非冗余键key,如果待判定属性集合CandidateKey包含任意一个key,则说明CandidateKey是冗余的键;第1.3、对数据集进行修剪,在对某一个CandidateKey判别结束后,可以先对数据集进行修剪,去除数据表中执行投影统计操作后统计结果count域为1的数据记录,从而可以降低数据集的规模,降低键识别过程中的计算代价;第2、基于Hadoop的键集合识别算法 含数据修剪的分布式非冗余键集合识别算法:MRPKeyFinder;该算法的主要内容是:在属性集修剪操作及数据集合修剪操作的基础之上,基于Hadoop平台同时对属性集合树中每一个节点的子节点进行键判别; 定义3:属性集合树:一种用于表示属性集合之间包含关系的树形结构; 属性集合树中的每一个节点都是关系表中的属性所组成的集合,树中每一个节点所表示的集合都是这个节点的子节点表示的集合的子集,位于同一层的节点所表示的集合具有相同的阶数,即集合具有相同的元素数; 本发明主要利用属性集修剪操作及数据修剪操作对BruteForce算法进行改进,并在此基础上提出了分布式键集合识别算法MRPKeyFinder;由于将数据集在属性集合K上进行投影的计算过程中,数据集中的每一条记录在K上进行投影的过程是相互独立、互不影响的,所以可以将数据集的投影过程并行执行;因此,MRKeyFinder将属性集合树中同一层的属性集合的判别过程并行执行,从而可以在不影响程序正确性的基础上很大程度上提高程序的执行效率; 第2.1、键判别算法MRPCheckKey用来验证一个属性集合是否是键;MRPCheckKey采用KeyValueTextInputFormat的作业输入方式,key与value以“|”作为分隔符;该算法由一个Mapper类和一个Reducer类组成;第2.1.1、Mapper 类根据传入的属性列表,对输入数据进行投影:在Map任务中解析出AttrList,对于AttrList中的每一个Attr,根据传入的<key,value>及Attr拼接出输出的key,将输出的value设置为输入的value,输出到 Reduce;第2.1.2、Reducer 类对投影记录进行分组聚集,并根据聚集结果进行相应的输出:在 Reduce中,对于传入的<key,value‑list>,如果value‑list不止含有一个value,则遍历value‑list,对于value‑list的每一个value,将<key,value>输出到与该key对应的文件中;第2.2、MRPKeyFinder算法中定义如下数据结构用以保存上下文信息:ContextInfo { String Path; String curKey; ArrayList<int> Attr;} 其中,Path为数据集文件路径,curKey为属性ID拼接成的字符串,Attr为属性ID集合;此外,MRPKeyFinder算法中定义变量Parallelism,用以指示允许同时进行键判别的属性集合的最大个数,该参数是为了防止内存空间不足而设置的;假设算法执行到对属性集合树第m层的属性集合集A[A1,A2,…An]进行键判别,其中Ai 是第m层中的第i个属性集合, curKeyList表示待验证的属性集合所组成的列表,MRPKeyFinder算法的执行流程如下:①、首先遍历A,对Ai进行冗余键判别,如果Ai不是冗余键,则将Ai插入curKeyList中,否则对以Ai为根的子树进行剪枝;②、遍历完A后,将curKeyList传递给MapReduce化的键判别算法MRCheckKey,同时对curKeyList中的所有属性集合进行键判别,并在判别的过程中进行数据剪枝;③、判别结束后,遍历curKeyList,对于curKeyList中的每一个Ai,根据MRCheckKey算法的输出判断Ai是否是键,如果Ai是键,则将Ai插入KeySet中,并对以Ai为根的子树进行剪枝;④、遍历curKeyList结束后,进入对下一层属性集合集的键判别过程。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南开大学,未经南开大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410110441.7/,转载请声明来源钻瓜专利网。
- 上一篇:一种电解制备硝酸的方法
- 下一篇:一种高温防腐剂