Hadoop Mapreduce를 사용하여 파일의 중복 제거를 구현하려고합니다. 필자는 매퍼 함수의 입력 디렉토리에있는 모든 파일의 MD5 합계를 계산하여이를 수행 할 계획입니다. 이러한 MD5 해시는 감속기의 열쇠가되므로 동일한 해시를 가진 파일은 동일한 감속기로 이동합니다.hadoop mapreduce를 사용한 중복 제거를위한 키 값 쌍 결정
Hadoop에서 매퍼의 기본값은 키가 줄 번호이고 값이 파일의 내용이라는 것입니다.
또한 파일이 크다면 64 메가 바이트 (Hadoop의 최대 블록 크기)의 덩어리로 분할됩니다.
내 매퍼에서 파일의 해시를 계산할 수 있도록 키 값을 파일 이름으로 설정하려면 어떻게해야합니까? 또한 두 노드가 동일한 파일에 대한 해시를 계산하지 않도록하는 방법은 무엇입니까?
파일이 얼마나 큰 있습니다 ? 크기면에서 보면 ... 텍스트 파일입니까? –
이 파일은 텍스트 파일로, 수십 KB에서 100 분의 1 MB 사이에있을 수 있습니다. – ManTor
여기에 hadoop 코드의 일부가 아닌 WholeFileInputFormat을 사용할 수 있습니다. Hadoop : The Definitive Guide 서적을 통해 온라인으로 구현할 수 있습니다. 이렇게하면 전체 파일을 값으로 매핑 할 수 있습니다. 이 값에 대해 MD5를 수행하고 키로 내 보냅니다. 값은 파일 이름이 될 수 있습니다. Context 인스턴스에서 getInputSplit()을 호출하면 입력 분할이 파일 분할로 캐스팅 될 수 있습니다. 그런 다음 fileSplit.getPath(). getName()을 사용하면 파일 이름을 얻을 수 있습니다. 이렇게하면 값으로 방출 될 수있는 파일 이름이 생깁니다. –