2017-03-03 1 views
1

외부로 hdfs 데이터를로드하려고 시도했지만 다음 오류가 발생합니다.외부 테이블을 사용하여 단일 파일을 가리키는 방법

폴더 ml-100k에는 다른 데이터 세트가있는 여러 데이터 세트가 있으므로 해당 특정 파일을로드하기 만하면됩니다.

hive> create external table movie_ratings (movie_id int, user_id int, ratings int, field_4 int) location 'hdfs://hadoop-master:8020/user/hduser/gutenberg/ml-100k/u.data' 
    > ; 
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:hdfs://hadoop-master:8020/user/hduser/gutenberg/ml-100k/u.data is not a directory or unable to create one) 

답변

1
에만 디렉토리에 파일을 가리키는 테이블을 만들 수 없습니다

하지만 특정 파일의 위치를 ​​변경할 수있는 기능/버그가 있습니다.

create external table movie_ratings (movie_id int, user_id int, ratings int, field_4 int) location 'hdfs://hadoop-master:8020/user/hduser/gutenberg/ml-100k'; 

alter table movie_ratings set location 'hdfs://hadoop-master:8020/user/hduser/gutenberg/ml-100k/u.data'; 
+0

파일 이름이 제거되면 u.data 만로드하려면 어떻게해야합니까? – user1050619

+0

나는 아직 답을 편집하고 있다고 썼다 :-) 업데이트 된 대답보기 –

+0

업데이트 된 답변을 주셔서 감사합니다. :) – user1050619

0

특정 파일에 하이브 테이블을 만들 수 없으므로 디렉토리를 지정해야합니다. 같은 테이블에 삽입하는 새를 만들 수 있기 때문에,

create external table movie_ratings (movie_id int, user_id int, ratings int, field_4 int) location 'hdfs://hadoop-master:8020/user/hduser/gutenberg/ml-100k/new_subfilder/' 

@Dudu에 의해 언급 된 버그가 특정 사건을 해결 할 수 있지만 일반적인 사용에 대한 안전하지 : 그래서 당신은 ml-100k/ 아래에 하위 디렉토리를 작성하고 다음과 같이 사용할 수 있습니다 지정된 파일을 절대 추가하지 않습니다.

+0

왜 이것이 버그라고 생각합니까? –

+0

왜냐하면 그것은 창조하는 동안 받아 들여지지 않고 변경하는 동안 받아 들여지고, 나의 대답에서 언급 된 이유 때문입니다. – 54l3d

+0

그래서 '작성'에는 기능이 누락되었을 수 있습니다. 그것은 버그를 나타내는 것은 아닙니다. 특정 파일을 읽을 수있는 능력은 완전히 합리적입니다. 쓰기 작업에 문제가있는 경우에만 삽입하지 않고 디자인에 의해 차단 될 수 있습니다. –

관련 문제