Hive Query Language (HiveQL) es un lenguaje de consulta para Hive para procesar y analizar datos estructurados en Metastore. Este capÃtulo explica cómo usar una instrucción SELECT con una cláusula WHERE.
La instrucción SELECT se utiliza para recuperar datos de una tabla. La cláusula WHERE funciona de manera similar a una condición. Filtra los datos usando una condición y da el resultado final. Los operadores y funciones integrados generan una expresión que satisface la condición.
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];
Tomemos un ejemplo para la cláusula SELECT… WHERE. Suponga que tenemos una tabla de empleados como se muestra a continuación con campos llamados Id, Nombre, Salario, Designación y Depto. Cree una consulta para obtener detalles de los empleados que reciben salarios superiores a 30.000 rupias.
+------+--------------+-------------+-------------------+--------+ | 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 información sobre un empleado que utiliza el escenario anterior:
hive> SELECT * FROM employee WHERE salary>30000;
Si la solicitud es exitosa, 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 | +------+--------------+-------------+-------------------+--------+
El programa JDBC utilizado en la cláusula where para este ejemplo se ve asÃ.
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
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
🚫