hdfs 폴더에서 하이브 규칙을 따르고 테이블 위치를 가리키는 하이브 테이블을 만드는 경우 msck 복구 테이블 문을 실행해야합니다.
/location/data/y=2016/m=02/d=03/h=03/hh=12/data.avro 등
예
CREATE TABLE table_name
PARTITIONED BY (t string, y string, m string, d string, h string, hh string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
TBLPROPERTIES (
'avro.schema.url'='hdfs://location/schema/schema.avsc')
location "hdfs:///location/data;
들어
및로드 데이터 /location/data/y = 2016/m = 02/d = 03/h = 03/hh = 13/data2.그 방법으로 브로
당신 같은 추가 파티션을 사용하여이 작업을 수행하지 않으려면 하이브는 파티션
msck repair table table_name;
을 인식하기 때문에 다음과 같은 문으로 데이터를로드 할 수 있습니다
ALTER TABLE table_nameADD PARTITION (y='01',m='02',d='03',h='03',hh='12') location '/yourpath/y=2016/m=02/d=03/h=03/hh=12/'; (or any other folder)
디스크에 쓰기 권한이 없기 때문에 create external table에서 'path_hdfs'LOCATION을 사용할 수 없습니다. – KrunalParmar
내가 LOAD DATA 명령을 사용할 때 예외가 발생했습니다. ,,, FAIRED : SemanticException [오류 10062] : 대상 테이블이 분할되어 있기 때문에 파티션 열을 지정해야합니다 ... 어떻게 파티션을 지정할 수 있습니까? – KrunalParmar
만들기 쿼리 중에 파티션을 선언 한 다음 MSCK REPAIR
다음 구문이 유용합니다.
출처
2017-04-11 11:56:23 isudarsan
관련 문제