美文网首页数据科学家
No.14 【大数据算法】BitMap的原理和实现

No.14 【大数据算法】BitMap的原理和实现

作者: 2453cf172ab4 | 来源:发表于2017-10-09 20:24 被阅读190次

    0x00 前言

    本篇是大数据算法系列 第一篇《BitMap的原理和实现》,BitMap 的思想的和原理是很多算法的基础,因此我们以BitMap开篇。

    既然是说大数据算法,我们先尝试给大数据算法一个定义,或者说是限定一下这个系列的范围。

    大数据算法:在给定的资源约束下,以大数据为输入,在给定时间约束内可以计算出给定问题加过的算法。

    大数据算法会有传统的算法有不一样的地方:

    1. 资源有约束
    2. 时间有约束
    3. 大数据作为输入
    4. 不一定是精确算法

    前三点可以看作是对算法的要求,第四点可以看作是在大数据场景下算法可以做出的让步。比如说在10亿的数据中求 count distinct 操作,完全精确的算法会十分占用空间资源,而且也很难在快速计算出结果。如果这时候允许一定的误差,就可以在极短的时间使用少量的内容算出结果,比如基数估计算法中的Hyperloglog。

    本系列会包括 BitMap、Roaring BitMap、Bloom Filter、Counting Bloom Filter、Linear Counting、Loglog Counting、HyperLogLog Counting 等算法。我会把这些算法一个个过一遍,看论文、写代码、整理学习笔记。

    对于技术人员来讲,文章应该做到 图文码并茂,因此我会尽量做到每篇文章都有原理说明和示例代码的实现,原理说明会通过配图的方式来理解,代码的话会有一个比较简单的demo。

    0x01 原理

    基本原理

    BitMap 的基本原理就是用一个 bit 来标记某个元素对应的 Value,而 Key 即是该元素。由于采用一 个bit 来存储一个数据,因此可以大大的节省空间。

    我们通过一个具体的例子来说明 BitMap 的原理,假设我们要对 0-31 内的 3 个元素 (10, 17,28) 排序,那么我们就可以采用 BitMap 方法(假设这些元素没有重复)。

    如下图,要表示 32 个数,我们就只需要 32 个 bit(4Bytes),首先我们开辟 4Byte 的空间,将这些空间的所有 bit 位都置为 0。

    公众号

    相关文章

      网友评论

        本文标题:No.14 【大数据算法】BitMap的原理和实现

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