2017-12-18 10 views
2

Cloudera VM을 사용하는 경우 어떻게 HDFS에서 정보에 액세스 할 수 있습니까? 나는 HDFS에 대한 직접적인 경로가 없다는 것을 알고 있지만 동적으로 액세스하는 방법을 알지 못합니다.Cloudera VM의 HDFS에서 하이브 테이블로 데이터로드

하이브 CLI를 통해 하이브 테이블을 만든 후 나는 HDFS에있는 파일에서 일부 데이터를로드하려고 :

load data inpath '/test/student.txt' into table student; 

하지만 난 그냥이 오류를 얻을 :

FAILED: SemanticException Line 1:17 Invalid path ''/test/student.txt'': No files matching path hdfs://quickstart.cloudera:8020/test/student.txt 

I을 또한 HDFS에없는 데이터를 하이브 테이블에로드하려고 시도했습니다.

나는 hdfs://quickstart.cloudera:8020의 루트로 데이터에 액세스하려고 나는 그게 뭔지 모르겠어요 볼 수 있지만, HDFS의 루트 디렉토리 될 것 같지 않습니다 다시 한번

FAILED: SemanticException Line 1:17 Invalid path ''/home/cloudera/Desktop/student.txt'': No files matching path hdfs://quickstart.cloudera:8020/home/cloudera/Desktop/student.txt 

: 그냥이 오류를 발생 .

내가 잘못하고있는 것이 확실하지 않지만 파일이 HDFS에 있는지 확인하여이 오류가 발생하는 이유나 해결 방법을 알 수 없었습니다.

답변

1

how can you access information in the HDFS

글쎄, 당신은 확실히 그것을 할 하이브를 사용할 필요가 없습니다. hdfs dfs 명령은 HDFS와 상호 작용하는 방법입니다.

I'm not sure what that is, but it doesn't seem to be the root directory for the HDFS

HDFS의 근원입니다. quickstart.cloudera은 VM의 호스트 이름입니다. 포트 8020은 HDFS 포트입니다.


예외는 LOCAL 키워드 사용의 차이점입니다. 당신이 무슨 일을하는지

LOAD DATA INPATH <hdfs location> 

VS 당신은


또는 파일이 HDFS에있는 경우, 당신이에 파일을 넣어 얼마나 명확하지

LOAD DATA LOCAL INPATH <local file location> 
을 원하는 것 같다 무엇을 하지만 HDFS에는/home 폴더 나 데스크톱이 없기 때문에 두 번째 오류는 적어도 의미가 있습니다.

어쨌든 hdfs dfs -put /test/students.text /test/은 이미 파일을 업로드하는 한 가지 방법이며 hdfs:///test 폴더가 이미 있다고 가정합니다. 그렇지 않으면, hdfs dfs -put /test/students.text /test는 HDFS에 /test

참고 파일 이름을 변경합니다 : 당신은 HDFS 디렉토리를 통해 외부 테이블을 만들 수 있습니다, 당신은 LOAD DATA 명령을 사용할 필요가 없습니다.