2014-11-11 2 views
0

У меня есть большой файл json (350GB), и я пытаюсь импортировать его в коллекцию MongoDB, используя mongoimport.Mongoimport очень медленный, и я не уверен, сколько дней он примет ,mongoimport очень очень медленный для большого файла json

Может ли кто-нибудь предложить лучший способ загрузить этот json-файл в коллекцию mongodb. У меня достаточно места на диске для загрузки этого json-файла.

ответ

1

Я столкнулся с подобной ситуацией. Я использовал mongorestore вместо mongoimport, но идея такая же. iotop показывает, что процесс восстановления имел скорость ввода-вывода около 1 М/с, что довольно мало. Как и в случае 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 & 
... 
+0

Благодарим за обновление. Я буду использовать этот подход при создании дампа снова. Я использовал mongoimport, поскольку у меня был json-файл, а не файл bson для моей коллекции. Теперь эта коллекция не существует, поэтому я не могу создать дамп снова с помощью подхода chunks. Мне нужно найти способ разделить большой json-файл и загрузить его. Спасибо. – user3407386

0

Если вы используете MongoDB> 3.0.0 вы можете использовать --numInsertionWorkers на mongoimport команды
Установите это количество процессоров, у вас есть, чтобы SpeedUp импорт.
ref.

0

Используйте клиент GUI Studio3T-mongoChef, где импортирование JSON, дампа и т. Д. Просты, но быстрее.

 Смежные вопросы

  • Нет связанных вопросов^_^