我在一个pig脚本中执行这个简单的代码:
REGISTER /home/myuser/mongodb/mongo-2.10.1.jar
REGISTER /opt/cloudera/parcels/CDH-4.5.0-1.cdh4.5.0.p0.30/lib/mongo-hadoop-cdh4-1.2.0/mongo-hadoop-core_cdh4.3.0-1.2.0.jar
REGISTER /opt/cloudera/parcels/CDH-4.5.0-1.cdh4.5.0.p0.30/lib/mongo-hadoop-cdh4-1.2.0/mongo-hadoop-pig_cdh4.3.0-1.2.0.jar
set mapred.map.tasks.speculative.execution false;
set mapred.reduce.tasks.speculative.execution false;
col = LOAD 'mongodb://localhost:27017/mydb.mycollection' using com.mongodb.hadoop.pig.MongoLoader ('id:chararray, companyId:chararray, ts:chararray', 'id');
STORE col INTO 'mongodb://localhost:27017/mydb.mycollection2' USING com.mongodb.hadoop.pig.MongoInsertStorage ('', '');
它返回以下错误:
Location Config: Configuration: For URI: file:/tmp/temp449583595/tmp-109467318
2014-04-04 14:30:40,913 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2017: Internal error creating job configuration.
Details at logfile: /home/myuser/pig/pig_1396614639609.log
文件pig\ U 1396614639609.log的结尾:
... 在org.apache.hadoop.util.runjar.main(runjar。java:208)原因:java.lang.illegalargumentexception:uri格式无效。URI必须以mongodb://协议字符串开头。在com.mongodb.hadoop.pig.mongoinsertstorage.setstorelocation(mongoinsertstorage。java:159)位于org.apache.pig.backend.hadoop.executionengine.mapreducelayer.jobcontrolcompiler.getjob(jobcontrolcompiler。java:576)
... 还有17个
我不知道错误在哪里,所以mongodb协议字符串“mongodb://”写得很好。
1条答案
按热度按时间g6ll5ycj1#
在同一个pig脚本上使用mongohadoop运行load和store时,我遇到了类似的问题。
它抛出
我没有进一步调查,但要么是一个bug,要么是一些与锁定相关的参数。我不知道。
如果我运行相同的代码,但加载和存储在不同的脚本中,它运行起来没有问题。