大数据处理

  • 方法一:hash映射+hash统计+堆、快速排序、归并排序
  • 方法二:bloom filter(不要求100%的正确率)/Bitmap(通常用于判断数据是否存在,适合数据状态少的情况)
  • 方法三:trie树、数据库、倒排索引
  • 方法四:分布式处理Hadoop+MapReduce(交给不同的机器处理,数据划分,结果归约)
    具体可参见:大数据量的五种处理方式

题目:

1. 海量日志数据,提取出某日访问次数最多的ip(方法一)
* 由于数据量太大,内存受限制,所有将大文件映射成小文件,逐个统计
* 进而进行hash统计,采用常规的hashmap(IP,value)进行频率统计
* 堆、快速排序:统计完之后进行堆排序,得到次数最多的ip
2. 在2.5亿个整数中找出不重复的整数,注意:内存不足以容纳2.5亿个数(方法二)
采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存2^32 * 2 bit=1 GB内存,还可以接受。然后扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。所描完事后,查看bitmap,把对应位是01的整数输出即可。

3.1000万字符串,其中有重复的,需要把重复的去掉,保留没有重复的字符,如何实现?
数据库索引:适用于大量的增删查

倒排索引(Inverted index)
  适用范围:搜索引擎,关键字查询
  基本原理及要点:为何叫倒排索引?一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。
 以英文为例,下面是要被索引的文本:
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}
 检索的条件”what”,”is”和”it”将对应集合的交集。

你可能感兴趣的:(大数据)