我正在使用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