我能够使用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可以正常工作,但是传递文件不起作用。我在这里做错了什么?
最佳答案
您可以尝试使用绝对路径给stocks.gz吗?
DistributedCache.addCacheArchive(new Path("<Absolute Path To>/stocks.gz").toUri(), job.getConfiguration());