海量数据问题 解决方法 (2014年4月3日更新)

海量数据的难点:

    1、时间长:怎么设计优化?

    2、空间不够: 怎么大而化小、分而治之?怎么样存储能又省又快?


解决海量数据问题的主体思想先划分为小,再快速处理,最后合并。

    1、数据(文件)拆分:通过取模运算,将大数据(文件)拆分为若干个小数据(文件)。文件的拆分可能不是简单的几刀切,有可能是对所有数据根据某个依据的映射划分,这类似于桶的思想。

    2、适合的数据结构: 常用来解决海量数据问题的数据结构有,Bloom filter/Hash表/bitmap/堆/倒排索引/trie字典树。

    3、巧妙的算法:基于数据结构的算法。

    4、数据归并:将各小数据的结果归并起来。


喜闻乐见的Hash:Hash它有3个功能。

1、划分功能,即将大的研究对象映射关联为小的映射对象,达到大而化小的效果,做法一般是,hash(关键字)%分组个数,起到了分桶的作用。

2、统计功能,即能用线性的时间和较小的空间进行出现次数统计。

3、快速查找:O(1)的查找速度,根据关键字以最快的速度找到我需要的数据或位置。


常见方法:

    1、日志TOP问题: 分桶 -> hash统计 -> 堆排序 -> 结果归并

    2、第K大问题:多次划分,逐步确定范围。

    3、是否出现/重复出现问题:分桶 -> bitmap或bloom filter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值