[HADOOP] Hadoop : MapReduce 작업에 입력으로 디렉토리 제공
HADOOPHadoop : MapReduce 작업에 입력으로 디렉토리 제공
나는 Cloudera Hadoop을 사용하고 있습니다. MapReduce 프로그램에 입력으로 파일을 제공하는 간단한 mapreduce 프로그램을 실행할 수 있습니다.
이 파일에는 매퍼 함수로 처리 할 다른 모든 파일이 들어 있습니다.
하지만, 나는 한 지점에 머물러있다.
/folder1
- file1.txt
- file2.txt
- file3.txt
MapReduce 프로그램의 입력 경로를 "/ folder1"로 지정하면 해당 디렉토리 내의 각 파일을 처리 할 수 있습니다.
어떤 아이디어?
편집하다 :
1) intiailly, inputfile.txt를 mapreduce 프로그램의 입력으로 제공했습니다. 그것은 완벽하게 작동하고있었습니다.
>inputFile.txt
file1.txt
file2.txt
file3.txt
2)하지만 이제는 입력 파일을주는 대신 명령 줄에서 arg [0]과 같은 입력 디렉토리를 제공하려고합니다.
hadoop jar ABC.jar /folder1 /output
해결법
-
==============================
1.문제는 FileInputFormat이 입력 경로 dir에서 파일을 반복적으로 읽지 않는다는 것입니다.
문제는 FileInputFormat이 입력 경로 dir에서 파일을 반복적으로 읽지 않는다는 것입니다.
솔루션 : 다음 코드 사용
FileInputFormat.setInputDirRecursive (job, true); 지도 줄 아래에있는 코드 줄이기 전에
FileInputFormat.addInputPath (job, newPath (args [0]));
여기에서 수정 된 버전을 확인할 수 있습니다.
-
==============================
2.FileSystem.listStatus를 사용하여 지정된 dir에서 파일 목록을 가져올 수 있습니다. 코드는 다음과 같습니다.
FileSystem.listStatus를 사용하여 지정된 dir에서 파일 목록을 가져올 수 있습니다. 코드는 다음과 같습니다.
//get the FileSystem, you will need to initialize it properly FileSystem fs= FileSystem.get(conf); //get the FileStatus list from given dir FileStatus[] status_list = fs.listStatus(new Path(args[0])); if(status_list != null){ for(FileStatus status : status_list){ //add each file to the list of inputs for the map-reduce job FileInputFormat.addInputPath(conf, status.getPath()); } }
-
==============================
3.여러 개의 파일을 제공하기 위해 hdfs 와일드 카드를 사용할 수 있습니다.
여러 개의 파일을 제공하기 위해 hdfs 와일드 카드를 사용할 수 있습니다.
그래서, 해결책 :
hadoop jar ABC.jar /folder1/* /output
또는
hadoop jar ABC.jar /folder1/*.txt /output
-
==============================
4.MultipleInputs 클래스를 사용하십시오.
MultipleInputs 클래스를 사용하십시오.
MultipleInputs. addInputPath(Job job, Path path, Class<? extends InputFormat> inputFormatClass, Class<? extends Mapper> mapperClass)
작업 코드 살펴보기
from https://stackoverflow.com/questions/20094366/hadoop-provide-directory-as-input-to-mapreduce-job by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop / Hive - 단일 행을 여러 행으로 분할 (0) | 2019.06.08 |
---|---|
[HADOOP] s3 또는 로컬 파일 시스템의 스파크를 사용하여 하위 디렉토리에서 재귀 적으로 파일을 읽습니다. (0) | 2019.06.08 |
[HADOOP] HDFS없이 가상 분산 작업에서 Hadoop을 실행할 수 있습니까? (0) | 2019.06.08 |
[HADOOP] 도커 컨테이너에서 hadoop 클러스터 실행 (0) | 2019.06.08 |
[HADOOP] 여러 디렉토리에서 입력 파일을 가져 오는 Hadoop 작업 (0) | 2019.06.08 |