找出1T文件中的重复行(用单机和大数据的技术分别实现)

场景需求:

从1T文件中找出重复行,在这1T文件中只有两行数据是一样的,从单机跟大数据的视角如何解决这个问题?

单机思想:

假设你的计算机可用内存为500M,所以最少需要把这个文件拆成2000份来处理。怎么才能把相同的行放到一个文件中呢?这时我们可以采用  每行做hash,取得的值再对2000取模,即可以得到 值为 0 ~ 1999 的文件(2000个文件)。 

这里我们需要注意的是,不同行的hash值有可能相同;不同hash值行的模可能相同,但是相同行的hash值的模一定相同,所以相同的行一定会被放到一个文件中去,即文件名为 0 ~ 1999的文件。这个过程所需的时间计算怎么算呢?假设计算机的I/O为500M/s,把每行放到2000个文件理论上需要1*1000*1000/500 = 2000s 即30多分钟。

每一个文件是500M,依次读到内存中进行计算,最坏的复杂度是算到第1999个文件才找到相同的行,相当于全量I/O,需要2000s,即整个过程下来需要1个多小时。

大数据分布式思想:

假设你有2000台服务器,每台服务器的内存是500M,那么每台服务器处理500M数据即可。并行计算的话,对每台服务器的500M文件的每行进行hash值并对2000取模,每个服务器得到以0 ~ 1999 命名的文件,这个过程由于是并行计算的,只需要1s,再把2000台服务器的相同文件名的文件归类放到每一台服务器上假设I/O是500M/s,网卡是1000M的,传输速度是100M,则传输时间是5s,理论时间(2000台服务器并发传输),这样相同名的文件就到了一个服务器上,再对每个服务器的文件找相同的行,并行跑,由于I/O是500M,理论上需要1s即可,即整个过程不到10s

可是忽略了一个问题就是把这1T文件往2000台服务器分发的时间,假设网卡是千兆的,传输速度还是100M,则传输耗时:1000*1000/100 = 10000s是2.7小时

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值