1

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

4

1 回答 1

0

你能尝试用绝对路径给stocks.gz。

DistributedCache.addCacheArchive(new Path("<Absolute Path To>/stocks.gz").toUri(), job.getConfiguration());
于 2013-02-13T06:36:52.270 回答