거의 500 개의 파티션이있는 외부 분할 된 테이블이 있습니다. 이전 테이블과 동일한 속성을 가진 다른 외부 테이블을 만들려고합니다. 그런 다음 기존 테이블의 모든 파티션을 새로 만든 테이블에 복사하려고합니다. 아래에 내 테이블 쿼리를 만듭니다. 내 오래된 테이블은 TEXTFILE로 저장되어 있으며 새 테이블을 ORC 파일로 저장하려고합니다.기존의 외부 분할 된 테이블에서 새 하이브 테이블 만들기
'add jar json_jarfile;
CREATE EXTERNAL TABLE new_table_orc (col1,col2,col3...col27)
PARTITIONED BY (year string, month string, day string)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (....)
STORED AS orc
LOCATION 'path';'
그리고이 테이블을 만든 후에. 나는 오류가 아래 얻고있다
'set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE new_table_orc PARTITION (year,month,day) SELECT col2,col3,col6,year,month,day FROM old_table;
ALTER TABLE new_table_orc RECOVER PARTITIONS;'
만이 새 테이블에 원본 테이블에서 몇 열을 복사 할 새 나라면에 이전 테이블에서 파티션을 삽입하기 위해 아래 쿼리를 사용하고 있습니다.
'FAILED: SemanticException [Error 10044]: Line 2:23 Cannot insert into target table because column number/types are different 'day': Table insclause-0 has 27 columns, but query has 6 columns.'
의견이 있으십니까?