簡體   English   中英

豬:與MongoInsertStorage一起存儲不起作用

[英]Pig: STORE with MongoInsertStorage don't work

我正在豬腳本中執行以下簡單代碼:

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的末尾:

... at 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://”是正確編寫的。

在同一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)

我沒有進一步調查,但是可能是錯誤或一些與鎖定有關的參數。 我不知道。

如果我運行相同的代碼,但是加載並存儲在不同的腳本中,則運行不會有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM