如何在分布式缓存中使用MapReduce输出

时间:2015-05-13 20:13:45

标签: hadoop mapreduce distributed-cache

假设我有一个正在创建输出文件part-00000的MapReduce作业,并且在完成此作业后还有一个作业正在运行。

如何在第二个作业的分布式缓存中使用第一个作业的输出文件。

1 个答案:

答案 0 :(得分:3)

以下步骤可能会对您有所帮助,

  • 将第一个作业的输出目录路径传递给第二个作业的驱动程序 类。

  • 使用路径过滤器列出以part-*开头的文件。请参阅以下代码片段,了解您的第二个作业驱动程序类

        FileSystem fs = FileSystem.get(conf);
        FileStatus[] fileList = fs.listStatus(new Path("1st job o/p path") , 
                                   new PathFilter(){
                                         @Override public boolean accept(Path path){
                                                return path.getName().startsWith("part-");
                                         } 
                                    } );
    
  • 迭代每个part-*文件并将其添加到分发缓存中。

        for(int i=0; i < fileList.length;i++){ 
                 DistributedCache.addCacheFile(new URI(fileList[i].getPath().toUri()));
        }
    
相关问题