我可以使用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在传递单个文件时可以正常工作,但是传递存档不起作用。我在这里做错了什么?
答案 0 :(得分:0)
您可以尝试使用绝对路径给予stocks.gz。
DistributedCache.addCacheArchive(new Path("<Absolute Path To>/stocks.gz").toUri(), job.getConfiguration());
答案 1 :(得分:0)