数据概要技术与FM Sketch方法

由于大数据自身的海量非结构化的特点,很多时候,尤其是在一些要求高速存取的场景下,直接保存数据本身是不可取的。这种情况下,我们采取的一种方法,根据应用需求,从原数据提取出能反映数据的特征的数据,通过对这些特征数据的处理,可以更加高效地达到应用的需求,这种技术称为概要技术。
FM sketch是概要技术的一种,下面通过介绍FM sketch技术来说明概要技术在数据处理方面的优势。
假若我们要统计一个流数据中不同元素的个数,最简单的方法是,将目前为止收到的不同的元素保存在一个数据结构中,每收到一个新的元素,在这个数据结构中查找这个元素,如果能找到,则不作处理;如果不能找到,则将该元素添加到该数据结构(简单地说,就是记下该数据元素。),并将计数器加一。这种方法是可行的,但是时空开销比较大。空间上来说,要保存所有的不同元素。时间上来说,每收到一个元素,都要在一个庞大的数据结构(记录着每一个不同的数据元素)中进行查找(看看这个新元素是否原来已经收到过)。
为了将这一方法改进,我们可以通过哈希来降低算法所需的空间开销。比如,我们设计一种哈希函数,将收到的数据均匀地哈希到10个桶。最后将10个桶中的不同元素的数目相加得到结果。这样,只需要在一个桶内查找是否存在重复,能够在一定程度上减少时间开销,但空间开销依旧很大。
FM sketch方法是在1985年由法国的Philippe FlaJolet和英国的G. Nigel Martin提出,可以更好地解决以上问题,我们可以设计一种哈希函数,使元素哈希到0号桶的概率是1/2,1号桶的概率是1/4,2号桶的概率是1/8,3号桶的概率是1/16,n号桶的概率是2^(-n-1)。计算过程中,我们可以只保留第n个桶中的不同元素。如果第n号桶中的不同元素个数为a,则我们可以认为总的流数据中的不同元素的个数为a/(2^(-n-1)),也就是a*(2^(n+1))。这也是一种基于概率的方法,空间上只需要logN的复杂度。实际上,这样的哈希函数是可以找到,而且不难找到的,比如可以在0号桶中存放不能被2整除的元素,在1号桶中存放能被2整除不能被4整除的元素,在2号桶中存放能被4整除不能被8整除的元素,在n号桶中存放能被2^n整除,不能被2^(n+1)整除的元素。
FM sketch也可以回答两个流的并中有多少不同元素等类似的问题:同样地,将两个流的元素都哈希到上面的桶,然后根据最后一个桶中的不同的元素个数进行合理的推断计算即可。尽管这种方法是一种基于概率的方法,但是实际中在数据量比较大的情况下,往往能在时空开销比较小的情况下取得比较好的应用效果。

由FM sketch方法的原理,我们可以看出,概要技术的特点是时空开销比较小,但不适用与要求精确查询的场合。由于大数据条件下所获取的数据常常含有一些不完善的信息和一些错误的数据,在这种不完备数据上的查询,概要技术正好能够反映数据的突出特点,满足应用需求。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值