算法
文章平均质量分 50
算法
Wang Zhuoqun
我还能学!!!
展开
-
BitMap的小实践
一、需求场景 每天大量数据入库,但是90%以上的数据都是主键冲突的,如果主键冲突则跳过,如果不冲突则写入。 比较简单的逻辑是,每来一条数据就在表里查询一下主键是否已经存在,如果存在跳过,如果不存在写入。但是这样的情况会导致大量的数据库查询操作,因此采用在内存中构建一个bitmap,通过bitmap判断数据是否需要写入,从而避免大量的低价值的查询操作。二、BitMap代码class BitMap(object): def __init__(self,m...原创 2022-04-28 21:36:59 · 780 阅读 · 0 评论 -
水塘抽样算法(Spark RangePartitioner的抽样算法)
1、水塘抽样解决的问题对一个数量未知的样本,希望只经过一次遍历就完成随机抽样,即时间复杂度O(n)。因为样本数量未知,因此就不能通过random函数直接随机抽样。2、水塘抽样的逻辑希望在n个样本中随机抽取k个数据。即每个数据被抽取的概率为k/n。首先我们创建一个k个成员的数组out,用来存放预期抽出的样本。(1)当k>=n时,每一个样本被抽取的概率都为100%。因此都可以直接放入数组out。(2...原创 2022-01-17 19:29:24 · 3402 阅读 · 0 评论 -
内存不足时的大文件排序算法(spark shuffle的排序算法)
1、问题场景例如:当前磁盘2T,内存16G,文件大小500G。现在需要对500G的大文件进行排序,并存道另一个文件中。抽象:当前有包含10000行数的文件,再只能使用长度为1000的数组的前提下,对文件中的数据进行排序,并存道另一个文件中。2、问题分析首先,数据的总量大于了所能使用的内存数据结构的容量,所以肯定不能完全通过内存排序。因此需要采用一种分治的思想来实现全局排序。(1)数组总量10000,数组容量1000,所以...原创 2022-01-17 18:47:11 · 3399 阅读 · 1 评论