Hive - Modifier la table

Ce chapitre explique comment modifier les attributs d'une table, comme changer son nom de table, changer les noms de colonne, ajouter des colonnes et supprimer ou remplacer des colonnes.

Instruction Alter Table

Il est utilisé pour modifier une table dans Hive.

Syntaxe

L'instruction prend l'une des syntaxes suivantes en fonction des attributs que nous souhaitons modifier dans une table.

ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])

Renommer en… Instruction

La requête suivante renomme la table de employee à emp.

hive> ALTER TABLE employee RENAME TO emp;

Programme JDBC

Le programme JDBC pour renommer une table est le suivant.

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet; 
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveAlterRenameTo {
   private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
   
   public static void main(String[] args) throws SQLException {
   
      // Register driver and create driver instance
      Class.forName(driverName);
      
      // get connection
      Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
      
      // create statement
      Statement stmt = con.createStatement();
      
      // execute statement
      stmt.executeQuery("ALTER TABLE employee RENAME TO emp;");
      System.out.println("Table Renamed Successfully");
      con.close();
   }
}

Enregistrez le programme dans un fichier nommé HiveAlterRenameTo.java. Utilisez les commandes suivantes pour compiler et exécuter ce programme.

$ javac HiveAlterRenameTo.java
$ java HiveAlterRenameTo

Production:

Table renamed successfully.

Déclaration de changement

Le tableau suivant contient les champs de employee table et il montre les champs à modifier (en gras).

Nom de domaine Convertir à partir du type de données Changer le nom du champ Convertir en type de données
eid int eid int
name Chaîne ename Chaîne
un salaire Float un salaire Double
la désignation Chaîne la désignation Chaîne

Les requêtes suivantes renomment le nom de la colonne et le type de données de colonne à l'aide des données ci-dessus:

hive> ALTER TABLE employee CHANGE name ename String;
hive> ALTER TABLE employee CHANGE salary salary Double;

Programme JDBC

Ci-dessous, le programme JDBC pour modifier une colonne.

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveAlterChangeColumn {
   private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
   
   public static void main(String[] args) throws SQLException {
   
      // Register driver and create driver instance
      Class.forName(driverName);
      
      // get connection
      Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
      
      // create statement
      Statement stmt = con.createStatement();
      
      // execute statement
      stmt.executeQuery("ALTER TABLE employee CHANGE name ename String;");
      stmt.executeQuery("ALTER TABLE employee CHANGE salary salary Double;");
      
      System.out.println("Change column successful.");
      con.close();
   }
}

Enregistrez le programme dans un fichier nommé HiveAlterChangeColumn.java. Utilisez les commandes suivantes pour compiler et exécuter ce programme.

$ javac HiveAlterChangeColumn.java
$ java HiveAlterChangeColumn

Production:

Change column successful.

Instruction Add Columns

La requête suivante ajoute une colonne nommée dept à la table des employés.

hive> ALTER TABLE employee ADD COLUMNS ( 
dept STRING COMMENT 'Department name');

Programme JDBC

Le programme JDBC pour ajouter une colonne à une table est donné ci-dessous.

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveAlterAddColumn {
   private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
   
   public static void main(String[] args) throws SQLException {
   
      // Register driver and create driver instance
      Class.forName(driverName);

      // get connection
      Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");

      // create statement
      Statement stmt = con.createStatement();
      
      // execute statement
      stmt.executeQuery("ALTER TABLE employee ADD COLUMNS " + " (dept STRING COMMENT 'Department name');");
      System.out.prinln("Add column successful.");
      
      con.close();
   }
}

Enregistrez le programme dans un fichier nommé HiveAlterAddColumn.java. Utilisez les commandes suivantes pour compiler et exécuter ce programme.

$ javac HiveAlterAddColumn.java
$ java HiveAlterAddColumn

Production:

Add column successful.

Remplacer l'instruction

La requête suivante supprime toutes les colonnes du employee table et la remplace par emp et name Colonnes:

hive> ALTER TABLE employee REPLACE COLUMNS ( 
eid INT empid Int, 
ename STRING name String);

Programme JDBC

Ci-dessous, le programme JDBC à remplacer eid colonne avec empid et ename colonne avec name.

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveAlterReplaceColumn {

   private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
   
   public static void main(String[] args) throws SQLException {
   
      // Register driver and create driver instance
      Class.forName(driverName);
      
      // get connection
      Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
      
      // create statement
      Statement stmt = con.createStatement();
      
      // execute statement
      stmt.executeQuery("ALTER TABLE employee REPLACE COLUMNS "
         +" (eid INT empid Int,"
         +" ename STRING name String);");
         
      System.out.println(" Replace column successful");
      con.close();
   }
}

Enregistrez le programme dans un fichier nommé HiveAlterReplaceColumn.java. Utilisez les commandes suivantes pour compiler et exécuter ce programme.

$ javac HiveAlterReplaceColumn.java
$ java HiveAlterReplaceColumn

Production:

Replace column successful.