海量数据处理方法的分析

本文可以认为是http://blog.csdn.net/v_JULY_v/article/details/6279498的读后感,我是按照我理解的语言重新表述了一下而已。

海量数据处理的常用方法包括一下几种:

1.分而治之/hash映射 + hash统计 + 堆/快速/归并排序;
2.双层桶划分
3.Bloom filter/Bitmap;
4.Trie树/数据库/倒排索引;
5.外排序;
6.分布式处理之Hadoop/Mapreduce。

 

1. 分而治之/hash映射 + hash统计 + 堆/快速/归并排序;
分治是算法的核心思想,不过需要证明分治是适用的才行。 如何分呢,就是用Hash函数来做,用hash函数把大数据集分成几个小数据集,然后对小数据集进行统计,将多个子数据集的统计结果进行归并排序。例如:

海量日志数据,提取出某日访问百度次数最多的那个IP

可以IP地址按照IP%100,将IP地址分为100个子集,对各个子集分别统计频度,然后取出各个子集出现最多的IP,进而得到整体出现最多的IP

 

假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门),请你统计最热门的10个查询串,要求使用的内存不能超过1G。

这个也可以使用Trie树,

有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。

 

海量数据分布在100台电脑中,想个办法高效统计出这批数据的TOP10。

 

有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。

 

给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?

 

 

2.双层桶划分
适用范围:第k大,中位数,不重复或重复的数字

2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。

有点像鸽巢原理,整数个数为2^32,也就是,我们可以将这2^32个数,划分为2^8个区域(比如用单个文件代表一个区域),然后将数据分离到不同的区域,然后不同的区域在利用bitmap就可以直接解决了。也就是说只要有足够的磁盘空间,就可以很方便的解决。

 

5亿个int找它们的中位数。

这个例子比上面那个更明显。首先我们将int划分为2^16个区域,然后读取数据统计落到各个区域里的数的个数,之后我们根据统计结果就可以判断中位数落到那个区域,同时知道这个区域中的第几大数刚好是中位数。然后第二次扫描我们只统计落在这个区域中的那些数就可以了。

 

实际上,如果不是int是int64,我们可以经过3次这样的划分即可降低到可以接受的程度。即可以先将int64分成2^24个区域,然后确定区域的第几大数,在将该区域分成2^20个子区域,然后确定是子区域的第几大数,然后子区域里的数的个数只有2^20,就可以直接利用direct addr table进行统计了。

3.Bloom filter/Bitmap

适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集

给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。如果是三个乃至n个文件呢?

 

已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。

 


8位最多99 999 999,大概需要99m个bit,大概10几m字节的内存即可。
2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。

  将bit-map扩展一下,用2bit表示一个数即可,0表示未出现,1表示出现一次,2表示出现2次及以上。或者我们不用2bit来进行表示,我们用两个bit-map即可模拟实现这个2bit-map。


4.Trie树/数据库/倒排索引

适用范围:数据量大,重复多,但是数据种类小可以放入内存

Trie树主要用来实现词频统计


5.外排序


6.分布式处理之Hadoop/Mapreduce


 

http://blog.csdn.net/v_july_v/article/details/7382693

转载于:https://www.cnblogs.com/whyandinside/archive/2012/07/07/2580755.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

资料分享 | 数据挖掘实例资料分享来袭

小编从大学开始,便开启资料收集功能。随着大数据时代的来临,计算机发展进入新的阶段,再加上日常的深入研究,小编收集整理了丰富的数据挖掘资料,内容涵盖“程序”,“数据”、“文档”等。这次小编再次把所有…

修改图层的范围_【PS|第39期】数字绘画 使用填充图层

惟有悲观净化而成的乐观,才是真正的乐观。——尼采)填充图层是一种只承载纯色、渐变和图案的特殊图层,其特点是填充内容可以修改。另外,设置成不同的混合模式和不透明度后,可用于修改其他图层的颜色或生成图像混合效果。填充图层都…

我的注释那去了?

当我们用nuget引用三方库时,在类型,或类型成员上会有注释,如下图,是MySql官方包,command的ExecuteNonQuery的注释我们自己写一个类库项目CommentsLibrary,给类,构造函数,方法添加xml…

[原] jQuery EasyUI 1.2.6源码、Demo合集、离线API

下载地址: http://files.cnblogs.com/purediy/jquery-easyui-1.2.6.zip 兄弟版本: jQuery EasyUI 1.3.4 离线API、Demo jQuery EasyUI 1.3.2 离线API、Demo jQuery EasyUI 1.3.0 Demo合集、离线API、动态换肤 相信关注过jQuery UI 的大部分都查到过easyu…

ubuntu14安装python_ubuntu14.04 安装python3.7

下载源码:https://www.python.org/downloads/release/python-373/一、先安装需要的包zlib1g,libffisudo apt-get updatesudo apt-get install zlib1g-devsudo apt-get install libffi-dev二、在ubuntu上创建/usr/local/python3.7的目录,将压缩包放到该目…

CCNA第二章

第二章 交换机的基本概念和配置: Ethernet/802.3网络的关键要素: 载波侦听多路访问/冲突检测(CSMA/CD) CSMA/CD 仅用于集线器中常用的半双工通信。全双工交换机不使用 CSMA/CD。载波侦听:在 CSMA/CD 接入方法中&#x…

