
海量数据处理
文章平均质量分 56
li563868273
个人主页:lizhao.pw
展开
-
海量数据排序问题
问题:对于有9亿条不重复的11位整数对这个文件进行排序? 问题转换:一个移动公司的一个任务需要把9亿个11位电话号码进行排序? 对于转换之前的问题我们可能认为实用性不大,但是转换之后变成电话号码了这就有实用性了。 对于一些小伙伴来说可能一上来就马上思考把所有数据导入到内存中,然后使用我们常用的快速排序,归并排序等,最后将排序好的数据存入文件 。但是对于9亿条数据对于java来说一个int原创 2016-03-25 11:15:34 · 1085 阅读 · 0 评论 -
海量数据top K问题
在很多的大规模数据处理中,经常会遇到的一类问题就是在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这种问题被称为top K问题,例如在搜索引擎中,统计搜索搜索最热门的10个查询词或者统计下载率中下载最多的东西。 对于top K类 问题一般有两种方法: 1.分治+Trie树 2.hash+小顶堆 举例说明:有1亿个浮点数,如何找出其中最大的10000原创 2016-03-25 14:16:58 · 1142 阅读 · 0 评论 -
数据处理之Hash
Hash我们一般称为散列,它是以一种映射关系,即给定一个数据元素,其关键字为key,按一个确定的散列函数计算出hash(key),把hash(key)作为关键字Key对应元素的存储地址。 hash函数一般应具备以下几点: 1.运算应该尽可能简单 2.函数的值域必须在散列表的范围内。 3.尽可能的减少冲突。 通常我们有以下几种方法: 1。直接寻址法-无冲突 使原创 2016-03-25 15:30:16 · 524 阅读 · 0 评论 -
数据库优化
在大数据时代,数据都是被存储在数据库中,我们这里有一些对数据库优化的方法: 1。数据分区 在我们海量数据中,其中一种重要的方式就是如何有效地存储并降低需要处理的数据规模,所以可以对海量数据进行分区操作提高效率,例如按年份分区,按年进行分区。分区后我们可以减小磁盘I/O,减小了系统负荷,而且还可以将日志,索引也放到不同的分区下。 2。数据分表 我们可以对不同类型的数据比如id奇原创 2016-03-25 16:06:38 · 319 阅读 · 0 评论 -
Trie树
在我们海量数据处理中使用Trie树。 原理是使用字符串的公共前缀来减少时间开销,即空间换时间。优点:最大限度地减少无谓的字符串比较,查询效率比散列表高。典型应用用于统计和排序大量字符串,所以警察被搜索引擎系统用于文本词频统计。 Trie树一般有3个基本特性 1.根结点不包含字符,除根节点外每一个结点都只包含一个字符。 2.从根节点到某一节点,路径上经过的字符连接起来,为该结点原创 2016-03-26 15:17:28 · 317 阅读 · 0 评论 -
海量数据面试题整理(一)
1、给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 第一步:s 遍历文件a,对每个url求取hash(url)%1000,然后根据所取得的值将url分别存储到1000个小文件(记为a0,a1转载 2016-04-14 21:42:27 · 387 阅读 · 0 评论