海量数据场景题--查找两个大文件的URL

查找两个大文件共同的URL

给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,找出 a、b 两个文件共同的 URL。内存限制是 4G。

  • 操作逻辑:

    • 使用哈希函数 hash(URL) % 1000​ 将每个URL映射到0-999的编号

      • 文件A切割为a0, a1, ..., a999​,每个约300MB;文件B同理切割为b0, b1, ..., b999​
    • 关键保证:
      相同URL必被哈希到同一编号的小文件。例如,URL "http://example.com"在文件A中分配到a42​,则在文件B中也必分配到b42​

      匹配规则:
      仅需比较同一编号的ai​与bi​,无需跨文件比较(如a3​只与b3​对比)

    • image

      `

  1. 为什么必须用哈希分治?直接排序再归并行吗?

    排序归并的瓶颈:
    直接排序需将320GB文件全部排序,归并时仍需多次I/O,总耗时比分治法更高

    • 哈希分治的优势:
      通过哈希值直接定位对应文件对,减少无效比较次数
  1. 哈希冲突会导致错误吗?

    不影响正确性:
    哈希冲突仅影响不同URL被分到同一文件,但匹配时通过精确比对HashSet中的原始URL可避免误判

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值