海量数据处理
文章平均质量分 80
QuitePig
这个作者很懒,什么都没留下…
展开
-
海量数据处理:十道面试题与十个海量数据处理方法总结
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几转载 2012-08-13 10:37:03 · 719 阅读 · 0 评论 -
倒排序的应用实例一
给定一个字符串的集合,格式如:{aaabbbccc},{bbbddd},{eeefff},{ggg},{dddhhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaabbbcccdddhhh},{eeefff},{ggg}。 (1)请描述你解决这个问题的思路; (2)请给出主要的处理流程,算法,以及算法的复杂度 (3)请描述可能的改进。回原创 2012-08-27 18:20:17 · 999 阅读 · 0 评论 -
海量数据处理系列----C++中Bitmap算法的实现
bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下基本原理及要点:使用bit数组来表示某些元素是否存在,比如8位电话号码扩展:bloom filter可以转载 2012-08-27 16:36:24 · 1026 阅读 · 0 评论 -
海量数据处理方法总结
何谓海量数据处理? 所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie树,针对空间,无非就一个办法:大而化小:分而转载 2012-08-15 17:02:14 · 1139 阅读 · 0 评论 -
海量数据处理之Bloom Filter
问题:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? Bloom Filter概念和原理Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的转载 2012-08-15 16:51:18 · 542 阅读 · 0 评论 -
海量数据处理之Bitmap
什么是Bit-map 所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 如果说了这么多还没明白什么是Bit-map,那么我们来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这里假设这些元素没有重复)。那么我们就可以采用Bit-map的方法转载 2012-08-15 16:35:04 · 501 阅读 · 0 评论 -
海量数据面试题集锦
何谓海量数据处理? 所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。处理海量数据问题,无非就是:1.分而治之/hash映射 + hash统计 +堆/快速/归并排序;2.双层桶划分3.Bloom filter/Bitmap;4.Trie树/数据库/倒排索引转载 2012-08-15 16:27:45 · 1002 阅读 · 1 评论 -
海量数据处理之外排序
前言:本文是对July博文http://blog.csdn.net/v_JULY_v/article/details/6451990的一些总结现在先让我们来看一道有关外排序的题:问题描述:输入:一个最多含有n个不重复的正整数(也就是说可能含有少于n个不重复正整数)的文件,其中每个数都小于等于n,且n=10^7。输出:得到按从小到大升序排列的包含所有输入的整数的列表。条件:最转载 2012-08-15 16:53:21 · 695 阅读 · 0 评论 -
海量数据处理之双层桶划分
双层桶划分什么是双层桶事实上,与其说双层桶划分是一种数据结构,不如说它是一种算法设计思想。面对一堆大量的数据我们无法处理的时候,我们可以将其分成一个个小的单元,然后根据一定的策略来处理这些小单元,从而达到目的。适用范围 第k大,中位数,不重复或重复的数字基本原理及要点 因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,转载 2012-08-15 16:37:47 · 2679 阅读 · 0 评论 -
海量数据处理之分而治之/hash映射 + hash统计 + 堆/快速/归并排序
本章和后面的几章我将对海量数据和其处理的方法进行一些总结,很多内容转自博文http://blog.csdn.net/v_july_v/article/details/7382693何谓海量数据处理? 所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。处理海量数据问题,转载 2012-08-15 16:36:38 · 1596 阅读 · 0 评论 -
海量数据处理之Tire树(字典树)
参考博文:http://blog.csdn.net/v_july_v/article/details/6897097第一部分、Trie树1.1、什么是Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较转载 2012-08-15 16:29:03 · 860 阅读 · 0 评论 -
被神化的海量数据处理和高并发处理
被神化的海量数据处理和高并发处理 其实任何简单的问题,只要规模大了都会成为一个问题,就如中国人口多,很多小问题都会变成大问题一样。但处理这种海量数据的方法无非就是分治和”人海”战术。使用人海战术的前提是问题的划分能够支持这种人海战术,其手段无非是切割(纵向,横向)和负载均衡。纵向分隔主要是按业务(功能)来分,也就是所谓面向服务架构,横向分隔方式比较多,主要依赖于所处理的对象属转载 2013-05-10 10:46:43 · 745 阅读 · 0 评论