面试系列:十个海量数据处理方法大总结
这个例子比上面那个更明显。首先我们 将int划分为2^16个区域,然后读取数据统计落到各个区域里的数的个数,之后我们根据统计结果就可以判断中位数落到那个区域,同时知道这个区域中的第 几大数刚好是中位数。然后第二次扫描我们只统计落在这个区域中的那些数就可以了。 实际上,如果不是int是int64,我们可以经过3次这样的划分即可降低到可以接受 的程度。即可以先将int64分成2^24个区域,然后确定区域的第几大数,在将该区域分成2^20个子区域,然后确定是子区域的第几大数,然后子区域里 的数的个数只有2^20,就可以直接利用direct addr table进行统计了。 六、数据库索引 适用范围:大数据量的增删改查 基本原理及要点:利用数据的设计实现方法,对海量数据的增删改查进行处理。 七、倒排索引(Inverted index) 适用范围:搜索引擎,关键字查询 基本原理及要点:为何叫倒排索引?一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。 以英文为例,下面是要被索引的文本:
我们就能得到下面的反向文件索引:
检索的条件”what”,”is”和”it”将对应集合的交集。 正向索引开发出来用来存储每个文档的单词的列表。正向索引的查询往往满足每个文档有序 频繁的全文查询和每个单词在校验文档中的验证这样的查询。在正向索引中,文档占据了中心的位置,每个文档指向了一个它所包含的索引项的序列。也就是说文档 指向了它包含的那些单词,而反向索引则是单词指向了包含它的文档,很容易看到这个反向的关系。 扩展: 问题实例:文档检索系统,查询那些文件包含了某单词,比如常见的学术论文的关键字搜索。 八、外排序 适用范围:大数据的排序,去重 基本原理及要点:外排序的归并方法,置换选择败者树原理,最优归并树 扩展: 问题实例:
这个数据具有很明显的特点,词的大小为16个字节,但是内存只有1m做hash有些不够,所以可以用来排序。内存可以当输入缓冲区使用。 九、trie树 适用范围:数据量大,重复多,但是数据种类小可以放入内存 基本原理及要点:实现方式,节点孩子的表示方式 扩展:压缩实现。 问题实例:
十、分布式处理 mapreduce 适用范围:数据量大,但是数据种类小可以放入内存 基本原理及要点:将数据交给不同的机器去处理,数据划分,结果归约。 扩展: (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |