大数据问题
文章平均质量分 84
富春山居_ZYY(已黑化)
╭( ′• o •′ )╭☞就是这个人!
展开
-
海量数据小内存!只出现两次的数以及中位数怎么找
单纯的将这些无符号整数放到 HashMap 中,大概率是会爆内存的,我们可以选择将这些无符号整数分流到很多个小文件中,然后使用 HashMap 对小文件中的数出现的频率进行统计,将只出现过两次的数保存到结果文件中。那么分流的方法就是,遍历这 40 亿个无符号整数,给他们都调用一个 Hash 函数,将结果模上小文件数,就可以实现将这些数均匀的分散的分流到小文件中。根据之前的文章,我们可以知道,位图中的一个位是可以表示数有没有出现过的,比如出现过就标记为 1,始终没有出现过就一直都是 0。原创 2022-12-20 17:06:22 · 482 阅读 · 14 评论 -
海量数据小内存!从未出现过的数在哪里
一共只有 20 个字节,那么申请的 int 类型的数组最多有 4 个元素(必须是 2 的某次方),如果将提供的 9 个数分别除以 4 来确定每个数应该存在哪个范围,从而数组对应的位置值加一,比如 9,除以 4 就是 2,那么数组第 2 个值加一。比如一共有 9 个数(5,8,14,0,10,2,9,4,3),这 9 个数都在 [0,15] 这个范围内,那么至少有一个数在范围内但是不在提供的 9 个数中,只提供 20 个字节的内存,请找出一个没有出现过的数。来表示对应的元素是否存在的。原创 2022-12-19 17:51:55 · 344 阅读 · 3 评论 -
海量数据小内存!如何找到高频数
分而治之,将大数据进行哈希取余,从而分成小文件使用 HashMap 频率统计将数据整合比对。原创 2022-12-18 16:33:39 · 452 阅读 · 4 评论