[HADOOP] FileInputFormat.addInputPaths를 사용하여 재귀 적으로 HDFS 경로 추가
HADOOPFileInputFormat.addInputPaths를 사용하여 재귀 적으로 HDFS 경로 추가
나는 HDFS 구조를 가지고있다.
a/b/file1.gz
a/b/file2.gz
a/c/file3.gz
a/c/file4.gz
나는 고전적인 패턴을 사용하고 있습니다.
FileInputFormat.addInputPaths(conf, args[0]);
자바 맵 감소 작업에 대한 입력 경로를 설정합니다.
args [0]을 a / b로 지정하면 제대로 작동하지만 a 만 지정하면 실패합니다 (내 의도는 4 개의 파일을 모두 처리하려고합니다)
오류
Exception in thread "main" java.io.IOException: Not a file: hdfs://host:9000/user/hadoop/a
아래에 모든 것을 재귀 적으로 추가하려면 어떻게합니까?
나는 간단한 것을 놓치고 있어야합니다 ...
해결법
-
==============================
1.이것은 현재 Hadoop 버전의 버그입니다. 동일한 JIRA가 있습니다. 여전히 열린 상태입니다. 코드를 변경하고 바이너리를 빌드하거나 다음 릴리스에서 수정 될 때까지 기다리십시오. 재귀 적으로 파일 처리를 켜거나 끌 수 있습니다. 자세한 내용은 JIRA에 첨부 된 패치를 확인하십시오.
이것은 현재 Hadoop 버전의 버그입니다. 동일한 JIRA가 있습니다. 여전히 열린 상태입니다. 코드를 변경하고 바이너리를 빌드하거나 다음 릴리스에서 수정 될 때까지 기다리십시오. 재귀 적으로 파일 처리를 켜거나 끌 수 있습니다. 자세한 내용은 JIRA에 첨부 된 패치를 확인하십시오.
-
==============================
2.Eitan Illuz가 여기에서 언급했듯이 Hadoop 2.4.0에서는 mapreduce.input.fileinputformat.input.dir.recursive 구성 특성이 도입되었습니다. true로 설정하면 입력 형식이 파일을 재귀 적으로 포함하도록 지시합니다.
Eitan Illuz가 여기에서 언급했듯이 Hadoop 2.4.0에서는 mapreduce.input.fileinputformat.input.dir.recursive 구성 특성이 도입되었습니다. true로 설정하면 입력 형식이 파일을 재귀 적으로 포함하도록 지시합니다.
Java 코드에서는 다음과 같습니다.
Configuration conf = new Configuration(); conf.setBoolean("mapreduce.input.fileinputformat.input.dir.recursive", true); Job job = Job.getInstance(conf); // etc.
나는이 새로운 재산을 사용하고 있으며 그것이 잘 작동한다는 것을 알았습니다.
편집 : 더 나은 방법은 FileInputFormat에서 동일한 결과를 얻는 새로운 방법을 사용하는 것입니다.
Job job = Job.getInstance(); FileInputFormat.setInputDirRecursive(job, true);
from https://stackoverflow.com/questions/8114579/using-fileinputformat-addinputpaths-to-recursively-add-hdfs-path by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hadoop Map reduce를 사용하여 .pst를 처리 / 추출하는 방법 (0) | 2019.08.15 |
---|---|
[HADOOP] 맵 감소 작업의 출력을 텍스트 파일로 로깅 (0) | 2019.08.15 |
[HADOOP] Hadoop 네임 노드 메모리 사용량에 대한 혼란 (0) | 2019.08.15 |
[HADOOP] 스파크웨어 하우스 폴더가 많은 이유는 무엇입니까? (0) | 2019.08.15 |
[HADOOP] fsimage hdfs의 내용 (0) | 2019.08.15 |