大数据和空间限制问题

(一).只用2GB内存在20亿个整数中找到出现次数最多的数

【题目】有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数。

【分析】通过哈希表对20亿个整数进行词频统计。哈希表的key是32位的整数,value最坏打算是20亿个(4B)所以一条<k,v>记录是8B。

最多20亿条记录,需要的内存远超于2GB!一条记录需要8B存储,当哈希表的记录数为2亿个时,至少需要1.6GB的内存! 

【解决方法】把包含20亿个整数的大文件通过哈希函数分流为16小文件,根据哈希函数的基本性质,相同的整数必将被分配到同一小文件,并且只要哈希函数足够优秀,得到哈希值均匀,那么所有小文件最坏打算也不超过2亿个整数,这时候在符合内存要求的情况下通过哈希表进行词频统计,最终将每个小文件出现最多的词频进行比较,最终得出总的结论。 


(三).40亿个非负数整数中找到没出现的数

【题目】32位无符号整数范围0~4294967295,现在有一个正好包含40亿个整数的文件,所以整个范围中必然有没有出现的数。可以使用最多1GB的内存,怎么找到所有没出想过的数。

【分析】如果用哈希表存储,40亿条记录,40亿*4B 约等于16GB!所以考虑用bitmap模型!2^32位 =512MB,符合内存要求!当出现7000时,在arr[7000]处赋值为1,以此类推,将40亿个整数遍历处理! 当处理完成之后,在遍历一次,arr[i]==0的下标即为没有出现过数的值! 

【题目】内存限制为10MB,但是只用找到一个没有出现过的数即可。

【分析】考虑512/64 =8MB,8MB符合内存要求。所以将2^32个分为64个区间。由题目可知必然有区间计数不足2^32/64

如何找出计数不足的区间呢? 通过取模方法,遍历40亿个整数,将整数落在某个区间上对计数变量加一,最终遍历完后随意取出一个区间进行关注。假设文件a中的数据个数不足2^32/64个,那么这里面必然有没出现的。


再遍历40亿个数,对这40亿个数只关注落在取出区间的整数。并且用bitmap统计出区间内的数出现的情况。

总结:

(1)根据内存限制决定区间大小,32位无符号整数2^32=42亿个,哈希表存储的话2^32=512MB

(2)而允许区间为10MB,所以要对数据hash分块,512/64=8<10,所以要分成64块。


(四).找到100亿个URL中重复的URL

【题目】有一个包含100亿个URL的大文件,假设每个URL占用64B,请找出其中所有重复的URL。

【分析】bitmap使用于给定范围,这样可以固定bit类型数组的大小!此题URL不能固定范围,所以使用哈希函数的分流功能。哈希函数有一个重要性质:同一个输入值将产生同一个哈希值,最终在哈希表中的分布地址也必然相同,利用该性质,我们常常在处理大数据问题时由于空间不够,把大文件通过哈希函数分配到机器,或者通过哈希函数把大文件划分成小文件,一直划分,直到划分的结果满足资源限制的要求。

(四).百亿词频统计

【补充题目】某搜索公司一天的搜索词汇是海量的(百亿级数据量),请设计出一种每天最热top100词汇的可行方法

【分析】先用哈希函数把百亿数据分流到不同服务器中,如果分流到的数据过大,继续把大文件通过哈希函数分流为子文件。在子文件中用哈希表统计每种词及其词频。遍历哈希表时使用大小为100的最小堆来选出每个小文件的Top100(整体未排序),再将每个小文件词频的最小堆排序,得到每台机器的Top100。再用每台机器的Top100进行外排序,最终求得整个百亿数据量的top100。 
这里写图片描述

【注意】对于Top100来说,除了哈希函数和哈希表做词频统计外,还常用堆结构和外排序的手段进行处理。

用最小堆:起初前100个条数据建立最小堆,堆顶肯定是词频最低的那条,第101条记录过来时和堆顶比较,如果比堆顶小直接pass,反之替换堆顶,重新维持最小堆性质。也就是说堆顶为截止当前位置,词频第100位的那条记录,新记录只要和堆顶比较即可。



(五).40亿个非负整数中找到出现俩次的数

【分析】bitmap模型变形,申请一个2^32 *2长度的bit数组进行操作。

【补充题目】可以使用最多10MB的内存,怎么找到这40亿个整数的中位数!

【分析】用分区间的方式进行处理,长度为2MB的无符号整数数组占用内存空间为8MB。所以将区间数量定义为2^32/2M ,向上取整为2148个区间。 
遍历40亿个整数,对每个整数进行遍历,得到每个区间的整数个数(不需要进行词频统计)!假设0~k-1的区间为19.998亿,加上k区间的话肯定就超过20亿,所以中位数在k区间上!