看书的一点小建议!

阅读本文大概需要6分钟。昨天看见小北写了一篇:「看书的一点小建议」,写的很不错,今天也分享一下自己看书的心得。其实不少读者问过我怎么看计算机经典大厚书、怎么看产品运营经典大厚书、怎么提高看书效率:电影教父里有台词&…

技巧:Excel用得好,天天没烦恼

全世界有3.14 % 的人已经关注了数据与算法之美Excel是Office三大神器当中最神秘、但也是最能提高你效率的工具了。而我们中的太多小伙伴,却一直把它当做是个“电子表格工具”。今天一起涨姿势,学会下面这些神技,你的Excel分分钟超过90%的同事…

操作数数据类型 char 对于 sum 运算符无效。_数据类型和运算符

数据类型和运算符1.进制1.1文件存储单位​ 任何数据在计算机中都是以二进制的形式存在的,二进制早期由电信号开关演变而来 。​ 一个电信号或者一个二进制位统称为Bit位,8个Bit位为一组组成一个字节Byte 。​ 一个bit位表示的数的范围:0和1​…

PHP excel文件导入至mysql中!

今天的项目需要一个导入excel文件到mysql的功能!折腾了很久,去网上也找到一大堆的帖子! 实现方式有几种: 1、使用扩展类库对excel文件进行操作!如:PHPExcel类包、phpexcelreader类文件(比较小巧&#xf…

我所理解的开源软件供应链安全

点击上方“开源社”关注我们| 作者:庄表伟| 编辑:钱英宇| 设计:谭嘉露| 责编:王玥敏1供应链与断供隐喻会帮助人,也会误导人。当我们谈到“供应链”时,会产生哪些联想?环环相扣?缺一不…

82 个代码案例实践,带你学好 Python 机器学习

全世界有3.14 % 的人已经关注了数据与算法之美如果村里通了网,那你一定知道【AI】人工智能。如果你会网上冲浪,那你一定看到过【ML】机器学习。小编在网上看到一个段子:ML派坐落美利坚合众山中,百年来武学奇才辈出,隐然…

Python进阶08 异常处理

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 本文特别感谢kylinfish的纠正,相关讨论见留言区。 异常处理 在项目开发中,异常处理是不可或缺的。异常处理帮助人们debug…

查询程序崩溃日志_PC 崩溃报告途径 amp; 临时解决方法

TC Sera (社区经理):你好!如果您在电脑游戏中遇到与 Nvidia 驱动程序相关的崩溃情况,请打开视频设置(Video Settings)中的诊断模式(Diagnostics Mode)并重新启动游戏。如果您遇到问题,请打包:%localappdata%\Gears5\Sa…

C# ConcurrentBag的实现原理

一、前言笔者最近在做一个项目&#xff0c;项目中为了提升吞吐量&#xff0c;使用了消息队列&#xff0c;中间实现了生产消费模式&#xff0c;在生产消费者模式中需要有一个集合&#xff0c;来存储生产者所生产的物品&#xff0c;笔者使用了最常见的List<T>集合类型。由于…

Linux里10个最危险的命令

全世界只有3.14 % 的人关注了数据与算法之美Linux命令行佷有用、很高效&#xff0c;也很有趣&#xff0c;但有时候也很危险&#xff0c;尤其是在你不确定你自己在正在做什么时候。推荐阅读Linux之父林纳斯自传《只是为了好玩》这篇文章将会向你介绍十条命令&#xff0c;但你最好…

arcgis xml 下载 切片_GIS开发:Arcgis的切片格式

常规的地图切片&#xff0c;存储在计算机的目录&#xff0c;一般都是以数字的模式&#xff0c;表现层级的文件夹名称&#xff0c;无外乎缩放等级(level)&#xff0c;横向的切片数(x),纵向的切片数(y)&#xff0c;例如下边的一个切片存放文件夹&#xff0c;按照level\y\x.jpg进行…

管理Apache服务器访问日志

管理Apache服务器访问日志 1&#xff0e;相关配置文件说明 一个优秀的Linux网络管理员会密切关注服务器日志系统&#xff0c;这些日志可以提供异常访问的线索。Apache可以记录所有的访问请求&#xff0c;同样&#xff0c;错误的请求也会记录。Apache配置文件中&#xff0c;需要…

《.NET内存管理宝典》在京东上架销售啦!

为什么要阅读本书正如本书第14章14.3节所提到的&#xff0c;如下类型的应用程序十分需要本书的知识。● 金融软件&#xff1a;特别是实时交易和所有需要基于大量各种数据以尽快得出答案的分析决策。● 大数据&#xff1a;虽然大数据通常都是批量、慢速处理&#xff0c;…

让你立刻爱上数学的10个算术游戏

全世界只有3.14 % 的人关注了数据与算法之美死理性派的小编经常会被问到的一个问题&#xff1a;数学到底哪里有趣了&#xff0c;数学之美又在哪里&#xff1f;这篇文章精心选择了 10 个老少咸宜的算术问题&#xff0c;以定理、趣题甚至未解之谜等各种形式带领大家窥探数学世界的…