Obecny schemat jest:Czy istnieje sposób na zmianę typu kolumny w tabeli ula?
hive> describe tableA;
OK
id int
ts timestamp
Chcę zmienić ts
kolumnę być BIGINT
bez upuszczenie tabeli i odtworzyć ponownie. Czy to możliwe?
Obecny schemat jest:Czy istnieje sposób na zmianę typu kolumny w tabeli ula?
hive> describe tableA;
OK
id int
ts timestamp
Chcę zmienić ts
kolumnę być BIGINT
bez upuszczenie tabeli i odtworzyć ponownie. Czy to możliwe?
Znaleziono rozwiązanie:
ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;
zobaczyć to dla kompletnych informacji: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn
+1, ponieważ twoja odpowiedź nadeszła w 12 dni przed odpowiedzią Animesa, ale z jakiegoś powodu ma mniej głosów, mimo że masz więcej informacji. – MikeKulls
@interskh jest sposób na zastosowanie tego do wielu kolumn w jednej instrukcji? Takich jak 'ZMIEŃ tabele tabelaA ZMIEŃ a, b, ca, b, c BIGINT;' Próbowałem oddzielając kolumny przy użyciu przecinka i nie działało. Pytam, czy mój stół został utworzony przy użyciu interfejsu Hue dla ula i domyślnie 'DECIMAL' na' (10,0) 'jednak wymagam' (38,0) ' –
Czy wiesz, czy to też by działało, gdyby dane były przechowywane jako ORC lub Parkiet? –
ALTER TABLE table_name CHANGE col_name col_name newType
To proste zazwyczaj zmienić/zmodyfikować tabela exesting użyć tej składni w ula.
ALTER TABLE table_name CHANGE old_col_name new_col_name new_data_type
Tutaj możesz zmienić nazwę kolumny i typ danych na raz. Jeśli nie chcesz zmienić col_name, po prostu make old_col_name i new_col_name są takie same. Ok.
Przyjdź do swojego problemu. Jeśli chcesz zmienić kolumnę ts na BIGINT.It oznacza zmianę typu kolumny. więc po prostu uruchom to zapytanie.
ALTER TABLE tableA CHANGE ts ts BIGINT;
Tutaj TS i TS są takie same, oznacza, że nie zmieniają nazwę kolumny, ale zmieniając kolumny typu; jeśli chcesz zmienić nazwę kolumny, po prostu uruchom ją.
ALTER TABLE tableA CHANGE ts new_col BIGINT;
Teraz uruchom
hive> describe tableA; OK id int new_col bigint
Dodatkowo jeśli używasz partycji należy zmienić kolumnę tabeli '{} table_name partycji ({column_name} {column_type})'. Hive może tak łatwo stworzyć wiele niespójności. Może to ja, ale Hive jest bardzo frustrujące :-( –
Interesujące byłoby, gdyby było to również możliwe z plikiem ORC –