Hive - Alter Table



En este captulo se explica cmo modificar los atributos de una tabla, como un cambio en su nombre de la tabla, cambiar los nombres de las columnas, agregar columnas, y eliminar o sustituir las columnas.

Instruccin Alter Table

Se utiliza para modificar una tabla en Colmena.

Sintaxis

La declaracin se cualquiera de las siguientes sintaxis basada en lo que los atributos que queremos modificar en una tabla.

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

Cambiar el nombre de Declaracin...

La consulta siguiente cambia el nombre de la tabla de empleado a emp.

hive> ALTER TABLE employee RENAME TO emp;

Programa JDBC

El programa JDBC para cambiar el nombre de una tabla es la siguiente.

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

El programa se guarda en un archivo llamado HiveAlterRenameTo.java. Utilice los siguientes comandos para compilar y ejecutar este programa.

$ javac HiveAlterRenameTo.java
$ java HiveAlterRenameTo

Salida:

Table renamed successfully.

Declaracin Cambio

La siguiente tabla contiene los campos de tabla de empleados y que muestra los campos que se va a cambiar (en negrita).

Nombre del campo Conversin de tipo de datos Cambiar Nombre de campo Convertir al tipo de datos
Eid Int Eid Int
Nombre Cadena Ename Cadena
Sueldo Flotacin Sueldo Doble
Designacin Cadena Designacin Cadena

Las consultas siguientes cambiar el nombre de la columna nombre y tipo de datos de la columna utilizando los datos anteriores:

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

Programa JDBC

A continuacin se muestra el programa JDBC para cambiar una columna.

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

El programa se guarda en un archivo llamado HiveAlterChangeColumn.java. Utilice los siguientes comandos para compilar y ejecutar este programa.

$ javac HiveAlterChangeColumn.java
$ java HiveAlterChangeColumn

Salida:

Change column successful.

Agregar columnas Declaracin

La consulta siguiente agrega una columna denominada dept. de la tabla de empleados.

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

Programa JDBC

El programa JDBC para agregar una columna a una tabla se indica a continuacin.

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

El programa se guarda en un archivo llamado HiveAlterAddColumn.java. Utilice los siguientes comandos para compilar y ejecutar este programa.

$ javac HiveAlterAddColumn.java
$ java HiveAlterAddColumn

Salida:

Add column successful.

Sustituir Declaracin

La siguiente consulta elimina todas las columnas de laempleados tabla y lo reemplaza con emp ynombres columnas:

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

Programa JDBC

A continuacin se muestra el programa JDBC para sustituir eid columna empid y ename columna con el nombre.

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

El programa se guarda en un archivo llamado HiveAlterReplaceColumn.java. Utilice los siguientes comandos para compilar y ejecutar este programa.

$ javac HiveAlterReplaceColumn.java
$ java HiveAlterReplaceColumn

Salida:

Replace column successful.
Advertisements