
- Hive - Inicio
- Hive - Introducción
- Hive - Instalación
- Hive - Tipos de Datos
- Hive - Create Database
- Hive - Drop Database
- Hive - Create Table
- Hive - Alter Table
- Hive - Drop Table
- Hive - Partición
- Hive - Función de Operadores
- Hive - Hive - Función de Funciones
- Hive - Ver e Índices
- HiveQL
- HiveQL - Select-Where
- HiveQL - Select Order By
- HiveQL - Select Group By
- HiveQL - Select Joins
Hive - Create Table
En este captulo se explica cmo crear una tabla y cmo insertar datos en ella. Las convenciones de crear una tabla en Hive es muy similar a la creacin de una tabla SQL
Instruccin Create Table
Crear una tabla es una declaracin utiliza para crear una tabla en Hive. La sintaxis y el ejemplo son los siguientes:
Sintaxis
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [ROW FORMAT row_format] [STORED AS file_format]
Ejemplo
Supongamos que usted necesita para crear una tabla denominada empleado mediante CREATE TABLE instruccin. La siguiente tabla muestra los campos y sus tipos de datos de tabla de empleado:
Sr No | Nombre del campo | Tipo de datos |
---|---|---|
1 | Eid | Int |
2 | Nombre | Cadena |
3 | Sueldo | Flotacin |
4 | Designacin | Cadena |
Los datos siguientes es un comentario, campos con formato de fila como terminador de campo, Lneas terminador, y tipo de archivo almacenado.
COMMENT Employee details FIELDS TERMINATED BY \t LINES TERMINATED BY \n STORED IN TEXT FILE
La siguiente consulta crea una tabla llamada empleados utilizando los datos anteriores.
hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String, > salary String, destination String) > COMMENT Employee details > ROW FORMAT DELIMITED > FIELDS TERMINATED BY \t > LINES TERMINATED BY \n > STORED AS TEXTFILE;
Si a ello se agrega la opcin SI NO EXISTE, pasa por alto la declaracin en caso de que la tabla ya existe.
De creacin de la tabla, usted podr ver la siguiente respuesta:
OK Time taken: 5.905 seconds hive>
Programa JDBC
El programa JDBC para crear una tabla se han dado un ejemplo.
import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveCreateTable { 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("CREATE TABLE IF NOT EXISTS " +" employee ( eid int, name String, " +" salary String, destignation String)" +" COMMENT Employee details" +" ROW FORMAT DELIMITED" +" FIELDS TERMINATED BY \t" +" LINES TERMINATED BY \n" +" STORED AS TEXTFILE;"); System.out.println( Table employee created.); con.close(); } }
El programa se guarda en un archivo llamado HiveCreateDb.java. Los siguientes comandos se utilizan para compilar y ejecutar este programa.
$ javac HiveCreateDb.java $ java HiveCreateDb
Salida
Table employee created.
Sentencia Load Data
En general, despus de crear una tabla en SQL, podemos introducir los datos utilizando la instruccin Insert. Pero en Hive, podemos introducir datos mediante la sentencia LOAD DATA.
Al insertar datos en Hive, es mejor utilizar para almacenar datos de carga a granel. Hay dos formas de cargar datos: uno es de sistema de archivos local y la segunda es de Hadoop sistema de archivos.
Sintaxis
La sintaxis para carga de datos es el siguiente:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
- Es el identificador LOCAL para especificar la ruta de acceso local. Es opcional.
- SOBRESCRIBIR es opcional para sobrescribir los datos de la tabla.
- PARTICIN es opcional.
Ejemplo
Vamos a incluir los siguientes datos en la tabla. Se trata de un archivo de texto llamadosample.txten el directorio /home/directorio de usuario.
1201 Gopal 45000 Technical manager 1202 Manisha 45000 Proof reader 1203 Masthanvali 40000 Technical writer 1204 Kiran 40000 Hr Admin 1205 Kranthi 30000 Op Admin
La consulta siguiente carga el texto dado en la tabla.
hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt' > OVERWRITE INTO TABLE employee;
En descarga exitosa, usted podr ver la siguiente respuesta:
OK Time taken: 15.905 seconds hive>
Programa JDBC
A continuacin se muestra el programa JDBC para cargar datos en la tabla.
import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveLoadData { 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("LOAD DATA LOCAL INPATH '/home/user/sample.txt'" + "OVERWRITE INTO TABLE employee;"); System.out.println("Load Data into employee successful"); con.close(); } }
El programa se guarda en un archivo llamado HiveLoadData.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveLoadData.java $ java HiveLoadData
Salida:
Load Data into employee successful