2013-10-23 1 views
1

내 질문에 어리석은 질문이 생길 수 있지만, 하둡지도 축소를 처음 사용합니다. 그래서 그걸 알아내는 것이 어렵습니다.분산 캐시 파일 검색 문제

나는 K를 구현할 때 맵 축소 및 Cloudera CDH4 (4.1.1) 사용의 클러스터링을 의미합니다.
데이터는 x 및 y 좌표가있는 점으로 구성됩니다. 따라서, 모든 센도의 변화가 0.1 미만이 될 때까지 각 단계에서 중심점을 업데이트합니다.

그래서 첫 번째 반복을 위해, 나는 다음 반복

if (iteration == 0) { 
    Path hdfsPath = new Path(input + "/centroid.txt"); 
    DistributedCache.addCacheFile(hdfsPath.toUri(), conf); 
} else { 
    Path hdfsPath = new Path(again_input + "/part-00000"); 
    DistributedCache.addCacheFile(hdfsPath.toUri(), conf); 

를 사용하여 분산 캐시의 샘플 중심 파일을 넣어, 나는 첫 번째 반복의 출력과 동일하다 again_input 디렉토리를 가져 오는하고있는 I 새로 계산 된 중심을 저장했습니다.

그러나 매퍼는 첫 번째 반복을 위해 가져온 중심 파일을 다시 가져옵니다.

Path[] cacheFiles = DistributedCache.getLocalCacheFiles(job); 
BufferedReader cacheReader = new BufferedReader(new FileReader(cacheFiles[0].toString())); 

의심 1 : 분산 캐시 작업이 완료되면 모든 파일을 지 웁니다 않거나 그들을 계속 않습니다
다음 매퍼 클래스의 중심 파일을 가져올 수있는 코드는? 예 : centroid.txt는 반복 1 후에 지워집니다.

의심되는 파일 2 : 올바른 파일에 액세스하고 있습니까?

+0

centroid.txt이 .txt 파일이 업데이트 얻을 것이다 1 차 반복 후 다음 반복을 취소 것을 할 수 –

답변

0

이 경우 반복에서 Configuration 클래스 객체 conf을 재사용 하시겠습니까?

저는 그것이 문제라고 생각합니다. 두 번째 반복 작업의 분산 캐시에 모든 파일이 추가되었는지 확인할 수 있습니까?

당신은 경로를 통해 반복하여 [] 배열

Path[] cacheFiles;