동일한 경로로 두 번 addinputpath 함수를 입력하면 매번 동일한 파일의 두 매퍼를 생성 할 수 있지만 파일을 매번 약간 다르게 처리하고 싶습니다.다른 매개 변수로 두 번 파일 읽기
특히 Job 클래스 (configuration.set/get 사용)를 통과 한 여러 매개 변수를 사용하고 싶습니다. 파일이 다르면 컨텍스트/inputsplit 클래스를 사용하여 파일의 경로/이름을 얻습니다.하지만 이제는 그 파일을 구별 할 수 없습니다. 이견있는 사람?
각 매퍼는 다른 maptask이지만 maptasks와 관련된 정보를 사용할 수 있는지는 알 수 없습니다. 또한 프레임 워크가 maptask에 inputsplits와 일치하는 순서를 알지 못합니다. 유용 할 수 있습니다.
또는 I 파일 (다른 이름을 사용)을 복제 할 수 있지만 그게 내가 당신의 매퍼에이 논리를 넣어 당신을 추천 할 것입니다 자원
문제는/*이 키 값 * /으로 많은 일을하기 때문에 많은 비용이 들며 방출이 병행되어야합니다. 동일한 파일을 두 번 읽는 것을 구분할 수있는 다른 방법이 있습니까? – user3161227
두 스레드에서 실행하고 둘 다 완료 될 때까지 기다리는 것이 어떻습니까? Hadoop은 어쨌든 동일한 노드에서 여러 매퍼를 실행할 수 있으므로 실제로 별 차이가 없습니다. – yurgis
/*이 키 값 * /을 사용하여/* 작업을 수행하는 것이 값 비싸면 최상의 병렬 처리를 위해 더 많은 매퍼를 실행하십시오. 여기에서도 한 매퍼가 출력 1을 쓰는 동안 다른 한 매퍼는 출력 2를 쓰는 것일 수 있습니다. 위의 접근 방식은 입출력이 두 번 수행되는 것을 피하기 때문에 성능이 뛰어납니다. 둘째, 2 개의 파일을 구별하고 동일한 MR 작업에서 다른 매개 변수를 가져올 수 없습니다. –