2011-11-22 14 views
5

AmazonのElastic Map ReduceでPigスクリプト(UDFを使用)を実行しようとしています。 私は自分のUDF内からいくつかの静的ファイルを使用する必要があります。Elastic Map ReduceでPigで分散キャッシュを使用する

私はUDFでこのような何かを:私は私の豚ジョブを実行する上で、しかし

/path/to/myfile.txt私のS3バケットにファイルを保存している

public class MyUDF extends EvalFunc<DataBag> { 
    public DataBag exec(Tuple input) { 
     ... 
     FileReader fr = new FileReader("./myfile.txt"); 
     ... 
    } 
    public List<String> getCacheFiles() { 
     List<String> list = new ArrayList<String>(1); 
     list.add("s3://path/to/myfile.txt#myfile.txt"); 
     return list; 
    } 
} 

、I例外参照:だから

Got an exception java.io.FileNotFoundException: ./myfile.txt (No such file or directory)

を、私の質問は:どのように私はAmazonのEMRに豚のスクリプトを実行するときにキャッシュファイルを配布し使用していますか?

EDIT:pig-0.9とは異なり、pig-0.6にはgetCacheFiles()という関数がありません。 Amazonはpig-0.6をサポートしていないので、分散キャッシュ処理を行うには別の方法を見つけ出す必要があります。

+0

多分あなたは既にそれを知っているかもしれませんが、他の人のためにAmazonはPig 0.6と0.9.1をサポートしています。http://aws.amazon.com/elasticmapreduce/faqs/#pig-7 –

答えて

0

この余分なargをPigコマンドライン呼び出しに追加することはうまくいくはずです(s3またはs3nあなたのファイルが格納されている場所):

–cacheFile s3n://bucket_name/file_name#cache_file_name 

あなたは、ジョブフローを作成するときに「エクストラArgsの」ボックスにそれを追加することができるはずです。

+0

@ vivek-pandey問題? – cabad

関連する問題