2011-11-22 11 views
5
Azaltın

Amazon'un Elastik Harita Azaltmasında Pig komutumu (UDF'leri kullanan) çalıştırmaya çalışıyorum. UDF'lerimden bazı statik dosyaları kullanmam gerekiyor.Elastik Harita üzerinde Pig ile Dağıtılmış Önbellek Kullanma

benim UDF böyle bir şey yapmak: Ben Domuz işi yürütmeye Ancak

/path/to/myfile.txt benim s3 kovada dosyayı depolamış

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; 
    } 
} 

, ben amazon EMR hakkında domuz komut çalıştırırken nasıl, dağıtılmış do önbellek dosyaları:

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

Yani, benim sorum: bir istisna görüyor musunuz?

DÜZENLEME: Pig-0.9'un, pig-0.9'un getCacheFiles() adında bir işlevi olmadığı anlaşılmıştır. Amazon domuz-0.6 desteklemez ve bu yüzden dağıtılmış önbellek çalışması için farklı bir yol bulmaya ihtiyacım var 0,6

+0

Belki zaten biliyorsunuz, ama diğerleri için, Amazon şimdi Pig 0.6 ve 0.9.1'i destekliyor http://aws.amazon.com/elasticmapreduce/faqs/#pig-7 –

cevap

0

Bu ekstra argümanı Pig komut satırına eklemem gerektiğini düşünüyorum. dosya) kaydedildiği yere:

–cacheFile s3n://bucket_name/file_name#cache_file_name 

Sen İş akışını oluştururken "Ekstra Args" kutusuna eklemek gerekir.

+0

@ vivek-pandey Cevabım çözdünüz mü sorun? – cabad