如何在分布式缓存中使用 MapReduce 输出
How to use a MapReduce output in Distributed Cache
假设我有一个正在创建输出文件的 MapReduce 作业 part-00000
并且在完成此作业后还有一个作业 运行。
如何将分布式缓存中第一个作业的输出文件用于第二个作业。
以下步骤可能对您有所帮助,
将第一个作业的输出目录路径传递给第二个作业的驱动程序
class.
使用路径过滤器列出以 part-*
开头的文件。请参考以下代码片段以了解您的第二份工作驱动程序 class、
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()));
}
假设我有一个正在创建输出文件的 MapReduce 作业 part-00000
并且在完成此作业后还有一个作业 运行。
如何将分布式缓存中第一个作业的输出文件用于第二个作业。
以下步骤可能对您有所帮助,
将第一个作业的输出目录路径传递给第二个作业的驱动程序 class.
使用路径过滤器列出以
part-*
开头的文件。请参考以下代码片段以了解您的第二份工作驱动程序 class、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())); }