나는 분산 캐시에 파일을 배치하는 것을 시도하고있다. MYFILE이 포함 된 URI/경로의DistributedCache 하둡 - FileNotFound
hadoop jar job.jar my.driver.class -files MYFILE input output
getCacheFiles()
과 getLocalCacheFiles()
반환 배열 :이 작업을 수행하기 위해 나는 -files 옵션을 사용하여 내 드라이버 클래스, 같은를 호출합니다. (예 : HDFS : //localhost/tmp/hadoopuser/mapred/staging/knappy/.staging/job_201208262359_0005/files/histfile#histfile)지도 작업에 MYFILE를 검색 할 때
불행하게도, 그것은을 던졌습니다 FileNotFoundException
.
당신이 원인 일 수 있습니다 뭔지 알아?
UPDATE :
다음 세 가지 라인 :
System.out.println("cache files:"+ctx.getConfiguration().get("mapred.cache.files"));
uris = DistributedCache.getLocalCacheFiles(ctx.getConfiguration());
for(Path uri: uris){
System.out.println(uri.toString());
System.out.println(uri.getName());
if(uri.getName().contains(Constants.PATH_TO_HISTFILE)){
histfileName = uri.getName();
}
}
인쇄 출력이 :
은cache files:file:/home/knappy/histfile#histfile
/tmp/hadoop-knappy/mapred/local/archive/-7231_-1351_105/file/home/knappy/histfile
histfile
따라서, 파일이 job.xml mapred.cache.files
속성에 나열 될 것으로 보인다 로컬 파일이있는 것 같습니다. 여전히 FileNotFoundException이 발생합니다. 작업의 XML에
당신은 업데이트에서 봐 주시기 바랍니다 수 있습니까? 그것은 아직도 당신의 URI/경로에서 파일을 가져 어떻게 파일 – Razvan
을 찾을 수 있습니까? –
예, 나는이 문제를 해결했다. 그 URI를 사용하여 인스턴스화 된 FS 인스턴스를 사용하여 URI에서 가져 오려고했습니다. 나는 로컬에 도착하려고 노력해야했다. 나는 결국했다. 그리고 그것은 지금 작동한다. 감사! – Razvan