2016-11-14 3 views
1

테이블 변경 abc 열 추가 (stats1 map, stats2 map)기존 하이브 파티션 테이블에 열을 추가하는 방법은 무엇입니까?

위의 쿼리로 테이블을 변경했습니다. 하지만 후에 데이터를 확인하는 동안 두 여분의 열에 NULL이 있습니다. 나는 데이터를 얻지 못하고있다. enter image description here

+0

보유하고있는 데이터는 무엇입니까? 어떻게 테이블을 만들었습니까? 분석 할 더 많은 정보를 제공하십시오. –

+0

답장을 보내 주셔서 감사합니다. 테이블은 이미 프레임 워크 지원을 통해 생성됩니다. 내가 쿼리 이상 사용 이 두 항목이 추가로 5 : 4, 미국 : 테이블 변경은 ABC 내가 GB가 내 샘플 데이터의 열 (stats1지도 <문자열, 문자열>, stats2지도 <문자열, 문자열>) 를 추가 해당 하이브 테이블에 열을 추가하십시오. 그러나 내 데이터에서 수동으로 추가 된 두 열의 null을 발견했습니다. –

+0

테이블 쿼리를 생성하는 동안 map의 구분자를 ':'로 언급해야합니다. 행 형식이지도에 어떻게 있어야하는지 확인하면 답을 얻을 수 있습니다. –

답변

1

파티션 된 테이블에 열을 추가하려면 파티션을 다시 만들어야합니다. 테이블이 외부이고 데이터 파일에 이미 새 열이 포함되어 있다고 가정하면 다음을 수행하십시오. 1. 테이블 추가 열을 변경하십시오 ... 2. 파티션을 다시 만드십시오. 각 파티션에 대해 놓기를 수행 한 다음 작성하십시오. 새로 생성 된 파티션 스키마는 테이블 스키마를 상속합니다.

다른 방법으로 테이블을 삭제 한 다음 테이블을 만들고 모든 파티션을 생성하거나 단순히 MSCK REPAIR TABLE abc 명령을 실행하여 복원 할 수 있습니다.

이러한 제안은 외부 테이블에 적용됩니다.

0

CASCADE가 해결책입니다.

ALTER TABLE dbname.table_name ADD 열 (column1 문자열, column2 문자열) CASCADE;

테이블의 메타 데이터 열을 변경하고 동일한 변경 사항을 모든 파티션 메타 데이터로 계단식으로 배열합니다. RESTRICT가 기본값이며 테이블 메타 데이터 만 열 변경됩니다.

관련 문제