1
wangyanrui 2020-08-03 09:28:06 +08:00 1
假设一条数据假设 10KB, 全部加载也才 1GB 左右吧,现在普通电脑也都 16G 左右了,拿出来内存里面操作呗~
咋会运行几个小时~ 有点懵 |
2
fhsan 2020-08-03 09:32:00 +08:00 1
估计是顺序计算,找找并行方法,
|
3
pushback 2020-08-03 09:33:50 +08:00 1
你是不是批处理语句太长了
|
4
ghostviper 2020-08-03 09:34:29 +08:00 1
合并的逻辑你要先定义好;几个小时断开估计是 mongodb 的 connection 连接超时了;如果数据过大,你可以将 Field hash 以下利用 bloom filter 作为去重机制,放在内存或者 redis 很快就完了;另外不知道你合并逻辑是否耗时,如果耗时可以先标记再来查找合并
|
5
swulling 2020-08-03 09:53:18 +08:00 1
写一个简单的 Python 脚本:
1. 顺序读出所有数据的对应 Field,放入 Python 的 Dict,Key 为 Field 值,Value 为 ObjectID 2. 放入之前判断是否已经有对应的 Key,如果有,和对应的 ObjectID 的数据进行合并写回 MongoDB 即可。此处也可以不直接写回,而是将重复的 ObjectID 写到别的什么地方,最后再统一处理 百万条没有任何问题,估计内存也就消耗 1G 这个量级。而且怎么可能用几个小时,顺序读取速度可以拉满的 |
6
janxin 2020-08-03 09:53:57 +08:00 1
用 pymongo 操作过几百万数据,不至于几个小时没处理完啊...实在不行可以跑 MongoDB aggregate
|
7
CoderGeek 2020-08-03 09:58:07 +08:00
我觉得你们是在嗨 py 233
|
8
gnozix 2020-08-04 10:05:03 +08:00 1
aggregate 不能做吗?
|
9
libook 2020-08-05 11:33:05 +08:00 1
上千万数据做过遍历,没遇到过这个问题。。。
跑脚本的时候看一下数据库负载,用了聚合的话看看是不是需要 allowDiskUse,如果断开了看看脚本和数据库的日志,是不是需要调节一些超时时间。 另外 Python 脚本本身会不会因为资源不足而挂掉。 |
10
514146235 2020-08-10 16:56:15 +08:00
试一下 mongodb 的 mapreduce,应该很快就完成了。
|