Я пытаюсь запустить свой скрипт Pig (который использует UDF) на Amazon Elastic Map Reduce. Мне нужно использовать некоторые статические файлы из моих UDF.
Я делаю что-то вроде этого в своем 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;
}
}
Я сохранил файл в своем ведре s3 /path/to/myfile.txt
Однако при выполнении задания Pig я вижу исключение:
Got an exception java.io.FileNotFoundException: ./myfile.txt (No such file or directory)
Итак, мой вопрос: как использовать файлы распределенного кеша при запуске скрипта pig на EMR Amazon?
РЕДАКТИРОВАТЬ: Я понял, что pig-0.6, в отличие от pig-0.9, не имеет функции getCacheFiles (). Amazon не поддерживает pig-0.6, поэтому мне нужно придумать другой способ заставить работать распределенный кеш в 0.6.