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

大数据比对去重,求方案

  •  
  •   buydomainus · 2022 年 9 月 26 日 · 1657 次点击
    这是一个创建于 1204 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有 2 份数据,

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

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

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

    8 条回复    2023-01-08 18:49:16 +08:00
    sadfQED2
        1
    sadfQED2  
       2022 年 9 月 26 日 via Android
    70×3×200000000/1024/1024/1024 ≈39G

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

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