[HADOOP] hadoop mapreduce를 사용하여 중복 제거를위한 키 값 쌍 결정
HADOOPhadoop mapreduce를 사용하여 중복 제거를위한 키 값 쌍 결정
Hadoop Mapreduce를 사용하여 파일의 중복 제거를 구현하고 싶습니다. 매퍼 함수의 입력 디렉토리에있는 모든 파일의 MD5 합계를 계산하여이를 수행 할 계획입니다. 이러한 MD5 해시는 리듀서의 핵심이므로 동일한 해시를 가진 파일은 동일한 리듀서로 이동합니다.
하둡에서 매퍼의 기본값은 키가 줄 번호이고 값이 파일의 내용이라는 것입니다.
또한 파일이 크면 64MB 청크로 분할되어 Hadoop의 최대 블록 크기입니다.
키 값을 파일 이름으로 설정하여 매퍼에서 파일의 해시를 계산할 수 있습니까? 또한 두 개의 노드가 동일한 파일의 해시를 계산하지 않도록하는 방법은 무엇입니까?
해결법
-
==============================
1.하나의 매퍼에 대한 입력으로 전체 파일을 가져야하는 경우 isSplitable을 false로 유지해야합니다. 이 시나리오에서는 전체 파일을 매퍼에 대한 입력으로 가져 와서 MD5를 동일하게 적용하여 키로 내보낼 수 있습니다.
하나의 매퍼에 대한 입력으로 전체 파일을 가져야하는 경우 isSplitable을 false로 유지해야합니다. 이 시나리오에서는 전체 파일을 매퍼에 대한 입력으로 가져 와서 MD5를 동일하게 적용하여 키로 내보낼 수 있습니다.
여기에서 WholeFileInputFormat (hadoop 코드의 일부가 아님)을 사용할 수 있습니다. 온라인으로 구현하거나 Hadoop : The Definitive Guide 책에서 구할 수 있습니다.
값은 파일 이름이 될 수 있습니다. 컨텍스트 인스턴스에서 getInputSplit ()을 호출하면 파일 분할로 캐스트 할 수있는 입력 분할이 제공됩니다. 그런 다음 fileSplit.getPath (). getName ()은 파일 이름을 나타냅니다. 그러면 파일 이름이 제공되며 값으로 생성 될 수 있습니다.
나는 이것을하지 않았다-org.apache.hadoop.hdfs.util.MD5FileUtils, 그러나 javadocs는 이것이 당신에게 좋을 수도 있다고 말합니다.
WholeFileInputFormat 및 관련 RecordReader에 대한 교과서 src 링크가 참조 용으로 포함되었습니다
1) WholeFileInputFormat
2) WholeFileRecordReader
MD5FileUtils에 대한 grepcode 링크 포함
from https://stackoverflow.com/questions/22740710/deciding-key-value-pair-for-deduplication-using-hadoop-mapreduce by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하이브 컨텍스트를 사용하여 스파크에서 하이브 테이블을 효율적으로 쿼리하는 방법은 무엇입니까? (0) | 2019.08.11 |
---|---|
[HADOOP] 하둡 직업이 스스로 죽일 수있는 방법 (0) | 2019.08.11 |
[HADOOP] PIG는 텍스트 라인을 희소 벡터로 변환 (0) | 2019.08.11 |
[HADOOP] 하나의 테이블에서 select를 실행할 때 전체 데이터베이스를 잠급니다. (0) | 2019.08.11 |
[HADOOP] Sqoop을 통해 여러 소스에서 데이터를 가져 오는 방법 (0) | 2019.08.11 |