buydomainus
V2EX  ›  编程

大数据比对去重,求方案

  •  
  •   buydomainus · Sep 26, 2022 · 1864 views
    This topic created in 1326 days ago, the information mentioned may be changed or developed.

    有 2 份数据,

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

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

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

    8 replies    2023-01-08 18:49:16 +08:00
    sadfQED2
        1
    sadfQED2  
       Sep 26, 2022 via Android
    70×3×200000000/1024/1024/1024 ≈39G

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

    1 、新业务带参,或 id 规则,这样不用管原来那 2 亿,直接筛出新数据就行;
    2 、看怎么切数据,常见的按照天或某种分类做切片分区,只比对新增日或某细分分类下的数据,总量小了自然就快了;
    3 、参考上面兄弟说的,常见的 sql 写出花,也不如内存、ssd 来的爽快。
    zgl263885
        6
    zgl263885  
       Sep 28, 2022 via iPhone
    每天增加的数据各自分片,自然就区分开了
    buydomainus
        7
    buydomainus  
    OP
       Sep 29, 2022
    golang 只用了 2m 就完成了对比。python 要 n 天的时间。
    boshok
        8
    boshok  
       Jan 8, 2023
    @buydomainus #7 同样的需求,求 golang 方案,多谢。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1147 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 23:05 · PVG 07:05 · LAX 16:05 · JFK 19:05
    ♥ Do have faith in what you're doing.