Estoy intentando ejecutar mi script Pig (que usa UDF) en Amazon's Elastic Map Reduce. Necesito usar algunos archivos estáticos desde mis UDF.Uso de la caché distribuida con Pig en Elastic Map Reduce
hago algo como esto en mi 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;
}
}
he guardado el archivo en mi cubo s3 /path/to/myfile.txt
Sin embargo, en el funcionamiento de mi trabajo cerdo, me ver una excepción:
Got an exception java.io.FileNotFoundException: ./myfile.txt (No such file or directory)
por lo tanto, mi pregunta es: archivos de caché ¿Cómo uso distribuye cuando se ejecuta la escritura de cerdo en EMR de Amazon?
EDIT: descubrí que pig-0.6, a diferencia de pig-0.9 no tiene una función llamada getCacheFiles(). Amazon no es compatible con pig-0.6, así que tengo que encontrar una forma diferente de obtener trabajo de caché distribuida en 0.6
Quizás ya lo sepa, pero para otros, Amazon ahora es compatible con Pig 0.6 y 0.9.1 http://aws.amazon.com/elasticmapreduce/faqs/#pig-7 –