海量数据处理:MapReduce法
MapReduce适用于大规模数据集(通常大于1TB)的并行运算,核心操作是Map(映射)和Reduce(化简)。Map函数独立地对每个元素进行操作,用于把一组健值对映射成一组新的健值对,即先通过Map程序将数据切割成不相关的区域,分配(调度)给大量计算机处理达到分布计算的效果,然后通过指定并发的Reduce函数来将结果汇总,保证所有映射键值对中的每一个共享相同的键组。
Map是把一组数据一对一地映射为另外的一组数据,其映射的规则由一个函数来指定,例如对【1,2,4,8】进行乘2的映射就变为【2,4,8,16】。Reduce是对一组数据进行规约,这个规约的规则是由另外一个函数指定的,例如对【1,2,4,8】进行求和规约得到的结果是15
一、top K问题
在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题称为top K问题。
针对top K类问题,通常比较好的方案是分治+Trie树/hash+小堆顶,即先将数据集按照hash方法分解成多个小数据集,然后使用Trie树或者hash统计每个小数据集中的query词频,之后用小顶堆求出每个数据集中出现频率最高的前K个数,最后在所有top K中求出最终的top K。
例如:有1亿个浮点数,如何找出其中最大的
如果觉得《海量数据处理:MapReduce法》对你有帮助,请点赞、收藏,并留下你的观点哦!