海量数据处理思路
海量数据处理
海量数据,不能一次加载到内存中
- 海量数据topK(最大和最小k个数),第k大,第k小的数
- 海量数据判断一个整数是否存在其中
- 海量数据找出不重复的数字
- 找出A,B两个海量url文件中共同的url
海量数据topK
最大K使用最小堆,最小K使用最大堆,这里以最大K为例
- 海量数据hash分块
- 维护最小堆的K个数据的数据容器
- 堆中数据是topK大的数据,堆顶的数据是第K大数据
- 先将海量数据hash再取模m,分成m个小文件,hash(num)%m,也可以直接取模
- 在每个小文件中维护K个数据的最小堆,堆顶是当前堆中的最小值
- 遍历每个小文件中剩余的数据,与堆顶的数据进行比较,更新最小堆中的数据
- 生成m * K个数据,然后对这些数据再进行排序,或者再次通过维护最小堆
变形
- 第K大不只是topK,此时堆顶数据即是
- 只求最大或最小
- 海量数据不仅仅是整数,也可以是字符串
- 海量数据按照出现的次数或者频率排序,topK
- 海量数据按照出现的次数或者频率排序,topK
- 先将海量数据hash再取模m,