海量数据处理
hellosc01
喂,你知道吗,有时候,自由意志就是你能主动选择最小概率的路。
展开
-
7 倒排索引
倒排索引((Inverted Index))是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一 组文档中的存储位置的映射。以英文为例,下面是要被索引的文本 T0、T1、T2:T0 = “it is what it is”T1 = “what is it”T2 = “it is a banana”得到反向文件索引:“a”: {2}“banana”: {2}“is”: {0, 1, 2}“it”: {0, 1, 2}“what”: {0, 1}...原创 2021-05-22 15:23:56 · 93 阅读 · 0 评论 -
6 数据库
当遇到大数据量的增删改查时,一般把数据装进数据库中,从而利用数据的设计实现方法,对海量数据的增删改查进行处理。而数据库索引的建立则对查询速度起着至关重要的作用。原创 2021-05-22 15:21:32 · 82 阅读 · 0 评论 -
5 Trie 树(字典树)
目录Trie 树(字典树)1 10 个频繁出现的词2 寻找热门查询Trie 树(字典树)Trie 树,即字典树,又称单词查找树或键树,是一种树形结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是最大限度地减少无谓的字符串比较,查询效率比较高。Trie 的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有 3 个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符;从根节点到某一节原创 2021-05-22 15:20:42 · 327 阅读 · 0 评论 -
4 布隆过滤器
目录布隆过滤器1 寻找通过 URL2 垃圾邮件过滤布隆过滤器布隆过滤器(BloomFilter)是一种空间效率很高的随机数据结构,可以看做是对位图(bit-map)的扩展;原理是:当一个元素被加入集合时,通过 K 个 Hash 函数将这个元素映射成一个位阵列(Bitarray) 中的 K 个点,并将它们置为 1。在检索一个元素是否在一个集合中时,我们只要看看这些点是不是都是 1 就能大约判断出集合中有没有它了:如果这些点有任何一个 0,则被检索元素一定不在;如果都是 1,则被检索元素很可能存在集合中原创 2021-05-22 15:08:52 · 117 阅读 · 0 评论 -
3 位图
目录位图(Bit-map)1 2.5 亿个数的去重2 整数的快速查询位图(Bit-map)位图(Bit-map)就是用一个 bit 位来标记某个元素对应的 value, 而 key 即是该元素。由于采用了 bit 为单位来存储数据,因此在存储空间方面,可以大大节省;位图通过使用 bit 数组来表示某些元素是否存在,可进行数据的快速查找、判重、删除,一般来说数 据范围是 int 的 10 倍以下;例如要对 {4,7,2,5,3} 进行排序,可以设置一个范围为 0~8 的比特数组,读入数据之后将比特数原创 2021-05-22 14:51:51 · 301 阅读 · 0 评论 -
2 哈希分治
目录hash 映射1 寻找 TOP IP2 寻找热门查询3 寻找频数最高的 100 个词4 寻找共同的 URLhash 映射为了便于计算机在有限的内存中处理大数据,我们通过一种映射散列的方式让数据均匀分布在对应的内存位置(如大数据通过取余的方式映射成小数据存放在内存中, 或大文件映射成多个小文件),而这种映射散列的方式便是我们通常所说的 hash 函数,好的 hash 函数能让数据均匀分布而减少冲突;对于海量数据而言,由于无法一次性装进内存处理,不得不把海量的数据通过 hash 映射的方法分割成相应原创 2021-05-22 14:32:41 · 241 阅读 · 0 评论 -
1 概述
海量数据处理是指基于海量数据的存储、处理、和操作。正因为数据量太大,所以导致要么无法在较短时间内迅速解决,要么无法一次性装入内存。对于时间问题,可以采用巧妙的算法搭配合适的数据结构(如布隆过滤器、哈希、位图、堆、 数据库、倒排索引、Trie 树)来解决;对于空间问题,可以采取分而治之(哈希映射)的方法,也就是说,把规模大的数据转化为规模小的,从而各个击破;此外,针对常说的单机及集群问题:单机就是指处理装载数据的机器有限(只要考虑 CPU、 内存、和硬盘之间的数据交互);集群的意思是指机器有原创 2021-05-22 13:45:19 · 76 阅读 · 0 评论