Amazon の Elastic Map Reduce で Pig スクリプト (UDF を使用) を実行しようとしています。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)
そこで、私の質問は、Amazon の EMR で pig スクリプトを実行するときに、分散キャッシュ ファイルをどのように使用すればよいですか?
編集: pig-0.9 とは異なり、pig-0.6 には getCacheFiles() という関数がないことがわかりました。Amazon は pig-0.6 をサポートしていないため、0.6 で分散キャッシュを機能させる別の方法を見つける必要があります。