我正在使用DistributedCache。但是执行代码后,缓存中没有文件。 我已经提到了其他类似的问题,但答案并没有解决我的问题。未存储在分布式缓存中的文件
请找到下面的代码:
Configuration conf = new Configuration();
Job job1 = new Job(conf, "distributed cache");
Configuration conf1 = job1.getConfiguration();
DistributedCache.addCacheFile(new Path("File").toUri(), conf1);
System.out.println("distributed cache file "+DistributedCache.getLocalCacheFiles(conf1));
这给了空..里面映射给时
同样的事情也给了空,因此。请让我知道你的建议。
感谢
HDFS文件是否存在?此外,getLocalCacheFiles的最终调用在您的驱动程序代码中不起作用(但对于您的映射器 - 我假设您仅以此行为例)。在作业追踪器的Web UI中找到你的工作job.xml,并回传'mapred.cache.files'的值 – 2013-05-06 10:28:24
感谢getLocalCacheFiles在驱动程序中不起作用的信息,我只是试图测试。但是在map类中,它也给出了空值。现在我只是发现它可以很好地使用DistributedCache.getCacheFiles(conf)。 这是否意味着我可以使用getCacheFiles(conf)而不是getLocalCacheFiles(conf)? 你能告诉我两者之间的区别吗? – 2013-05-07 09:48:33
你可能想尝试-files选项,这是非常简单的。见我的答案在这里:http://stackoverflow.com/questions/16251788/distributed-caching-in-hadoop-file-not-found-exception/16271657#16271657 – 2013-05-06 10:50:12