申请2MB长度的数组(占用内存为8MB),遍历40亿整数对K区间的数进行词频统计,最后在区间k上找到第0.002亿个数即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大 数 据 的 局 限 性 石文亮 摘要 : 随着大数据技术的发展, 大数据技术帮助人们改善生活, 提高生活品质, 给社会带来了巨大改变。但是大数据本身的 局限性限制大数据技术的发展。本文从大数据的收集、 处理以及大数据的传输和存储的安全性这几方面分析了大数据的局 限性: 大数据的收集存储存在难度, 需要解决高效存储碎片非结构化的数据类型、 数据基数大, 数量实时增加、 存储难度大、 时 效性短等问题大数据的处理存在难度, 需求解决数据的处理技术门槛高、 数据噪音多、 资源消耗大、 数据的不确定性导致后期 学习预测难度高的问题大数据信息内容丰富, 价值高, 极易成为网络黑客的攻击目标, 对于高敏数据, 需要安全性高的网络传 输条件和存储条件。 关键词 : 大数据;局限性;有效利用大数据 中图分类号: F49 文献标识 码 :A 作者单位: 江西财经大学软件与物联网工程学院 一夜 之 间 , 我们就来到了大数据时代, 大数据这个被神 化的技术仿佛无所不能。 其实作为一项发展时间并不长的技 术 , 虽然它发展非常快, 但是不可忽视的是大数据实际上并 没 有 那 么 " 神" 。它拥有的一些特性的确能够解决特定的问 题 , 在某些领域大显神通, 但同时我们也应该理性看待新技 术 , 正视其局限性。《 哲学新视野》 一书中有这样的描述: " 某 些观念有时会以惊人的力量给知识带来巨大的冲击。由于这 些观念能一下子解决许多问题, 所 以 , 它们似乎将有希望解 决所有的基本问题, 澄清所有不明了的疑点。每个人都想迅 速地抓住它们。" 充满热度的大数据技术, 人人都想去触碰 它 , 却往往不能很好地驾驭它。笔者认为只有正确认识到大 数据的优势和待发展的地方,才能够更好发掘它的潜力, 发 挥它的价值,更好地使用它服务于人们。 一、 大数据收集存储存在难度 从大数据获取的广度层面上来说, 目前主要面临的问题 是无纸化存储盛行, 文件数量和种类不断增多、 非结构化的 信息种类繁多、 信息存在时效性。 ( 一 ) 数 据 碎 片 化 难 以 存 储 数据的非结构化给存储带来难度,传统的数据都具有一 定的数据结构, 能够被存储在普通的关系性数据库中, 然而 随着数据源的不断扩大, 数据呈现出非结构性特征。 例 如 , 随 着传感器的小型化和智能化, 往往一部智能手机就加入了气 压传感器、 温度传感器、 磁场感知传感器。 这些给人们带来方 便的科技发展却也着实为大数据的发展带来了困难。 这些非 结构性数据通常拥有更为丰富详细的知识, 却也带有更多的 数据噪音, 为数据的分析和清洗带来了很大困难。此时开发 非关系数据库, 建立更为完善的架构尤为重要。 ( 二 ) 数 据 时 效 性 难 以 保 证 数据的时效性往往影响数据是否能尽其用。 按照时间来 分,数据可分为老数据和新数据。具有一定时间跨度的仍有 利用价值的数据, 往往具有分析和预测趋势的价值;对于新 数据来说, 现时性使其具有应用的价值, 所得需要马上转化 为应用,新数据不一定都能转化为具有研究价值的老数据, 它 的现实价值往往随着时间的流逝而消失。 大数据的时效性使 其并不能得到最大效用, 达到最大的效率。 例 如 , 用于探测地 震和海啸的传感器所产生的数据时效一般都在秒级, 要求在 秒级的时间内迅速将灾害信息转化为御灾措施。 美国国家海 洋局利用超级计算机处理海底布设的传感器信息, 在日本震 后 9 分钟能预测接下来是否会有海啸以及海啸的强度。 短短 的 9 分钟看起来不长, 却是每一个宝贵的生命难以承受的时 间。 基于大数据的实时营销就要求对于目标用户的信息进 行实时掌握, 即使营销信息做的多么符合客户的需求, 一旦 潜在的营销客户离开视线, 那么营销就收不到效果, 这样的 营销就属于无效营销。 大数据的时效性要求对数据的实时采 集 , 实时加工, 实时分发出去。" 1 秒 定 律 ( Velocity) " , 即要求 数据的有效性都在秒级的范围内, 在这个时间范围里, 大数 据处理设备需要计算大量数据, 进行数据处理、 分 析 , 最后将 利用得出的答案投入生产活动中。 然 而 , 现实生活中, 受制于 技术的局限性, 上述场景很难做到, 一 定程度上限制了大数 据技术的应用和发展。 二、 大数据处理存在难度 (一 ) 大 数 据 处 理 设 备 要 求 高 大数据处理技术门槛较高。 从大数据的加工深度层面来 说 , 除了要处理的数据本身基数重大, 同时现实网络空间之 中还在无时无刻产生大量的新数据, 这对传统计算平台产生 了巨大的挑战, 因此, 为了处理海量的数据, 往往需要搭建专 业 、 稳定的计算集群进行处理, 从而也限制了大多数企业进 行大数据方面研究的进场资格。
"看见"大数据 作者:暂无 来源:《计算机世界》 2014年第42期 如何让企业更直观地了解大数据产品的价值和使用体验,为企业大数据采购决策提供参考,这成为IT 供应商不得不面对的问题。 本报记者 宋辰 大数据可以帮助电信运营商及时发现正在观看流媒体的用户是否掉线,并及时予以处理;帮助商家实时了解消费者刚刚在什么地方上了什么网、买了什么东西、做了哪些交易;也可以帮助电厂更合理地规划设计风力发电的电塔安放位置,为新建电网提供更高的能效比。 毋庸置疑,大数据时代已经汹涌而至。据IDC 预计,到2020 年,数字宇宙规模将超出预期,达到40 ZB,其中80% 为非结构化数据。在业内,来自IBM 今年发布的全球调研白皮书《分析:价值的蓝图》显示,24% 的CEO 和COO 提倡使用大数据分析,该比例较2012 年增长了10%。但是,大数据不是静态的,而是海量的、快速变化的数据,如何让潜在受益者在尽量接近真实的模拟演示环境中,更直观地感受到大数据的魅力? IBM 与神州数码进行了全新的尝试,合作成立神州数码IBM 产品解决方案演示中心。据了解,该中心占地70 平方米,可容纳20 人的中小团队工作。在演示中心记者看到,这里使用的是IBM 统一风格装修,外观零布线,保证了中心内操作的简便与高效性。 作为IBM 大数据与分析产品的重要演示基地,演示中心可以通过模拟客户环境,演示产品功能,解析产品参数信息帮助用户了解IBM 大数据产品的价值。Streams能够帮助企业利用端到端的交易关联实时定位问题数据源,实现异常或者不完整数据的发现报警机制;PureData 数据仓库为使用者提供了预先优化、开箱即用的分析功能,帮助使用者在快速的分析查询、极少的持续优化操作以及价值的快速实现等方面改进分析流程。中心配备的Cognos商业智能,则赋予了用户不受限制的商业智能使用空间,使得用户通过一个仪表板样式的界面就能组装与个性化分析信息,并与信息进行交互。同时,演示中心还有专门的技术人员现场解答疑问,并传授实用技巧。 IBM 软件集团大中华区信息管理总经理卢伟权表示:"这次的解决方案演示中心建设作为双方创新的合作形式,在帮助合作伙伴及客户提升技术实力、实践大数据价值、赢得市场竞争方面具有非比寻常的意义。" 据悉,神州数码将于2014 年在北、上、广、深四地建立4 个演示中心,预计到明年在全国扩建到18 个,为各个区域用户体验IBM 产品解决方案提供便利。 神州数码IBM 业务本部软件事业部总经理王炜表示:"演示中心为客户提供了一个模拟环境,能更直观地让客户看到最终的运行状况是什么样的, 便于他们找出弊端。与此同时,我们也可以有的放矢地进行修改,将服务做得更好。" 演示中心也是一个合作伙伴应用的孵化中心。"随着SaaS 业务、网络时代的来临,应用和推广越来越适用于各种场景。神州数码会去帮助一些有技术能力的小规模企业,帮助它们孵化应用,鼓励他们在IBM 的业务上进行应用开拓,神州数码也会借助自己的力量推广这些孵化好的应用。日积月累,良性循环,我们将构建一个良好的生态系统,更好地为客户解决实际工作中问题。" 王炜补充道。 "看见"大数据全文共1页,当前为第1页。 "看见"大数据全文共1页,当前为第1页。 "看见"大数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值