Tôi đang cố gắng chạy tập lệnh Pig của tôi (sử dụng UDF) trên Bản đồ đàn hồi của Amazon Reduce. Tôi cần sử dụng một số tệp tĩnh từ bên trong UDF của mình.Sử dụng Cache phân tán với Pig trên bản đồ đàn hồi Giảm
tôi làm điều gì đó như thế này trong UDF của tôi:
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;
}
}
tôi đã lưu trữ các tập tin trong xô s3 tôi /path/to/myfile.txt
Tuy nhiên, trên chạy việc Pig của tôi, tôi thấy một ngoại lệ:
Got an exception java.io.FileNotFoundException: ./myfile.txt (No such file or directory)
Vì vậy, câu hỏi của tôi là: làm thế nào để tôi sử dụng phân phối file cache khi chạy script lợn trên EMR amazon không?
EDIT: Tôi đã tìm ra rằng heo-0.6, không giống như pig-0.9 không có hàm gọi là getCacheFiles(). Amazon không hỗ trợ pig-0.6 và vì vậy tôi cần tìm ra cách khác để có được cache phân phối hoạt động ở 0.6
Có thể bạn đã biết điều đó, nhưng đối với những người khác, Amazon hỗ trợ ngay bây giờ Pig 0.6 và 0.9.1 http://aws.amazon.com/elasticmapreduce/faqs/#pig-7 –