Импорт данных из HDFS в MongoDB с помощью mongoimport - PullRequest
3 голосов
/ 25 марта 2012

У меня есть набор файлов на HDFS. Могу ли я напрямую загрузить эти файлы в mongoDB (используя mongoimport), не копируя файлы из HDFS на мой жесткий диск.

Ответы [ 4 ]

1 голос
/ 16 декабря 2014

Вы пробовали MongoInsertStorage?

Вы можете просто загрузить набор данных, используя pig, а затем использовать MongoInsertStorage для выгрузки непосредственно в Mongo.Он запускает группу картографов, которые делают именно то, что упоминается в ответе Дэвида Грузмана на этой странице.Одним из преимуществ этого подхода является параллелизм и скорость, которые вы получаете благодаря одновременной вставке нескольких картографических изображений в коллекцию Mongo.

Вот краткий обзор того, что можно сделать с помощью pig

REGISTER mongo-java-driver.jar  
REGISTER mongo-hadoop-core.jar
REGISTER mongo-hadoop-pig.jar

DEFINE MongoInsertStorage com.mongodb.hadoop.pig.MongoInsertStorage();

-- you need this here since multiple mappers could spawn with the same
-- data set and write duplicate records into the collection
SET mapreduce.reduce.speculative false

-- or some equivalent loader
BIG_DATA = LOAD '/the/path/to/your/data' using PigStorage('\t'); 
STORE BIG_DATA INTO 'mongodb://hostname:27017/db USING MongoInsertStorage('', '');

Больше информации здесь https://github.com/mongodb/mongo-hadoop/tree/master/pig#inserting-directly-into-a-mongodb-collection

0 голосов
/ 25 марта 2012

Вы можете использовать mongoimport без аргумента --file и загрузить из stdin:

hadoop fs -text /path/to/file/in/hdfs/*.csv | mongoimport ...
0 голосов
/ 05 февраля 2013

Если говорить о больших данных, я бы посмотрел на масштабируемые решения.
У нас был похожий случай серьезного набора данных (несколько терабайт) в HDFS. Эти данные, хотя и с некоторыми преобразованиями, должны были быть загружены в Монго.
Мы разработали MapReduce Job, который работает с данными, и каждый картограф вставляет свои данные в mongodb через API.

0 голосов
/ 25 марта 2012

Храните ли вы файлы CSV / JSON в HDFS?Если это так, вам просто нужен какой-то способ сопоставления их с вашей файловой системой , чтобы вы могли указать mongoimport на файл.

В качестве альтернативы, mongoimport будет принимать данные из stdin, если файл не указан.

...