HiveQL - Select-Where


Advertisements

La Hive Query Language (HiveQL) es un lenguaje de consulta de Hive para procesar y analizar datos estructurados en un Metastore. En este capítulo se explica cómo utilizar la instrucción SELECT con cláusula where.

Instrucción SELECT se utiliza para recuperar los datos de una tabla. Cláusula Where funciona de forma similar a una condición. Filtra los datos utilizando el estado y te da un resultado finito. Los operadores y funciones generar una expresión que satisface 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 SELECCIONAR…en la cláusula where. Supongamos que tenemos la tabla de empleados como se indica a continuación, con campos denominado Id, Nombre, sueldo, designación, y Depto. Generar una consulta para recuperar los detalles de empleado que gana un sueldo de más de 30000 Rs.

+------+--------------+-------------+-------------------+--------+
| 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 de empleado con el escenario anterior:

hive> SELECT * FROM employee WHERE salary>30000;

El éxito de la ejecución de la consulta, se llega a 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 en la cláusula where para el ejemplo dado 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 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();
   }
}

El programa se guarda 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
Advertisements