pigper无法将数据插入MongoDB

时间:2017-03-27 22:41:04

标签: mongodb hadoop apache-pig

我正在尝试使用带有PIG的MongoInsertStorage将文件从HDFS导入MongoDB。文件很大,大约5GB。当我使用

以本地模式运行脚本时,脚本运行正常
 pig -x local example.pig

但是,如果我在mapreduce模式下运行它,大多数映射器都会失败并出现以下错误:

 Error: com.mongodb.ConnectionString.getReadConcern()Lcom/mongodb/ReadConcern; 
 Container killed by the ApplicationMaster. 
 Container killed on request. 
 Exit code is 143 Container exited with a non-zero exit code 143

有人可以帮我解决这个问题吗?我也增加了分配给YARN容器的内存,但这没有帮助。

有些地图制作者也会在300秒后超时。

Pig Script如下

REGISTER mongo-java-driver-3.2.2.jar  
REGISTER mongo-hadoop-core-1.4.0.jar
REGISTER mongo-hadoop-pig-1.4.0.jar
REGISTER mongodb-driver-3.2.2.jar

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

SET mapreduce.reduce.speculative true
BIG_DATA = LOAD 'hdfs://example.com:8020/user/someuser/sample.csv' using PigStorage(',') As (a:chararray,b:chararray,c:chararray); 

STORE BIG_DATA INTO 'mongodb://insert.some.ip.here:27017/test.samplecollection' USING MongoInsertStorage('', '')

1 个答案:

答案 0 :(得分:0)

找到解决方案。

错误

Error: com.mongodb.ConnectionString.getReadConcern()Lcom/mongodb/ReadConcern; 
 Container killed by the ApplicationMaster. 
 Container killed on request. 
 Exit code is 143 Container exited with a non-zero exit code 143

我将JAR版本 - hadoopcore和hadooppig从1.4.0更改为2.0.2,将Mongo Java驱动程序从3.2.2更改为3.4.2。这消除了映射器上的ReadConcern错误! 对于超时,我在注册罐子后添加了这个:

SET mapreduce.task.timeout 1800000

我一直在使用SET mapred.task.timeout,它没有工作

希望这有助于任何有类似问题的人!