V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
buydomainus
V2EX  ›  编程

大数据比对去重,求方案

  •  
  •   buydomainus · 2022-09-26 12:04:11 +08:00 · 1148 次点击
    这是一个创建于 780 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有 2 份数据,

    A 有 2 亿数据,单行不超过 70 字符。

    B 包含 A 的所有数据,并在此基础上每日增加 20 万左右。

    如何快速的得到增加的 20 万数据。

    8 条回复    2023-01-08 18:49:16 +08:00
    sadfQED2
        1
    sadfQED2  
       2022-09-26 15:28:19 +08:00 via Android
    70×3×200000000/1024/1024/1024 ≈39G

    找台 64g 内存的服务器,直接建一个 map ,把第一份数据加载到内存中,然后遍历第二份数量。完事
    buydomainus
        2
    buydomainus  
    OP
       2022-09-26 19:03:23 +08:00
    @sadfQED2 Thx.
    不过这个方案应该不需要不少时间哈。
    buydomainus
        3
    buydomainus  
    OP
       2022-09-26 19:03:55 +08:00
    @buydomainus 打错,应该需要不少时间。
    sadfQED2
        4
    sadfQED2  
       2022-09-27 09:27:16 +08:00 via Android
    @buydomainus On 的时间复杂度,你难道还有本身搞成 O1 的复杂度不成。主要时间受限于磁盘 io
    Maxwe11
        5
    Maxwe11  
       2022-09-27 18:56:38 +08:00
    想快速比对的最简单无非是缩小数据量,看那新增的 20 万是怎么来的,从哪里来;

    1 、新业务带参,或 id 规则,这样不用管原来那 2 亿,直接筛出新数据就行;
    2 、看怎么切数据,常见的按照天或某种分类做切片分区,只比对新增日或某细分分类下的数据,总量小了自然就快了;
    3 、参考上面兄弟说的,常见的 sql 写出花,也不如内存、ssd 来的爽快。
    zgl263885
        6
    zgl263885  
       2022-09-28 07:46:11 +08:00 via iPhone
    每天增加的数据各自分片,自然就区分开了
    buydomainus
        7
    buydomainus  
    OP
       2022-09-29 06:38:57 +08:00
    golang 只用了 2m 就完成了对比。python 要 n 天的时间。
    boshok
        8
    boshok  
       2023-01-08 18:49:16 +08:00
    @buydomainus #7 同样的需求,求 golang 方案,多谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1372 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:43 · PVG 01:43 · LAX 09:43 · JFK 12:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.