【问题标题】:Using Distributed Cache with Pig on Elastic Map Reduce在 Elastic Map Reduce 上使用分布式缓存和 Pig
【发布时间】:2011-11-22 12:19:37
【问题描述】:

我正在尝试在 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)

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

编辑:我发现 pig-0.6 与 pig-0.9 不同,它没有名为 getCacheFiles() 的函数。 Amazon 不支持 pig-0.6,所以我需要想办法在 0.6 中获得分布式缓存工作

【问题讨论】:

标签: hadoop apache-pig elastic-map-reduce


【解决方案1】:

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

–cacheFile s3n://bucket_name/file_name#cache_file_name

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

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多