我正在尝试使用带有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('', '')
答案 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,它没有工作
希望这有助于任何有类似问题的人!