当前位置: 首页 > 专利查询>南京大学专利>正文

一种大规模分布式函数依赖发现方法技术

技术编号:19057388 阅读:20 留言:0更新日期:2018-09-29 12:16
本发明专利技术公开了一种大规模分布式函数依赖发现方法,包括以下步骤:第一步,并行地获取数据集的统计信息、对属性进行排序和对数据进行分布式编码;第二步,依次选取属性,将在该属性上取值相同的数据发送到同一个节点上;第三步,在每个节点上进行候选函数依赖发现。该过程可以分为以下两步:第一步,并行地进行采样,利用采样结果对候选集进行剪枝和生成;第二步,并行地对候选集进行验证,利用验证结果对候选集进行剪枝和生成。每轮采样和验证结束后均需根据其效率来决定是否进行采样和验证的切换。第四步,生成函数依赖结果。本发明专利技术可高效地实现分布式函数依赖发现,解决现有函数依赖求解方法计算量大、内存占用多、无法处理大规模数据集等问题。

【技术实现步骤摘要】
一种大规模分布式函数依赖发现方法
本专利技术涉及函数依赖发现与并行计算
,尤其涉及一种大规模分布式函数依赖发现方法。
技术介绍
函数依赖是一种重要的元数据信息,在数据清理、知识发现、数据集成和模式规范化等领域都有着广泛的应用。但是函数依赖发现的计算复杂度非常高,相关的工作中并没有太多并行化的分布式函数依赖发现方法,人们更侧重于研究单机的函数依赖发现方法。前人提出的最优单机函数依赖发现方法HyFD,虽然其性能基本上超越了所有其他单机算法,但事实证明,该方法在执行过程中需要消耗大量的计算资源,主要是面向小规模、集中式存储数据进行函数依赖发现,无法对大规模、分布式数据。在大数据的时代背景下,数据规模不断增大,数据往往被分布存储在多个节点上。此时,在多个节点并行地运行单机算法无法保证函数依赖发现的正确性。面对大数据的挑战,有人提出了将所有数据传输到单个节点进行函数依赖发现的方法,但该方法无法高效地利用计算资源,也不能进行计算和存储的水平扩展。也有人提出了分布式大数据函数依赖发现的方法,旨在解决上述方法的扩展性问题,但是没有一种能够在行和列上拥有较好扩展性的解决方案。因此,如何设计一个面向大规模数据的、高效的、行和列扩展性好的函数依赖发现方法就成为了并行化方法设计的挑战。以往的相关工作中,有以HyFD算法为代表的单机函数依赖发现方法。首先,该方法对数据集进行定制化的采样,减少待处理数据的行数,并利用采样数据和列高效的算法对候选函数依赖进行剪枝和生成。然后,将剩余的候选函数依赖在所有数据上进行验证。这种方法的优势在于利用列高效的算法降低了候选函数依赖的数量,从而降低了行高效算法的验证时间。但该方法要求所有的输入数据都存储在单个节点上,且计算过程中生成的中间数据结构能够完全放入主存中,而单机的主存往往有限,所以该方法无法对大规模分布式数据进行函数依赖发现。目前较好的分布式函数依赖发现算法是HFDD,该方法基于数据重分布进行函数依赖发现,每次重分布将某个属性取值相同的数据发送到同一个节点上,然后进行验证。但该方法有以下不足:一是没有考虑节点的负载均衡,如果取值较少的属性被优先用来重分布,该方法将无法充分利用集群资源,效率也会变得十分低下;二是没有解决候选函数依赖过多的问题;三是没有高效的分布式验证方法。
技术实现思路
专利技术目的:针对上述现有技术存在的问题和不足,本专利技术的目的是提供一种在大规模、分布存储数据上进行函数依赖发现的方法,解决了现有方法资源利用率低、计算性能差和扩展性较差等问题。技术方案:为实现上述专利技术目的,本专利技术采用的技术方案为一种大规模分布式函数依赖发现方法,包括以下步骤:(1)并行地获取输入数据的统计信息,根据统计信息对属性进行排序,根据统计信息和属性排序结果对数据进行分布式编码;(2)根据步骤(1)中的结果,分多轮执行步骤(3)到步骤(4);(3)根据步骤(1)的属性排序结果,每次选取一个属性并对步骤(1)中得到的编码数据进行重分布;(4)根据步骤(3)的结果,分多轮执行步骤(5)到步骤(6),每一轮对左部中包含被选属性的所有候选函数依赖进行发现,直到左部包含该属性的所有候选函数依赖被排除或者被验证;(5)对编码数据进行并行地采样并根据采样结果对候选集进行剪枝和生成,采样效率低于验证效率时转向步骤(6);(6)对编码数据进行并行地验证并根据验证结果对候选集进行剪枝和生成,验证效率低于采样效率时转向步骤(4);(7)删除步骤(4)的结果中非最小的函数依赖并根据步骤(1)中的属性排序结果对函数依赖的属性顺序进行调整得到所有最小的非平凡的函数依赖。进一步地,所述步骤(1)中,每个计算节点获取部分输入数据的统计信息,发送统计信息到控制节点,控制节点汇总统计信息,计算属性的基数、计算属性不同取值频数的方差作为属性的方差,利用属性取值频数的最大值除以数据集大小作为属性的倾斜度,根据属性的基数、方差和倾斜度对属性进行排序,将属性排序结果和统计信息发送到计算节点,计算节点根据属性排序结果、数据统计信息对输入数据进行编码。进一步地,所述步骤(3)中,根据属性排序的结果从前往后依次选取属性,并对属性取值进行均衡的分组,建立属性值到计算节点的映射,步骤(1)中编码后数据根据上述映射发送到对应的计算节点,对数据进行重分布,数据重分布时,基于均衡的划分确定属性不同取值所对应的数据应被发送给的节点。进一步地,所述步骤(5)中,每个计算节点利用滑动窗口和属性的划分并行地进行采样,将采样结果汇总到控制节点,控制节点利用汇总后的数据对候选集进行剪枝和生成,控制节点统计采样耗时和剪枝过程中删除的候选函数依赖个数,利用删除的候选函数依赖个数除以采样耗时得到采样效率。进一步地,所述步骤(6)中,在每个计算节点上,利用一种轻量级索引对候选函数依赖进行验证,在验证过程中建立函数依赖左部(Lhs,Lefthandside)的哈希值到数据引用的索引,根据Lhs的哈希值快速找到潜在的冲突数据,然后对函数依赖进行验证得到验证结果,计算节点发送验证结果到控制节点,控制节点根据汇总后的验证结果对候选集进行剪枝和生成,控制节点统计验证耗时和剪枝过程中删除的候选函数依赖个数,利用删除的候选函数依赖个数除以验证耗时得到验证效率。进一步地,所述步骤(7)中,根据Lhs的基数对步骤(4)的结果进行排序,删除其中非最小的函数依赖。然后,根据步骤(1)中属性排序结果将剩余函数依赖的属性调整为属性排序之前的顺序,得到所有最小的、非平凡的函数依赖。有益效果:本专利技术能够在大规模分布式数据集上高效地进行函数依赖发现。第一,本专利技术将大规模分布式函数依赖发现问题分解为上述步骤,这些步骤尽可能地被设计成为了并行执行的算法,包括数据并行和算法并行,非常容易借助现有的并行计算引擎实现;第二,不同于以往在数据重分布后直接验证且需要属性之间串行计算的方法,本专利技术解决了重分布之后直接验证效率低和属性之间并行验证逻辑复杂的问题,而且能享受数据并行和算法并行带来的性能提升和良好的扩展性;第三,本专利技术并不依赖特定的并行计算框架和分布式存储系统,方便在任何上述系统上实现,具有良好的可移植性。附图说明图1为本专利技术的总体方法流程示意图;图2(a)为本专利技术中采样与候选集剪枝和生成阶段中采样过程的示意图;图2(b)为本专利技术中采样与候选集剪枝和生成阶段中候选集剪枝之前的示意图;图2(c)为本专利技术中采样与候选集剪枝和生成阶段中候选集剪枝之后的示意图;图3为本专利技术中验证与候选集剪枝和生成阶段中验证过程的示意图。具体实施方式下面结合附图和具体示例,进一步阐述本专利技术,应理解这些实施例仅用于说明本专利技术而不用于限制本专利技术的范围,在阅读了本专利技术文档之后,本领域技术人员对本专利技术的各种等价形式的修改均落于本申请所附权利要求所限定的范围。本专利技术提出了一种大规模分布式函数依赖发现方法,用以属性为中心的函数依赖发现方法解决了大规模分布式函数依赖发现的问题,并且设计了适合本专利技术的负载均衡方案。本专利技术上述步骤相互独立,每个在理论上可以并行的步骤均被设计成了数据或算法并行的形式,而且不局限于特定的分布式计算引擎和分布式存储系统,可以借助通用集群的扩展性方便地处理更大规模的数据。如图1所示,本专利技术的完整流程包括数据预处理阶段、数据本文档来自技高网
...

