【发布时间】:2014-11-11 18:29:59
【问题描述】:
我有一个大的 json 文件 (350GB),我正在尝试使用 mongoimport 将其导入 MongoDB 集合中。mongoimport 非常慢,我不确定需要多少天。
任何人都可以建议将此 json 文件加载到 mongodb 集合的最佳方法。我有足够的磁盘空间来加载这个 json 文件。
【问题讨论】:
标签: mongoimport
我有一个大的 json 文件 (350GB),我正在尝试使用 mongoimport 将其导入 MongoDB 集合中。mongoimport 非常慢,我不确定需要多少天。
任何人都可以建议将此 json 文件加载到 mongodb 集合的最佳方法。我有足够的磁盘空间来加载这个 json 文件。
【问题讨论】:
标签: mongoimport
我遇到过类似的情况。我使用mongorestore 而不是mongoimport,但想法是一样的。 iotop 显示恢复过程的 IO 速率约为 1M/s,非常低。作为other post here suggests,性能低可能是由于json到bson的序列化。所以我最终使用以下命令将导出的 json 文件分成不同的块
mongodump --host < host > --port < port > --username < user > --password < pwd > --authenticateionDatabase admin --db < db > --collection < coll > --query "{DayOfWeek:"Monday"}" --out "SomeDir-Monday" &
mongodump --host < host > --port < port > --username < user > --password < pwd > --authenticateionDatabase admin --db < db > --collection < coll > --query "{DayOfWeek:"Tuesday"}" --out "SomeDir-Tuesday" &
...
然后我最终得到了 7 个块。 最后使用 mongorestore 和以下命令并行导入这些块。
mongorestore --host < host > --port < port > --username < user > --password < pwd > --authenticateionDatabase admin --db < db > --collection < coll > PATH_TO_MONDAY.json &
mongorestore --host < host > --port < port > --username < user > --password < pwd > --authenticateionDatabase admin --db < db > --collection < coll > PATH_TO_TUESDAY.json &
...
【讨论】:
如果您使用的是 mongodb > 3.0.0,您可以在 mongoimport 命令上使用--numInsertionWorkers
将此设置为您拥有的 CPU 数量以加快导入速度。
ref.
【讨论】:
使用 Studio3T-mongoChef GUI 客户端,其中导入 JSON、转储等既简单又快速。
【讨论】: