DistributedCache无法访问存档

时间:2013-02-12 22:09:35

标签: hadoop

我可以使用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在传递单个文件时可以正常工作,但是传递存档不起作用。我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用绝对路径给予stocks.gz。

DistributedCache.addCacheArchive(new Path("<Absolute Path To>/stocks.gz").toUri(), job.getConfiguration());

答案 1 :(得分:0)