面试笔记–海量数据题目处理总结
面试笔记–海量数据题目处理总结 何谓海量数据处理? 所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie树,针对空间,无非就一个办法:大而化小,分而治之(hash映射),你不是说规模太大嘛,那简单啊,就把规模大化为规模小的,各个击破不就完了嘛。 至于所谓的单机及集群问题,通俗点来讲,单机就是处理装载数据的机器有限(只要考虑cpu,内存,硬盘的数据交互),而集群,机器有多辆,适合分布式处理,并行计算(更多考虑节点和节点间的数据交互)。 海量数据处理的方法 处理海量数据问题,无非就是 6 种方法: 分而治之/hash映射 + hash统计 + 堆/快速/归并排序; 分而治之/hash映射:针对数据太大,内存受限,只能把大文件化成(取模映射)小文件 hash_map统计:当大文件转化了小文件,那么我们便可以采用常规的hash_map(key,value)来进行频率统计。 堆/快速排序:统计完了之后,便进行排序(可采取堆排序),得到次数最多的key。 多层划分 多层划分—-其实本质上还是分而治之的思想,重在“分”的技巧上!