美文网首页
TopK 问题

TopK 问题

作者: 6默默Welsh | 来源:发表于2018-04-02 15:52 被阅读41次

TopK分为两种:
离线处理和实时流处理

非频率的 TopK 问题直接采用 PriorityQueue 就可以解决

频率处理的 TopK 问题分为 离线在线 两种情形

离线处理

采用 HashMap 统计频率,对频率和单词构成的 Pair 类采用 PriorityQueue 进行计算

离线处理可能会到 速度不够快内存空间不够 两种问题

速度不够快可以采用 MapperReduce 进行拆分将相同 key 合并的方式分别在每台机器上分别求出 topK,然后对各个结果采用 K 路归并算法进行合并即可

内存空间不够可能是这样一种情形:如果文件很大,即使采用 MapReduce 拆分到各个机器上去,但每台机器的内存依旧不够,这样情况下我们采用对 key 进行 hash 处理然后模上一个小于内存的数,这样比如有10万个单词分配到这个机器,算完 hash 值后再模 20000, 这样就把 key 的大小控制到了一个相对小一些的范围。但是这样可能会有一个问题,不同的 key 模完的值可能会一样,这样在统计频率时可能会出现不同的 key 累加到同一个计数上去了,也就是所谓的扎堆情况,所以我们需要在计算同一 key 的 hash 值时采用不同的大小,比如计算第一个 hash 采用 31,第二个采用 32,第三个采用 33,这样一个 key 实际上计算出了三个 hashcode,三个 hashcode分别统计次数,我们在读取频率时选取三个 hashcode 中频率最小的那个作为参考,如果三个 hashcode 都能出现扎堆问题,那可能是 20000 取的太小了

相关文章

  • 海量数据处理

    topk问题

  • TopK 问题

    TopK分为两种:离线处理和实时流处理 非频率的 TopK 问题直接采用 PriorityQueue 就可以解决 ...

  • TopK问题

    出现次数最多的K个 解题步骤: 把所有的数据存到map里 构造K个的大根堆 输出大根堆 第K大的数 解题步骤: 方...

  • TopK问题

    从文件中输出请求最频繁的10个 HTTP 接口,及其相应的请求数量数据格式如下 从大数据中找到TopK个数,比较经...

  • topK问题

    连接:https://leetcode-cn.com/problems/top-k-frequent-elemen...

  • topk 问题

    排序后取前 K 个 算法复杂度 O(nlogn) 遍历 K 遍 算法复杂度 O(kn) k 跟元素的小/大根堆 算...

  • topK问题

    (1)时间复杂度分析:每次调用'self.heapAdjust(self.arr, n, i)'的时间复杂度是O(...

  • TOPK 问题

    TOPK 问题 描述 如从海量数字中寻找最大的 k 个,这类问题我们称为 TOPK 问题,通常使用堆来解决: 求前...

  • TopK

    问题描述: 从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题。 什么是TopK,就是找到...

  • topK算法问题

    问题描述:有 N (N>1000000)个数,求出其中的前K个最小的数(又被称作topK问题)。 这类问题似乎是备...

网友评论

      本文标题:TopK 问题

      本文链接:https://www.haomeiwen.com/subject/pduthftx.html