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('', '');
4条答案
按热度按时间nbewdwxp1#
如果我们谈论大数据,我会研究可扩展的解决方案。
我们在hdfs中也有类似的严重数据集(数TB)。这些数据,虽然经过一些转换后被加载到mongo中。
我们所做的是开发mapreduce作业,该作业运行数据,每个Map器通过api将其数据分割插入mongodb。
mrphzbgm2#
您是否在hdfs中存储csv/json文件?如果是这样,您只需要某种方法将它们Map到文件系统,这样就可以将mongoimport指向该文件。
或者,除非指定了文件,否则mongoimport将从stdin获取输入。
x8diyxa73#
你试过mongoinsertstorage吗?
您可以简单地使用pig加载数据集,然后使用mongoinsertstorage直接转储到mongo中。它在内部启动了一组Map程序,这些Map程序完全按照davidgruzman在本页的回答所提到的那样进行。这种方法的一个优点是,由于多个Map器同时插入mongo集合,因此可以实现并行性和速度。
这里是一个粗略的削减什么可以做Pig
更多信息请点击此处https://github.com/mongodb/mongo-hadoop/tree/master/pig#inserting-直接进入mongodb集合
o7jaxewo4#
您可以使用mongoimport而不需要
--file
参数,并从stdin加载: