web-dev-qa-db-fra.com

Existe-t-il un moyen de modifier le type de colonne dans la table Hive?

Le schéma actuel est le suivant:

Hive> describe tableA;
OK
id      int
ts      timestamp

Je veux changer la colonne ts en BIGINT sans supprimer la table et recréer à nouveau. C'est possible?

25
interskh

Trouvé la solution:

ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;

Voir ceci pour plus de détails: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn

53
interskh
ALTER TABLE table_name CHANGE col_name col_name newType
25
Animesh Raj Jha

Il est généralement simple de changer/modifier la table existante en utilisant cette syntaxe dans Hive.

ALTER TABLE table_name CHANGE old_col_name new_col_name new_data_type

Ici, vous pouvez modifier le nom de votre colonne et le type de données à la fois. Si vous ne voulez pas changer col_name, faites simplement old_col_name et new_col_name sont identiques. D'accord.

Venez à votre problème. Si vous voulez changer la colonne ts en BIGINT, cela signifie le type de colonne que vous changez. exécutez simplement cette requête.

ALTER TABLE tableA CHANGE ts ts BIGINT;

Ici, ts et ts sont identiques, cela signifie que vous ne changez pas le nom de la colonne, mais que vous changez le type de colonne; si vous souhaitez changer le nom de la colonne, exécutez-le également.

ALTER TABLE tableA CHANGE ts new_col BIGINT;

Maintenant, lancez

 Hive> décrire la tableA; 
 OK 
 Id int 
 New_col bigint
10
Venu A Positive