[HADOOP] MapReduce는 여러 입력 파일을 어떻게 읽습니까?
HADOOPMapReduce는 여러 입력 파일을 어떻게 읽습니까?
mapreduce를 사용하여 데이터를 읽고 HDFS에 코드를 작성하는 코드를 개발 중입니다. 그러나 여러 파일이있을 때 어떻게 처리되는지 이해할 수 없습니다. mapper에 대한 입력 경로는 다음과 같은 출처에서 볼 수있는 디렉토리 이름입니다.
String filename = conf1.get("map.input.file");
그러면 디렉토리의 파일을 어떻게 처리합니까?
해결법
-
==============================
1.입력 파일 경로를 얻으려면 다음과 같이 컨텍스트 개체를 사용할 수 있습니다.
입력 파일 경로를 얻으려면 다음과 같이 컨텍스트 개체를 사용할 수 있습니다.
FileSplit fileSplit = (FileSplit) context.getInputSplit(); String inputFilePath = fileSplit.getPath().toString();
여러 파일을 처리하는 방법은 다음과 같습니다.
mapper 함수의 여러 인스턴스가 클러스터의 다른 시스템에 작성됩니다. 각 인스턴스는 다른 입력 파일을 수신합니다. 파일이 기본 dfs 블록 크기 (128MB)보다 크면 파일을 더 작은 부분으로 더 분할 한 다음 매퍼에 배포합니다.
따라서 다음 두 가지 방법으로 각 매퍼가받는 입력 크기를 구성 할 수 있습니다.
노트 : 이 매개 변수는 입력 형식이 입력 파일 분리를 지원하는 경우에만 유효합니다. 일반적인 압축 코덱 (예 : gzip)은 파일 분할을 지원하지 않으므로 무시됩니다.
-
==============================
2.@Amar의 답변을 계속하면서 필자는 사용자 정의 된 inoput 형식이 입력 파일을 분할하지 않기 때문에 다음 코드에서 FileStatus 객체를 사용했습니다.
@Amar의 답변을 계속하면서 필자는 사용자 정의 된 inoput 형식이 입력 파일을 분할하지 않기 때문에 다음 코드에서 FileStatus 객체를 사용했습니다.
FileSystem fs = file.getFileSystem(conf); FileStatus status= fs.getFileStatus(file); String fileName=status.getPath().toString();
from https://stackoverflow.com/questions/14067129/how-does-mapreduce-read-from-multiple-input-files by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] oazie Java 액션에서 HBase 자격 증명 전달 (0) | 2019.07.24 |
---|---|
[HADOOP] HDFS의 블록 배치 전략 수정 (0) | 2019.07.24 |
[HADOOP] 성공했을 때 PIG 작업 로그 파일을 유지하는 방법. (0) | 2019.07.24 |
[HADOOP] Hadoop 파일 시스템이 랜덤 I / O를 지원하지 않는 이유는 무엇입니까? (0) | 2019.07.24 |
[HADOOP] PIG UDF는 다중 줄이있는 튜플을 다른 매퍼로 분할합니다. (0) | 2019.07.24 |