我正在使用 hadoop DistributedCache,但我遇到了一些麻烦。我的 hadoop 处于伪分布式模式。
从这里我们可以看到在伪分布式模式下我们使用 DistributedCache.getLocalCache(xx) 来检索缓存文件。
首先,我将文件放入 DistributedCache:
DistributedCache.addCacheFile(new Path(
"hdfs://localhost:8022/user/administrator/myfile").toUri(),
job.getConfiguration());
然后在映射器设置()中检索,但DistributedCache.getLocalCache
返回null。我可以通过查看我的缓存文件
System.out.println("Cache: "+context.getConfiguration().get("mapred.cache.files"));
它打印出来:
hdfs://localhost:8022/user/administrator/myfile
这是我的伪代码:
public static class JoinMapper{
@Override
protected void setup(Context context){
Path[] cacheFiles = DistributedCache.getLocalCacheFiles(context
.getConfiguration());
System.out.println("Cache
:"+context.getConfiguration().get("mapred.cache.files"));
Path cacheFile;
if (cacheFiles != null) {}
}
}
xx....
public static void main(String[] args){
Job job = new Job(conf, "Join Test");
DistributedCache.addCacheFile(new Path("hdfs://localhost:8022/user/administrator/myfile").toUri(),
job.getConfiguration());}
抱歉排版不佳。请任何人帮助....
顺便说一句,我可以使用 uris
URI[] uris = DistributedCache.getCacheFiles(context
.getConfiguration());
uri 返回:hdfs://localhost:8022/user/administrator/myfile
当我尝试从 uri 中读取时,出现文件未找到异常的错误。