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?
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
ALTER TABLE table_name CHANGE col_name col_name newType
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