Hive - Alter Table


Advertisements

En este capítulo se explica cómo 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.

Instrucción Alter Table

Se utiliza para modificar una tabla en Colmena.

Sintaxis

La declaración 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 Declaración...

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.

Declaración 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 Conversión de tipo de datos Cambiar Nombre de campo Convertir al tipo de datos
Eid Int Eid Int
Nombre Cadena Ename Cadena
Sueldo Flotación Sueldo Doble
Designación Cadena Designación 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 continuación 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 Declaración

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 continuación.

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 Declaración

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 continuación 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