【技术保护点】
1.一种大规模分布式函数依赖发现方法,包括以下步骤:(1)并行地获取输入数据的统计信息,根据统计信息对属性进行排序,根据统计信息和属性排序结果对数据进行分布式编码;(2)根据步骤(1)中的结果,分多轮执行步骤(3)到步骤(4);(3)根据步骤(1)的属性排序结果,每次选取一个属性并对步骤(1)中分布式编码的数据进行重分布;(4)根据步骤(3)的结果,分多轮执行步骤(5)到步骤(6),每一轮对左部中包含被选属性的所有候选函数依赖进行发现,直到左部包含该属性的所有候选函数依赖被排除或者被验证;(5)对步骤(3)中重分布的数据进行并行地采样并根据采样结果对候选集进行剪枝和生成,采样效率低于验证效率时转向步骤(6);(6)对步骤(3)中重分布的数据进行并行地验证并根据验证结果对候选集进行剪枝和生成,验证效率低于采样效率时转向步骤(4);(7)删除步骤(4)的结果中非最小的函数依赖并根据步骤(1)中的属性排序结果对函数依赖的属性顺序进行调整,得到所有最小的非平凡的函数依赖。

【技术特征摘要】
1.一种大规模分布式函数依赖发现方法,包括以下步骤:(1)并行地获取输入数据的统计信息,根据统计信息对属性进行排序,根据统计信息和属性排序结果对数据进行分布式编码;(2)根据步骤(1)中的结果,分多轮执行步骤(3)到步骤(4);(3)根据步骤(1)的属性排序结果,每次选取一个属性并对步骤(1)中分布式编码的数据进行重分布;(4)根据步骤(3)的结果,分多轮执行步骤(5)到步骤(6),每一轮对左部中包含被选属性的所有候选函数依赖进行发现,直到左部包含该属性的所有候选函数依赖被排除或者被验证;(5)对步骤(3)中重分布的数据进行并行地采样并根据采样结果对候选集进行剪枝和生成,采样效率低于验证效率时转向步骤(6);(6)对步骤(3)中重分布的数据进行并行地验证并根据验证结果对候选集进行剪枝和生成,验证效率低于采样效率时转向步骤(4);(7)删除步骤(4)的结果中非最小的函数依赖并根据步骤(1)中的属性排序结果对函数依赖的属性顺序进行调整,得到所有最小的非平凡的函数依赖。2.根据权利要求1所述一种大规模分布式函数依赖发现方法,其特征在于:所述步骤(1)中,每个计算节点获取部分输入数据的统计信息,发送统计信息到控制节点,控制节点汇总统计信息,计算属性的基数、方差和倾斜度,根据属性的基数、方差和倾斜度对属性进行排序,将属性排序结果和统计信息发送到计算节点,计算节点对数据进行编码。3.根据权利要求...

【专利技术属性】
技术研发人员:顾荣黄宜华朱光辉王千袁春风
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

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

1