- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA⼤⼤数数据据处处理理题题
1. 给定a、b两个⽂件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b⽂件共 的url?
⽅案1:可以估计每个⽂件安的⼤⼩为50G×64=320G,远远⼤于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分⽽治
之的⽅法。
s 遍历⽂件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个⼩⽂件 (记为 )中。这样每个⼩⽂件的⼤约为300M。
s 遍历⽂件b,采取和a相 的⽅式将url分别存储到1000各⼩⽂件 (记为 )。这样处理后,所有可能相 的url都在对应的⼩⽂件 ( )中,不
对应的⼩⽂件不可能有相 的url。然后我们只要求出1000对⼩⽂件中相 的url即可。
s 求每对⼩⽂件中相 的url时,可以把其中⼀个⼩⽂件的url存储到hash_set中。然后遍历另⼀个⼩⽂件的每个url,看其是否在刚才构建的
hash_set中,如果是,那么就是共 的url,存到⽂件⾥⾯就可以了。
⽅案2 :如果允许有⼀定的错误率,可以使⽤Bloom filter,4G内存⼤概可以表⽰340亿bit。将其中⼀个⽂件中的url使⽤Bloom filter映射为这
340亿bit,然后挨个读取另外⼀个⽂件的url,检查是否与Bloom filter,如果是,那么该url应该是共 的url (注意会有⼀定的错误率)。
2. 有10个⽂件,每个⽂件1G,每个⽂件的每⼀⾏存放的都是⽤户的query ,每个⽂件的query都可能重复。要求你按照query的频度排序。
⽅案1:
s 顺序读取10个⽂件,按照hash(query %10的结果将query写⼊到另外10个⽂件 (记为 )中。这样新⽣成的⽂件每个的⼤⼩⼤约也1G (假
设hash函数是随机的)。
s 找⼀台内存在2G左右的机器,依次对 ⽤hash_ map(query, query_count 来统计每个query出现的次数。利⽤快速/堆/归并排序按照出现次数
进⾏排序。将排序好的query和对应的query_cout输出到⽂件中。这样得到了10个排好序的⽂件 (记为 )。
s 对 这10个⽂件进⾏归并排序 (内排序与外排序相结合)。
⽅案2 :
⼀般query的总量是有限的,只是重复的次数⽐较多⽽已,可能对于所有的query ,⼀次性就可以加⼊到内存了。这样,我们就可以采⽤trie
树/hash_ map等直接来统计每个query出现的次数,然后按出现次数做快速/堆/归并排序就可以了。
⽅案3 :
与⽅案1类似,但在做完hash,分成多个⽂件后,可以交给多个⽂件来处理,采⽤分布式的架构来处理 (⽐如MapReduce),最后再进⾏合
并。
3. 有⼀个1G⼤⼩的⼀个⽂件,⾥⾯每⼀⾏是⼀个词,词的⼤⼩不超过16字节,内存限制⼤⼩是1M。返回频数最⾼的100个词。
⽅案1:顺序读⽂件中,对于每个词x ,取 ,然后按照该值存到5000个⼩⽂件 (记为 ) 中。这样每个⽂件⼤概是200k左右。如果其中的有的
⽂件超过了1M⼤⼩,还可以按照类似的⽅法继续往下分,知道分解得到的⼩⽂件的⼤⼩都不超过1M。对 每个⼩⽂件,统计每个⽂件中出现
的词以及相应的频率 (可以采⽤trie树/hash_ map等),并取出出现频率最⼤的100个词 (可以⽤含100个结点 的最⼩堆),并把100词及相
应的频率存⼊⽂件,这样⼜得到了5000个⽂件。下⼀步就是把这5000个⽂件进⾏归并 (类似与归并排序)的过程了。
4. 海量⽇志数据,提取出某⽇访问百度次数最多的那个IP。
⽅案1:⾸先是这⼀天,并且是访问百度的⽇志中的IP取出来,逐个写⼊到⼀个⼤⽂件中。注意到IP是32位的,最多有 个 IP。 样可以采⽤
映射的⽅法,⽐如模1000,把整个⼤⽂件映射为1000个⼩⽂件,再找出每个⼩⽂中出现频率最⼤的IP (可以采⽤hash_ map进 ⾏频率统
计,然后再找出频率最⼤的⼏个)及相应的频率。然后再在这1000个最⼤的IP中,找出那个频率最⼤的IP,即为所求。
5. 在2.5亿个整数中找出不重复的整数,内存不⾜以容纳这2.5亿个整数。
⽅案1:采⽤2-Bitmap (每个数分配2bit,00表⽰不存在,01表⽰出现⼀次,10表⽰多次,11⽆意义)进⾏,共需内存 内存
您可能关注的文档
最近下载
- 传承与创新——中国近现代美术 课件-2024-2025学年高中美术人教版 (2019) 必修美术鉴赏.pptx VIP
- 【国联证券-2024研报】固态电池系列报告一:硫化物固态电池产业化提速.pdf VIP
- 医学知识一内分泌总论第八版.pptx
- WebOP Designer 程序下载方式.pptx
- 统编版高中语文选择性必修教材单元研习任务研究.pdf
- 内科学泌尿系统肾小球疾病概述课件.pptx VIP
- 守住光明照亮未来(预防近视主题班会)课件.pptx VIP
- 湘教版八年级地理上册练习题(全册,含答案).pdf VIP
- 辽宁机电职业技术学院职测考试题库(考前急训).docx
- 医院内科肾内科医生面试题及参考答案结构化面试题.docx VIP
文档评论(0)