网站大量收购独家精品文档,联系QQ:2885784924

JAVA大数据处理题.pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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⽆意义)进⾏,共需内存 内存

文档评论(0)

武松 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档