Hive - Alter Table

Questo capitolo spiega come modificare gli attributi di una tabella, come cambiare il nome della tabella, cambiare i nomi delle colonne, aggiungere colonne e cancellare o sostituire le colonne.

Istruzione Alter Table

Viene utilizzato per modificare una tabella in Hive.

Sintassi

L'istruzione accetta una delle seguenti sintassi in base agli attributi che desideriamo modificare in una tabella.

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 ...])

Rename To ... Statement

La query seguente rinomina la tabella da employee per emp.

hive> ALTER TABLE employee RENAME TO emp;

Programma JDBC

Il programma JDBC per rinominare una tabella è il seguente.

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();
   }
}

Salvare il programma in un file denominato HiveAlterRenameTo.java. Utilizzare i seguenti comandi per compilare ed eseguire questo programma.

$ javac HiveAlterRenameTo.java
$ java HiveAlterRenameTo

Produzione:

Table renamed successfully.

Dichiarazione di modifica

La tabella seguente contiene i campi di employee tabella e mostra i campi da modificare (in grassetto).

Nome campo Converti da tipo di dati Cambia nome campo Converti in tipo di dati
eid int eid int
name Corda ename Corda
stipendio Float stipendio Double
designazione Corda designazione Corda

Le seguenti query rinominano il nome della colonna e il tipo di dati della colonna utilizzando i dati sopra:

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

Programma JDBC

Di seguito è riportato il programma JDBC per modificare una colonna.

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();
   }
}

Salvare il programma in un file denominato HiveAlterChangeColumn.java. Utilizzare i seguenti comandi per compilare ed eseguire questo programma.

$ javac HiveAlterChangeColumn.java
$ java HiveAlterChangeColumn

Produzione:

Change column successful.

Istruzione Aggiungi colonne

La seguente query aggiunge una colonna denominata dept alla tabella dei dipendenti.

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

Programma JDBC

Di seguito viene fornito il programma JDBC per aggiungere una colonna a una tabella.

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();
   }
}

Salvare il programma in un file denominato HiveAlterAddColumn.java. Utilizzare i seguenti comandi per compilare ed eseguire questo programma.

$ javac HiveAlterAddColumn.java
$ java HiveAlterAddColumn

Produzione:

Add column successful.

Sostituisci istruzione

La seguente query elimina tutte le colonne dal file employee table e lo sostituisce con emp e name colonne:

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

Programma JDBC

Di seguito è riportato il programma JDBC da sostituire eid colonna con empid e ename colonna con 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();
   }
}

Salvare il programma in un file denominato HiveAlterReplaceColumn.java. Utilizzare i seguenti comandi per compilare ed eseguire questo programma.

$ javac HiveAlterReplaceColumn.java
$ java HiveAlterReplaceColumn

Produzione:

Replace column successful.