복붙노트

[HADOOP] 하이브에서는 새로운 열을 추가 할 열을 지정하는 방법이 있습니까?

HADOOP

하이브에서는 새로운 열을 추가 할 열을 지정하는 방법이 있습니까?

내가 할 수있는

ALTER TABLE table_name COLUMNS 추가 (user_id BIGINT)

내 비 파티션 열 끝과 내 파티션 열 앞에 새 열을 추가하십시오.

파티션되지 않은 컬럼 중 어디에도 새로운 컬럼을 추가 할 수 있습니까? 예를 들어,이 새 열 user_id 내 테이블의 첫 번째 열에 넣고 싶습니다.

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    3.아니, 불가능합니다.

    아니, 불가능합니다.

    한 가지 해결책은 "CREATE TABLE AS SELECT"접근 방식을 사용하여 새 테이블을 만들고 이전 테이블을 삭제하는 것입니다.

  4. 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