2014-11-11 3 views
0

디렉토리가 MapFile으로 가득 찼습니다. 나는 이제 그들에 대한 MR 작업을하고 싶다. 나는 in this thread 상태로 MapFile을 인식해야하는 새로운 API 인 SequenceFileInputFormat을 사용합니다. 그러나 그러나 이것은 효과가 없습니다. 작업이 일정 비율로 실행 된 후 그 결과를 얻을 수 있습니다.MR 작업을 실행할 때 MapFiles의 색인 파일을 무시하는 방법은 무엇입니까?

Error: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to com.mycompany.MyOwnWritable 

나는 매퍼가 인덱스 파일로 이동한다고 가정합니다. 어떻게 무시할 것인가, 아니면 올바른 입력 키와 값 클래스를 가진 파일 만 사용되는지 확인하려면 어떻게해야합니까? 마음에 오는 유일한 방법은 Mapper<Object, Object, MyKeyOut, MyValueOut>을 무시하고 if s 및 instanceof 수표를 사용하는 것입니다.하지만이 방법은 좋지 않습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

0

나는 인덱스 파일을 어디로 여행했는지 알았다.을 true으로 설정하여 입력 경로를 재귀 적으로 탐색 할 때 파일 및 디렉토리 트리를 따라 가면서지도 작업 파일을 수집합니다. 그런 다음 SequenceFileInputFormat은 디렉터리 대신 개별 파일을 수신하므로 MapFile 검색이 실패합니다. 입력 형식이 디렉토리을 수신하고 MapFile을 구성하는 두 개의 파일을 포함하는 경우에만 작동합니다. 재귀를 끄고 MR이 예상하는 레이아웃을 보장 할 때 (즉, MapFile이 처리 될 디렉토리가 추가 폴더 구조없이 "플랫"로 저장되거나 MapFile을 포함하는 모든 디렉토리를 수동으로 FileInputFormat.addInputPath을 호출하여 추가 할 경우, 작업은 실패없이 실행됩니다.

편집 : 버그로 신고 : MAPREDUCE-6155

관련 문제