使用-jsonArray时mongoimport的速度非常慢

时间:2015-01-11 07:13:00

标签: json performance mongodb import bson

我有一个超过25百万行的15GB文件,这是json格式(mongodb接受导入:

[
    {"_id": 1, "value": "\u041c\..."}
    {"_id": 2, "value": "\u041d\..."}
    ...
]

当我尝试使用以下命令在mongodb中导入它时,我的速度只有每秒50行,这对我来说真的很慢。

mongoimport --db wordbase --collection sentences --type json --file C:\Users\Aleksandar\PycharmProjects\NLPSeminarska\my_file.json -jsonArray

当我尝试使用python和pymongo将数据插入集合时,速度更差。我也尝试提高流程的优先级,但它没有任何区别。

我尝试的下一件事情是同样的事情,但没有使用-jsonArray,虽然我的速度有了很大的提升(~4000 /秒),但它说所提供的JSON的BSON表示太大了。

我还尝试将文件拆分为5个单独的文件,并将它们从不同的控制台导入到同一个集合中,但我将所有文件的速度降低到大约20个文档/秒。

当我在网上搜索时,我看到人们的速度超过8K /秒,我无法看到我做错了什么。

有没有办法加快这个速度,或者我应该将整个json文件转换为bson并以这种方式导入它,如果是这样,那么转换和导入的正确方法是什么?

非常感谢。

1 个答案:

答案 0 :(得分:2)

我对160Gb转储文件有完全相同的问题。我花了两天时间用1.9.3加载原始文件的3%,用这些更改加载15分钟。

首先,删除最初的neo4j 1.9.3和尾随-jsonArray字符:

[

然后在没有]选项的情况下导入:

sed 's/^\[//; s/\]$/' -i filename.json

如果文件很大,-jsonArray将花费很长时间,可能会遇到存储问题。你可以使用这个C程序(不是我写的,所有的荣耀都归于@guillermobox):

mongoimport --db "dbname" --collection "collectionname" --file filename.json

P.S。:我没有权力建议移植这个问题,但我认为这可能会有所帮助。