[HADOOP] 하이브에서는 새로운 열을 추가 할 열을 지정하는 방법이 있습니까?
HADOOP하이브에서는 새로운 열을 추가 할 열을 지정하는 방법이 있습니까?
내가 할 수있는
ALTER TABLE table_name COLUMNS 추가 (user_id BIGINT)
내 비 파티션 열 끝과 내 파티션 열 앞에 새 열을 추가하십시오.
파티션되지 않은 컬럼 중 어디에도 새로운 컬럼을 추가 할 수 있습니까? 예를 들어,이 새 열 user_id 내 테이블의 첫 번째 열에 넣고 싶습니다.
해결법
-
==============================
1.예. 열의 위치를 변경할 수는 있지만 CHANGE COLUMN을 사용하여 테이블에 추가 한 후에 만 가능합니다.
예. 열의 위치를 변경할 수는 있지만 CHANGE COLUMN을 사용하여 테이블에 추가 한 후에 만 가능합니다.
귀하의 경우, 먼저 아래 명령을 사용하여 테이블에 열 user_id를 추가하십시오.
ALTER TABLE table_name ADD COLUMNS (user_id BIGINT);
이제 user_id 열을 테이블의 첫 번째 열로 만들려면 FIRST 절을 사용하여 변경 열을 사용하십시오.
ALTER TABLE table_name CHANGE COLUMN user_id user_id BIGINT first;
이렇게하면 user_id 열이 첫 번째 위치로 이동합니다.
마찬가지로 다른 열 다음에 지정된 열을 이동하려면 첫 번째 대신 After를 사용할 수 있습니다. 마찬가지로, 나는 user_id 열 뒤에 dob 열을 이동하고 싶다. 그럼 내 명령은 :
ALTER TABLE table_name CHANGE COLUMN dob dob date AFTER user_id;
이 명령은 메타 데이터 만 변경합니다. 열을 이동하는 경우 데이터는 이미 새 스키마와 일치해야하며 다른 방법으로 일치하도록 변경해야합니다.
-
==============================
2.아, user_id를 두 번 나열한 이유는 다음과 같습니다 (유형이 아님).
아, user_id를 두 번 나열한 이유는 다음과 같습니다 (유형이 아님).
// Next change column a1's name to a2, its data type to string, and put it after column b. ALTER TABLE test_change CHANGE a1 a2 STRING AFTER b; // The new table's structure is: b int, a2 string, c int.
-
==============================
3.아니, 불가능합니다.
아니, 불가능합니다.
한 가지 해결책은 "CREATE TABLE AS SELECT"접근 방식을 사용하여 새 테이블을 만들고 이전 테이블을 삭제하는 것입니다.
from https://stackoverflow.com/questions/34167597/in-hive-is-there-a-way-to-specify-between-which-columns-to-add-a-new-column-to by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하둡 성능 (0) | 2019.07.29 |
---|---|
[HADOOP] Apache Phoenix - Kerberos 클러스터에서 쿼리 서버와 씬 클라이언트를 시작하는 방법 (0) | 2019.07.29 |
[HADOOP] 하이브 NVL 열의 날짜 형식을 사용할 수 없습니다 - NullpointerException (0) | 2019.07.28 |
[HADOOP] Hadoop : 매퍼 출력을 출력 파일에 작성하는 감속기 (0) | 2019.07.28 |
[HADOOP] 하이브 : 큰 테이블에서 작은 테이블 만들기 (0) | 2019.07.28 |