HiveQL - Seleccionar dónde
Hive Query Language (HiveQL) es un lenguaje de consulta para que Hive procese y analice datos estructurados en un Metastore. Este capítulo explica cómo utilizar la instrucción SELECT con la cláusula WHERE.
La instrucción SELECT se utiliza para recuperar los datos de una tabla. La cláusula WHERE funciona de manera similar a una condición. Filtra los datos usando la condición y le da un resultado finito. Los operadores y funciones integrados generan una expresión que cumple la condición.
Sintaxis
A continuación se muestra la sintaxis de la consulta SELECT:
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[HAVING having_condition]
[CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]]
[LIMIT number];
Ejemplo
Tomemos un ejemplo para la cláusula SELECT ... WHERE. Suponga que tenemos la tabla de empleados como se indica a continuación, con campos llamados Id, Nombre, Salario, Designación y Departamento. Genere una consulta para recuperar los detalles de los empleados que ganan un salario de más de Rs 30000.
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
|1202 | Manisha | 45000 | Proofreader | PR |
|1203 | Masthanvali | 40000 | Technical writer | TP |
|1204 | Krian | 40000 | Hr Admin | HR |
|1205 | Kranthi | 30000 | Op Admin | Admin |
+------+--------------+-------------+-------------------+--------+
La siguiente consulta recupera los detalles del empleado utilizando el escenario anterior:
hive> SELECT * FROM employee WHERE salary>30000;
En la ejecución exitosa de la consulta, puede ver la siguiente respuesta:
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
|1202 | Manisha | 45000 | Proofreader | PR |
|1203 | Masthanvali | 40000 | Technical writer | TP |
|1204 | Krian | 40000 | Hr Admin | HR |
+------+--------------+-------------+-------------------+--------+
Programa JDBC
El programa JDBC para aplicar la cláusula where para el ejemplo dado es el siguiente.
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveQLWhere {
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
Resultset res = stmt.executeQuery("SELECT * FROM employee WHERE salary>30000;");
System.out.println("Result:");
System.out.println(" ID \t Name \t Salary \t Designation \t Dept ");
while (res.next()) {
System.out.println(res.getInt(1) + " " + res.getString(2) + " " + res.getDouble(3) + " " + res.getString(4) + " " + res.getString(5));
}
con.close();
}
}
Guarde el programa en un archivo llamado HiveQLWhere.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveQLWhere.java
$ java HiveQLWhere
Salida:
ID Name Salary Designation Dept
1201 Gopal 45000 Technical manager TP
1202 Manisha 45000 Proofreader PR
1203 Masthanvali 40000 Technical writer TP
1204 Krian 40000 Hr Admin HR