我可以使用 DistributedCache 访问单个文件,但无法访问档案。在主要方法中,我将存档添加为
DistributedCache.addCacheArchive(new Path("/stocks.gz").toUri(), job.getConfiguration());
/stocks.gz 在 hdfs 中。在我使用的映射器中,
Path[] paths = DistributedCache.getLocalCacheArchives(context.getConfiguration());
File localFile = new File(paths[0].toString());
抛出异常,
java.io.FileNotFoundException: /tmp/hadoop-user/mapred/local/taskTracker/distcache/-8696401910194823450_622739733_1347031628/localhost/stocks.gz (No such file or directory)
我期待 DistributedCache 解压缩 /stocks.gz 并且映射器使用底层文件,但它会引发 FileNotFound 异常。
DistributedCache.addCacheFile 和 DistributedCache.getLocalCacheFiles 在传递单个文件时可以正常工作,但是传递存档不起作用。我在这里做错了什么?