使用mongoimport将数据从HDFS导入MongoDB

使用mongoimport将数据从HDFS导入MongoDB,mongodb,hadoop,apache-pig,hdfs,mongoimport,Mongodb,Hadoop,Apache Pig,Hdfs,Mongoimport,我在HDFS上有一组文件。我可以直接将这些文件加载到mongoDB(使用mongoimport)中,而无需将文件从HDFS复制到硬盘。您是否在HDFS中存储CSV/JSON文件?如果是这样的话,您只需要使用某种方式将mongoimport指向该文件 或者,除非指定了文件,否则mongoimport将从stdin获取输入。您可以使用mongoimport而不使用--file参数,并从stdin加载: hadoop fs -text /path/to/file/in/hdfs/*.csv | mon

我在HDFS上有一组文件。我可以直接将这些文件加载到mongoDB(使用mongoimport)中,而无需将文件从HDFS复制到硬盘。

您是否在HDFS中存储CSV/JSON文件?如果是这样的话,您只需要使用某种方式将mongoimport指向该文件


或者,除非指定了文件,否则mongoimport将从stdin获取输入。

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

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

如果我们谈论大数据,我会研究可扩展的解决方案
我们在HDFS中也有类似的严重数据集(数TB)。这些数据虽然经过了一些转换,但还是要加载到Mongo中

我们所做的是开发MapReduce作业,它运行数据,每个映射器通过API将其数据分割插入mongodb。

您尝试过MongoInsertStorage吗

您可以简单地使用pig加载数据集,然后使用MongoInsertStorage直接转储到Mongo中。它在内部启动了一组映射程序,这些映射程序完全按照大卫·格鲁兹曼(David Gruzman)在本页的回答中提到的方式进行。这种方法的优点之一是,由于多个映射器同时插入Mongo集合,因此可以实现并行性和速度

这是一个关于猪可以做什么的粗略划分

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('', '');
更多信息请点击此处

我们可以直接将包含CSV的文件夹放入大数据加载中吗?或者我们需要循环吗?@user3270763不需要循环