2017-02-07 1 views
0

일부 변경 사항과 함께지도 축소 프로젝트에서 "단어 수 계산"과 같은 작업을하고 있습니다. 프로그램을 실행하면 많은 경우 파일을 처리 할 수 ​​있습니다. 각지도를 파일 중 하나를 가지고 내가 사용하려고이MapReduce에서 입력 파일을 개별적으로 처리하십시오.

"나는 다른 파일 출력에서 ​​독립적 인 파일의 출력을 원하는"다른 사람으로부터 분리 처리 :

Path filesPath = new Path("file1.txt,file2.txt,file3.txt"); 

MultipleInputs.addInputPath(job, filesPath, TextInputFormat.class, Map.class); 

하지만 출력 I을 모든 파일 출력을 함께 혼합하는 것입니다. f 단어가 파일보다 많게 나타나고, 한 번 처리되고, 내가 원하지 않는 단어. 각 파일의 단어 수를 구분하고 싶습니다.

그래서 어떻게 사용할 수 있습니까?

파일을 디렉터리에 저장하면 독립적으로 처리됩니까?

답변

0

Hadoop의 map-reduce 작동 방식입니다. 모든 파일은 함께 병합되고, 정렬되며, 키에 의해 동일한 키를 가진 모든 레코드가 매퍼로 보내집니다.

하나의 매퍼가 하나의 파일 만 보게하려면 파일 당 하나의 작업을 실행해야하며 작업 당 하나의 매퍼 만 갖도록 구성해야합니다.

0

맵 작업 내에서 처리중인 레코드의 파일 이름을 가져올 수 있습니다. 당신이지도 출력 키에 저를 추가 할 수있는 파일 이름이 있으면

Get File Name in Mapper

는 복합 키를 형성하고, 하나의 감속기에 같은 파일에서 그룹 키에 그룹화 비교기를 구현한다.

+0

훌륭한 답변입니다. 제 경우에는 내용이있는 각 파일의 제목을 보내려고합니다. 제목을 파일 이름으로 추가 할 수 있습니다. 그룹화 비교기를 사용해 보겠습니다. 고마워 – user5532529

관련 문제