web-dev-qa-db-fra.com

Comment renommer une table Hive sans changer d'emplacement?

Basé sur le document Hive ci-dessous:

Renommer la table

ALTER TABLE nom_table RENAME TO nouveau_nom_table;

Cette instruction vous permet de remplacer le nom d'une table par un nom différent.

Depuis la version 0.6, un changement de nom sur une table gérée déplace également son emplacement HDFS. (Les anciennes versions de Hive venaient juste de renommer la table dans le métastore sans déplacer l'emplacement HDFS.)

Existe-t-il un moyen de renommer une table sans modifier l'emplacement?

16
Osiris

Oui, nous pouvons le faire. Il vous suffit de suivre les trois commandes ci-dessous dans l'ordre.

  1. Disons que vous avez une table externe test_1 dans Hive. Et vous voulez le renommer test_2 qui devrait pointer l'emplacement test_2 et non test_1. Ensuite, vous devez convertir ce tableau en tableau géré à l'aide de la commande ci-dessous. test_1 -> pointant vers l'emplacement de test_1

    ALTER TABLE db_name.test_1 SET TBLPROPERTIES('EXTERNAL'='FALSE');
    
  2. Renommez le nom de la table.

    ALTER TABLE db_name.test_1 RENAME TO db_name.test_2;
    
  3. Convertissez à nouveau la table gérée après avoir renommé la table externe.

    ALTER TABLE db_name.test_2 SET TBLPROPERTIES('EXTERNAL'='TRUE');
    

la table db_name.test_2 pointera l'emplacement test_2. Si nous le faisons sans créer la table gérée, il pointera l'emplacement test_1.

14
Sanjeev

Depuis Hive 2.2.0, l'emplacement HDFS d'une table gérée n'est déplacé que si la table est créée sans clause LOCATION et sous son répertoire de base de données . Lien

4
sdikby

ALTER TABLE ne suit pas la syntaxe databasename.tablename dans Hive comme dans CREATE ou SELECT. Mentionnez d'abord le nom de la base de données, puis exécutez l'instruction alter table.

syntaxe comme ci-dessous

USE databasename;
ALTER TABLE old_tablename RENAME TO new_tablename;
1
apt_intervention

Voici la commande exécutée

ALTER TABLE old_ratings RENAME TO ratings;
1
BigData-Guru