[HADOOP] Hadoop Directory with Spaces
HADOOPHadoop Directory with Spaces
공백이 포함 된 디렉토리를 Hadoop에 제공하면서 문제가 발생했습니다.
전자
inputDir = /abc/xyz/folder name/abc.txt
Hadoop은 어떻게 든 단어들 사이에 공백이있는 폴더 이름 인 "폴더 이름"을 알지 못합니다.
그 일을하는 동안 아래의 오류가 발생합니다.
java.io.FileNotFoundException: File does not exist: /abc/xyz/folder
또한 인코딩 된 URL을 제공하려고했습니다.
java.io.FileNotFoundException: File does not exist: /abc/xyz/folder%20name/abc.txt
하지만 여전히 나에게 같은 오류가 발생합니다.
아무도 이것에 대한 해결 방법을 알고 있습니까?
어떤 도움을 주셔서 감사합니다.
해결법
-
==============================
1.Hadoop 쉘은 % 20으로 공간을 대체합니다. 에서와 같이
Hadoop 쉘은 % 20으로 공간을 대체합니다. 에서와 같이
sed 's/ /\%20/g'
그리고 실제 put 명령에서
hadoop fs -put "$inputDir" $putDest
% 20이 없으면 URI 예외가 발생합니다. (이것은 % 20을 이스케이프 문자 위에 사용하는 나의 단서를 제공했습니다.)
자바를 통해 당신이하고 있다는 것을 알고 있습니다. 당신이 java.io.FileNotFoundException을 얻는다는 사실은 코드가 hadoop put 또는 put과 동일한 명령에 대한 인수가 아닌 inputDir을 사용하여 다른 작업을 수행하는지 궁금하게 만듭니다. Hadoop 명령을 벗어나는 inputDir에 대한 검사를 수행하면 실패합니다. 자바는 그것을 경로로 본다. Hadoop은 그것을 URI로 본다.
-
==============================
2.Hadoop은 입력 디렉토리 경로에서 빈 공간을 지원하지 않습니다.
Hadoop은 입력 디렉토리 경로에서 빈 공간을 지원하지 않습니다.
디렉터리 경로에서 공백을 _ 또는 원하는 구분 문자로 바꿉니다.
-
==============================
3.set ( "path", "/ abc / xyz / folder \\ name / abc.txt"); 더블 백 슬래시에 유의하십시오.
set ( "path", "/ abc / xyz / folder \\ name / abc.txt"); 더블 백 슬래시에 유의하십시오.
from https://stackoverflow.com/questions/20374419/hadoop-directory-with-spaces by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 주어진 컬럼 이름으로 모든 테이블을 검색하고 Hadoop / Hive에이 컬럼 이름을 가진 테이블을 반환하는 방법은 무엇입니까? (0) | 2019.07.01 |
---|---|
[HADOOP] hadoop에서 enum으로 mapOutputValueClass를 설정하는 방법 (0) | 2019.07.01 |
[HADOOP] 실패를 너무 많이 가져옵니다. (0) | 2019.07.01 |
[HADOOP] 외부 테이블 하이브 만들기, 위치에 여러 파일이 있습니다. (0) | 2019.07.01 |
[HADOOP] Custom Mapper and Reducer 대 HiveQL (0) | 2019.07.01 |