2017-10-26 5 views
0

가정하자 나는이 하이브 내부 오크 비 분할 된 테이블 :비 분할 된 테이블에서 분할 된 테이블을 만들기

CREATE TABLE IF NOT EXISTS non_partitioned_table(
     id STRING, 
     company STRING, 
     city STRING, 
     country STRING, 
     ) 
    STORED AS ORC; 

어떻게 든 마루 분할 된 테이블 문 같은 CTE를 통해이 방법을 만들 수 있습니까?

create partitioned_table PARTITION ON (date STRING) like non_partitioned_table; 
alter table partitioned_table SET FILEFORMAT PARQUET; 

이 create 문은 작동하지 않습니다.

그래서 기본적으로 열을 추가하고이 열로 분할 된 테이블을 만들어야합니다. 나는 테이블 문을 작성하는 간단한 통해 테이블을 만들 수 있다는 것을 알고 있지만, 내가 좋아하는을 테이블 만들기 내에서 작업을 수행해야하고, 어떻게 든

을 변경

답변

0

귀하의 테이블로 시작하는 date 열이없는 당신 때문에 ' 새로운 것을 만들어야 할 것입니다.

ALTER TABLE non_partitioned_table ADD PARTITION 일 수도 있지만 직접 시도하지 않았습니다. 해보고 싶다면 파티션 위치를 기존 HDFS 디렉토리 밖에 두는 것이 좋습니다.

어쨌든의 CREATE-TABLE-LIKE DDL 당신은 다음 첫 번째 결과에서 DESCRIBE TABLE 스키마를 복사하여 변경하고 PARTITIONED BY을 추가하고, 선택적으로 STORED AS를 지정해야 PARTITIONED BY

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name 
LIKE existing_table_or_view_name 
[LOCATION hdfs_path]; 

지원하지 않습니다. (SET FILEFORMAT PARQUET은 현재 위치에서 데이터 형식을 변경하지 않습니다). 새 테이블의 데이터를 원하는 경우

그런 다음, 당신은 답장을 INSERT OVERWRITE TABLE

+0

들으 필요하지만, 당신은 당신이 ('SET 화일 형식 PARQUET'이의 데이터 유형을 변경하지 않는 것을 명확히 PPS 수 - 장소)? 파일 형식을 변경 한 후'show create table'은 이전과 같지 않습니다 – Dipas

+0

하이브 (Hive) 저장소의 항목을 업데이트하면됩니다. 'hdfs dfs -ls'는 테이블 위치입니다. 파일은 불가사의하게 마루판 형식으로 변하지 않습니다. –