gpt4 book ai didi

hadoop - 在 Elastic Map Reduce 上将分布式缓存与 Pig 结合使用

转载 作者:可可西里 更新时间:2023-11-01 14:20:20 25 4
gpt4 key购买 nike

我正在尝试在 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 作业时,我看到一个异常:

出现异常 java.io.FileNotFoundException: ./myfile.txt (No such file or directory)

所以,我的问题是:在亚马逊的 EMR 上运行 pig 脚本时如何使用分布式缓存文件?

编辑:我发现 pig-0.6 与 pig-0.9 不同,它没有名为 getCacheFiles() 的函数。 Amazon 不支持 pig-0.6,所以我需要找出一种不同的方法来让分布式缓存在 0.6 中工作

最佳答案

我认为将这个额外的 arg 添加到 Pig 命令行调用应该可行(使用 s3 或 s3n,具体取决于文件的存储位置):

–cacheFile s3n://bucket_name/file_name#cache_file_name

您应该能够在创建作业流程时将其添加到“Extra Args”框中。

关于hadoop - 在 Elastic Map Reduce 上将分布式缓存与 Pig 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8226698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com