大数据比对去重,求方案

2022-09-26 12:04:11 +08:00
 buydomainus

有 2 份数据,

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

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

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

1193 次点击
所在节点    编程
8 条回复
sadfQED2
2022-09-26 15:28:19 +08:00
70×3×200000000/1024/1024/1024 ≈39G

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

1 、新业务带参,或 id 规则,这样不用管原来那 2 亿,直接筛出新数据就行;
2 、看怎么切数据,常见的按照天或某种分类做切片分区,只比对新增日或某细分分类下的数据,总量小了自然就快了;
3 、参考上面兄弟说的,常见的 sql 写出花,也不如内存、ssd 来的爽快。
zgl263885
2022-09-28 07:46:11 +08:00
每天增加的数据各自分片,自然就区分开了
buydomainus
2022-09-29 06:38:57 +08:00
golang 只用了 2m 就完成了对比。python 要 n 天的时间。
boshok
2023-01-08 18:49:16 +08:00
@buydomainus #7 同样的需求,求 golang 方案,多谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/882978

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX