Sto tentando di eseguire il mio script Pig (che utilizza le UDF) su Amazon's Elastic Map Reduce. Ho bisogno di usare alcuni file statici all'interno delle mie UDF.Utilizzo della cache distribuita con Pig su mappa elastica Ridurre
faccio qualcosa come questo nel mio UDF:
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;
}
}
ho memorizzato il file nel mio secchio S3 /path/to/myfile.txt
Tuttavia, a correre il mio lavoro Maiale, mi vedi un'eccezione:
Got an exception java.io.FileNotFoundException: ./myfile.txt (No such file or directory)
Quindi, la mia domanda è: i file della cache come si usa distribuito durante l'esecuzione di script di maiale EMR di Amazon?
EDIT: Ho capito che pig-0.6, a differenza di maiale-0.9 non ha una funzione chiamata getCacheFiles(). Amazon non supporta pig-0.6 e quindi ho bisogno di capire un altro modo per ottenere il lavoro della cache distribuita in 0.6
Forse lo sai già, ma per altri Amazon ora supporta Pig 0.6 e 0.9.1 http://aws.amazon.com/elasticmapreduce/faqs/#pig-7 –