大数据算法题(一)

分类:海量数据处理面试题

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

  首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到ip是32位的,最多有个2^32个ip。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,在找出每个小文件中出现频率最大的ip(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000个最大的ip中,找出那个频率最大的ip,即为所求。

或者如下阐述:

  算法思想:分而治之+Hash

1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理;

2.可以考虑采用“分而治之”的思想,按照IP地址的hash(ip)%1024,把海量IP日志分别存储到1024个小文件中。这样,每个小文件最多包含4MB个IP地址;

3.对于每个小文件,可以构建一个ip为key,出现次数为value的Hash map,同时记录当前出现次数最多的那个ip地址;

4.可以得到1024个小文件中的出现次数最多的ip,再依据常规的排序算法得到总体上出现次数最多的ip;

2.搜索引擎会通过日志文件把用户每次检索使用的所有的检索串都记录下来,每个查询串的长度是1-255字节;

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

第一步、先对这批海量数据预处理,在O(N)的时间内用Hash表完成统计。

第二步,借助堆这个数据结构,找出Top K,时间复杂度为Nlogk.

即,借助堆结构,我么可以在log量级的时间内查找和调整/移动。因此,维护一个K(该题目中是10)大小的小根堆,然后遍历300万的query,分别和根元素进行对比所以,我们最终的时间复杂度是:o(N)+n`*o(logk),(N为1000万,N·为300万)。

或者,采用trie树,关键字域存该查询串出现的次数,没有出现为0.最后用10个元素的最大堆来对出现的频率进行排序。

时间: 2024-11-06 19:06:16

大数据算法题(一)的相关文章

大数据算法摘录

大数据算法的摘抄 预处理 抽取 清洗 分析方法 聚合: 聚类类似于分类,但与分类的目的不同,是针对数据的相似性和差异性将一组数据分为几个类别.属于同一类别的数据间的相似性很大,但不同类别之间数据的相似性很小,跨类的数据关联性很低. 分类: 分类是找出数据库中的一组数据对象的共同特点并按照分类模式将其划分为不同的类,其目的是通过分类模型,将数据库中的数据项映射到摸个给定的类别中. 回归分析: 回归分析反映了数据库中数据的属性值的特性,通过函数表达数据映射的关系来发现属性值之间的依赖关系.它可以应用

大数据算法->推荐系统常用算法之基于内容的推荐系统算法

港真,自己一直非常希望做算法工程师,所以自己现在开始对现在常用的大数据算法进行不断地学习,今天了解到的算法,就是我们生活中无处不在的推荐系统算法. 其实,向别人推荐商品是一个很常见的现象,比如我用了一个好的商品,向朋友安利之类的.在以前广告系统不发达的时候,我们也是靠口口相传来进行商品的推广.那么为什么,现在推荐系统变的非常重要了呢?,在以前,我们的商品不像现在的物品一样琳琅满目,我们有时间,可以把商品都浏览一遍在进行选择,因为我们都想选择所有商品中最好的,而现在,由于资源的众多,我们不会用大把

SVM4TS (SVM for Time Series) 企业级SVM大数据算法运算平台

SVM4TS(SVM for Time Series)是一款基于SVM的大数据运行平台,支持大数据训练.模型产生.模型实例化.模型发布与上线.目前,SVM4TS是最优秀的商业大数据算法运行平台之一.STV4TS具有如下优点:(1)STV4TS更适合针对时间序列的机器学习计算,包括连续时间序列(如传感器数据)以及离散时间序列(如股票数据):(2)SVM4TS提供了数据分析.模型产生.模型升级.模型上线的全套解决方案,使用相对容易:(3)算法表现好,其算法的综合测评在众多框架中均名列前茅:(4)价格

大数据算法(一)亚线性算法

来源:大数据算法 王宏志 一.概述 大数据定义:在给定的资源约束下,以大数据为输入,在给定时间约束内可以生成满足给定约束结果的算法. 大数据特点:4V 大数据算法可以不是: 精确算法 内存算法 串行算法 仅在电子计算机上运行的算法 大数据算法不仅是: 云计算 MapReduce 大数据分析和挖掘的算法 难度: 访问全部数据时间过长 读取部分数据 亚线性算法 数据难以放入内存 将数据存储到磁盘上 外存算法 仅基于少量数据进行计算 空间亚线性算法 单个计算机难以保存全部数据 并行处理 并行算法 计算

平安陆金所java 大数据 算法 android开发

java工程师-互联网方向 工作职责 1 参与产品需求分析.网站系统的设计方案: 2 参与.协助项目组长共同完成或带领项目小组承担任务的系统功能设计和数据库设计 3 独立完成个人承担模块或项目的开发和测试 任职要求 重点大学本科及以上学历,计算机相关专业优先 有3年以上JAVA WEB开发工作经验:有高访问量,高负载网站系统开发经验者优先 1. 精通Java Core/数据结构及算法/J2EE/Struts2/WebWork 2/JSP/Servlet/Java TCP/IP Socket/Aj

[大数据算法] 当基本算法遇到大数据

大数据序列专题 1. 还有考虑海量数据处理的面试题 如10亿个整数,1G内存,找中位数 另外再网上搜类似 博客 <十道海量数据处理与十个方法大总结>http://www.cnblogs.com/cobbliu/archive/2012/08/24/2654368.html 2. 以后在做任何题目的时候需要去想,如果数据量大了怎么办,内存受限怎么办,总结得来的东西才是最宝贵的,走马观花只会做无用功

大数据算法

1.海量日志数据,提取出某日访问百度次数最多的那个IP. 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中.注意到ip是32位的,最多有个2^32个ip.同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,在找出每个小文件中出现频率最大的ip(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率.然后再在这1000个最大的ip中,找出那个频率最大的ip,即为所求. 算法思想:分而治之+Hash 1.IP地址最多有2^32=4

大数据算法 十大经典算法

一.C4.5 C4.5,是机器学习算法中的一个分类决策树算法, 它是决策树(决策树也就是做决策的节点间的组织方式像一棵树,其实是一个倒树)核心算法 ID3的改进算法,所以基本上了解了一半决策树构造方法就能构造它. 决策树构造方法其实就是每次选择一个好的特征以及分裂点作为当前节点的分类条件. C4.5相比于ID3改进的地方有: 1.用信息增益率来选择属性. ID3选择属性用的是子树的信息增益,这里可以用很多方法来定义信息,ID3使用的是熵(entropy,熵是一种不纯度度量准则), 也就是熵的变化

天翼杯大数据算法应用大赛感想

竞赛过去很久了,早就想写写感想与经历,可是一直拖着没写.今天终于有时间了,就写写吧. 竞赛题目是视频网站推荐,根据前七周每天用户对10个视频网站的访问次数数据以及其他上网行为,预测用户第八周对10个视频网站的访问量. 咋一看这是个时间序列预测问题,是啊,给出前49天用户访问数据,让你预测未来七天用户访问数据.这确实应该是个时间序列预测问题. 但我用时间预测算法模型Holt-Winter(3次指数平滑), ARIMA跑结果的时候,结果却并不是很好. 我后来分析了下数据,统计了七周每一周七天内用户对