海量数据处理
2018-04-02 20:55
253 查看
海量数据处理
预备知识在解决大数据问题前,我们先准备一些基础知识:
1G=1073741824Byte 大约等于10亿字节
大数据问题思路:
1.特殊的数据结构能否解决
2.切分–>哈希切分(相同进一个) 切分次数最好大,这样平均每份小
常见问题
1)给一个超过100G大小的log file,log中存着IP地址,设计算法找到出现次数最到的ip地址
算法思想:分而治之+Hash
先哈希切分成1000份文件,每份平均是100m,相同的ip会进入同一个文件编号,定义一个max变量存放出现次数最多的,初值为0,在查的时候,把每一个文件存到map中,找出map中最大的,然后和max比较,比max大就赋值给max,之后继续遍历剩下的999个文件
2)给两个文件,分别有100亿个query, 我们只有1G内存,如何找到两个文件交集?分别给出精确算法和近似算法
精确算法:100亿个query,一个query大约60字节,100亿大约600G,哈希切分上1200份,不要切600份哈希且不均匀,相同查询会进入编号相同的文件,把A文件的1200份文件分别依次放到Set,然后B文件去看在不在
近似算法:
如果要得到近似结果的话可以使用布隆过滤器,将其中一个文件的内容映射到位图中,然后再用另一个文件中的内容到这个位图中寻找。
3)给定100亿个整数,设计算法找到只出现一次的整数!
两种解法:
1.用位图变形,用两个位,因为这些数有可能出现0次、1次、多次,只用一个bit位是无法表示的,所以我们需要用两个bit位来表示一个整数的存在状态即:00表示没出现,01表示只出现1次,10(或11)表示出现多次
2.分而治之+Hash
4)给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个⽂件交集!
1.100亿个整数大约是40G,分别哈希切分100份,然后进行分别对比
2.将一个文件中的数据映射到位图中(大约需要500M),然后再用第二个文件中的数据到位图中去寻找。这种方法的时间复杂度是O(N)。
5)1个文件有100亿个int, 1G内存,设计算法找到出现次数不超过2次的所有整数!
用位图变形,用两个位,因为这些数有可能出现0次、1次、多次,只用一个bit位是无法表示的,所以我们需要用两个bit位来表示一个整数的存在状态即:00表示没出现,01表示只出现1次,10(或11)表示出现多次
相关文章推荐
- MySQL 处理海量数据时的一些优化查询速度方法
- 海量数据处理之BitMap
- 海量数据处理:十道面试题与十个海量数据处理方法总结
- 基于哈希的海量数据处理
- 海量数据处理学习网站
- 常用 大数据量、海量数据处理 方法 / 算法总结
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- Hibernate中如何高效处理海量数据
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 十道海量数据处理面试题与十个方法大总结
- 海量数据处理二:方法总结
- 海量数据处理专题(八)——倒排索引(搜索引擎之基石)
- Python处理海量数据的实战研究
- 十七道海量数据处理面试题与Bit-map详解
- 数据挖掘、数据分析、海量数据处理的面试题---转载
- 海量数据处理常用思路和方法
- 大数据量,海量数据 处理方法总结【转】
- 海量数据处理面试题集锦与Bit-map详解
- 海量数据处理面试题集锦
- 腾讯面试题之海量数据处理