Я пытаюсь запустить свой сценарий Pig (который использует UDF) на Amazon Elastic Map Reduce.
Мне нужно использовать некоторые статические файлы из моих пользовательских функций.
Я делаю что-то подобное в моем 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