0

この単純なコードを豚のスクリプトで実行しています。

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_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://" は適切に記述されています。

4

1 に答える 1

0

同じ Pig スクリプトで mongo-hadoop を使用して LOAD と STORE を実行すると、同様の問題が発生します。

投げる

java.net.UnknownHostException: localhost:27017 is not a valid Inet address
at org.apache.hadoop.net.NetUtils.verifyHostnames(NetUtils.java:587)
    at org.apache.hadoop.mapred.JobInProgress.initTasks(JobInProgress.java:734)
    at org.apache.hadoop.mapred.JobTracker.initJob(JobTracker.java:3890)
    at org.apache.hadoop.mapred.EagerTaskInitializationListener$InitJob.run(EagerTaskInitializationListener.java:79)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

私はこれ以上調査しませんでしたが、バグまたはロックに関連するパラメーターです。知らない。

同じコードを実行しても、別のスクリプトでロードおよび保存すると、問題なく実行されます。

于 2014-08-08T10:41:01.093 に答える