使用mongoimport将数据从hdfs导入mongodb

qyyhg6bp  于 2021-06-21  发布在  Pig
关注(0)|答案(4)|浏览(501)

我有一套关于hdfs的文件。我可以直接将这些文件加载到mongodb(使用mongoimport),而不必将文件从hdfs复制到硬盘上。

nbewdwxp

nbewdwxp1#

如果我们谈论大数据,我会研究可扩展的解决方案。
我们在hdfs中也有类似的严重数据集(数TB)。这些数据,虽然经过一些转换后被加载到mongo中。
我们所做的是开发mapreduce作业,该作业运行数据,每个Map器通过api将其数据分割插入mongodb。

mrphzbgm

mrphzbgm2#

您是否在hdfs中存储csv/json文件?如果是这样,您只需要某种方法将它们Map到文件系统,这样就可以将mongoimport指向该文件。
或者,除非指定了文件,否则mongoimport将从stdin获取输入。

x8diyxa7

x8diyxa73#

你试过mongoinsertstorage吗?
您可以简单地使用pig加载数据集,然后使用mongoinsertstorage直接转储到mongo中。它在内部启动了一组Map程序,这些Map程序完全按照davidgruzman在本页的回答所提到的那样进行。这种方法的一个优点是,由于多个Map器同时插入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-直接进入mongodb集合

o7jaxewo

o7jaxewo4#

您可以使用mongoimport而不需要 --file 参数,并从stdin加载:

hadoop fs -text /path/to/file/in/hdfs/*.csv | mongoimport ...

相关问题