2021-02-01 蓄水池抽样算法(Reservoir Sampling)

蓄水池抽样算法(Reservoir Sampling)
应用场景: 蓄水池抽样一般用于海量数据不知道总数只能遍历一次随机抽样问题。
主要强调:

  1. 数据流长度N很大且不可知,所以不能一次性存入内存。
  2. 时间复杂度为O(N)。
  3. 随机选取m个数,每个数被选中的概率为m/N。

分布式蓄水池抽样(Distributed/Parallel Reservoir Sampling)
应用场景:一块CPU的计算能力再强,也总有内存和磁盘IO拖他的后腿。因此为提高数据吞吐量,分布式的硬件搭配软件是现在的主流。如果遇到超大的数据量,即使是O(N)的时间复杂度,蓄水池抽样程序完成抽样任务也将耗时很久。因此分布式的蓄水池抽样算法应运而生。

作者:邱simple
链接:https://www.jianshu.com/p/7a9ea6ece2af
来源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考资料:

  1. 如何海量处理数据
  2. Reservoir Sampling

你可能感兴趣的:(2021-02-01 蓄水池抽样算法(Reservoir Sampling))