【发布时间】:2013-05-06 08:04:47
【问题描述】:
我正在使用分布式缓存。但是执行代码后缓存中没有文件。 我提到了其他类似的问题,但答案并没有解决我的问题。
请在下面找到代码:
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));
这给出了 null..
在 mapper 中给出同样的东西,因此也会给出 null。请告诉我您的建议。
谢谢
【问题讨论】:
-
文件
File是否存在于HDFS中?此外,对 getLocalCacheFiles 的最终调用将在您的驱动程序代码中不起作用(但应该适用于您的映射器 - 我假设您仅将这一行作为示例显示)。在工作跟踪器 Web UI 中找到您工作的 job.xml 并回传mapred.cache.files的值 -
您可能想尝试更简单的 -files 选项。请在此处查看我的答案:stackoverflow.com/questions/16251788/…
-
感谢 getLocalCacheFiles 在驱动程序中不起作用的信息,我只是想测试一下。然而,在地图类中,它也给出了空值。现在我刚刚发现它与 DistributedCache.getCacheFiles(conf) 配合得很好。这是否意味着我可以使用 getCacheFiles(conf) 而不是 getLocalCacheFiles(conf)?你能告诉我这两者的区别吗?