Hive - Crear tabla
Este capítulo explica cómo crear una tabla y cómo insertar datos en ella. Las convenciones de crear una tabla en HIVE son bastante similares a crear una tabla usando SQL.
Crear declaración de tabla
Create Table es una declaración que se 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 necesita crear una tabla llamada employee utilizando CREATE TABLEdeclaración. La siguiente tabla enumera los campos y sus tipos de datos en la tabla de empleados:
No Señor | Nombre del campo | Tipo de datos |
---|---|---|
1 | Eid | En t |
2 | Nombre | Cuerda |
3 | Salario | Flotador |
4 | Designacion | cuerda |
Los siguientes datos son un comentario, campos con formato de fila, como terminador de campo, terminador de líneas 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 employee 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 agrega la opción SI NO EXISTE, Hive ignora la declaración en caso de que la tabla ya exista.
En la creación exitosa de la tabla, puede ver la siguiente respuesta:
OK
Time taken: 5.905 seconds
hive>
Programa JDBC
Se da un ejemplo del programa JDBC para crear una tabla.
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();
}
}
Guarde el programa 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.
Declaración de carga de datos
Generalmente, después de crear una tabla en SQL, podemos insertar datos usando la instrucción Insert. Pero en Hive, podemos insertar datos usando la instrucción LOAD DATA.
Al insertar datos en Hive, es mejor usar LOAD DATA para almacenar registros masivos. Hay dos formas de cargar datos: una es desde el sistema de archivos local y la segunda es desde el sistema de archivos Hadoop.
Sintaxis
La sintaxis de los datos de carga es la siguiente:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
- LOCAL es un identificador para especificar la ruta local. Es opcional.
- OVERWRITE es opcional para sobrescribir los datos de la tabla.
- La PARTICIÓN es opcional.
Ejemplo
Insertaremos los siguientes datos en la tabla. Es un archivo de texto llamadosample.txt en /home/user directorio.
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 siguiente consulta carga el texto dado en la tabla.
hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt'
OVERWRITE INTO TABLE employee;
En la descarga exitosa, puede ver la siguiente respuesta:
OK
Time taken: 15.905 seconds
hive>
Programa JDBC
A continuación se muestra el programa JDBC para cargar datos dados 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();
}
}
Guarde el programa 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