¿Qué es el lenguaje de consulta de Hive? HiveQL Operatoros
⚡ Resumen inteligente
Hive Query Language proporciona los operadores que impulsan cada expresión HiveQL, agrupadosping Las dividen en familias relacionales, aritméticas, lógicas, de tipos complejos y de constructores que, en conjunto, abarcan la comparación, el cálculo y el acceso a datos anidados.

¿Qué es el lenguaje de consulta Hive (HiveQL)?
Hive Query Language (HiveQL) es un lenguaje de consulta en Colmena Apache Para el procesamiento y análisis de datos estructurados, Hive se distingue de la complejidad de la programación MapReduce. Reutiliza conceptos comunes de las bases de datos relacionales, como tablas, filas, columnas y esquemas, para facilitar el aprendizaje. Hive proporciona una interfaz de línea de comandos (CLI) para escribir consultas mediante el lenguaje de consulta de Hive (HiveQL).
La mayoría de las interacciones tienden a tener lugar a través de una interfaz de línea de comandos (CLI). Generalmente, la sintaxis de HiveQL es similar a la SQL Sintaxis con la que la mayoría de los analistas de datos están familiarizados. Los cuatro formatos de archivo mencionados en la documentación original de Hive son TEXTFILE, SEQUENCEFILE, ORC y RCFILE (Record Columnar File); las versiones actuales también leen y escriben Parquet y Avro, y ORC es el formato que se suele utilizar en la mayoría de las guías de optimización.
Hive utiliza una base de datos Derby integrada para el almacenamiento de metadatos de un solo usuario. Para implementaciones de metastore compartidas o multiusuario, Hive utiliza MySQL o bien otra base de datos relacional externa, ya que Derby solo permite una sesión a la vez.
HiveQL incorporado Operatoros
Hive proporciona operadores integrados para las operaciones de datos que se ejecutan sobre las tablas almacenadas en el almacén de Hive.
Estos operadores actúan sobre los operandos dentro de una expresión y devuelven un valor según la lógica aplicada, ya sea una comparación, un cálculo o una búsqueda en una columna anidada.
A continuación se muestran los principales tipos de operadores integrados en HiveQL:
- Operadores relacionales
- Operadores aritméticos
- Operadores logicos
- Operators en tipos complejos
- Constructores de tipos complejos
Cada familia se trata en su propia sección a continuación, con la tabla completa de operadores para esa familia.
Relacional Operators en HiveQL
Utilizamos operadores relacionales para comparar relaciones entre dos operandos.
- Operatérminos como igual a, distinto de, menor que y mayor que.
- En estos operadores, todos los tipos de operandos son tipos primitivos, y los operadores de coincidencia de patrones solo aceptan cadenas de caracteres.
Cada operador relacional devuelve un valor booleano, razón por la cual estos operadores son la base de las cláusulas WHERE, las condiciones JOIN y las ramas CASE WHEN. La siguiente tabla ofrece detalles sobre los operadores relacionales y su uso en HiveQL:
| Incorporado Operator | Mareas Ideales para Lecciones | Operand |
|---|---|---|
| X = Y | VERDADERO si la expresión X es equivalente a la expresión Y. En caso contrario, FALSO. | Se necesitan todos los tipos primitivos. |
| X != Y | VERDADERO si la expresión X no es equivalente a la expresión Y. En caso contrario, FALSO. | Se necesitan todos los tipos primitivos. |
| X < Y | VERDADERO si la expresión X es menor que la expresión Y. En caso contrario, FALSO. | Se necesitan todos los tipos primitivos. |
| X <= Y | VERDADERO si la expresión X es menor o igual que la expresión Y. En caso contrario, FALSO. | Se necesitan todos los tipos primitivos. |
| X > Y | VERDADERO si la expresión X es mayor que la expresión Y. En caso contrario, FALSO. | Se necesitan todos los tipos primitivos. |
| X >= Y | VERDADERO si la expresión X es mayor o igual que la expresión Y. En caso contrario, FALSO. | Se necesitan todos los tipos primitivos. |
| X ES NULO | VERDADERO si la expresión X se evalúa como NULA, de lo contrario FALSO. | Se necesita todo tipo |
| X NO ES NULO | FALSO si la expresión X se evalúa como NULA, de lo contrario VERDADERO. | Se necesita todo tipo |
| X ME GUSTA Y | VERDADERO si el patrón de cadena X coincide con Y, de lo contrario FALSO. | Solo toma cuerdas |
| X RL COMO Y | NULL si X o Y es NULL, TRUE si alguna subcadena de X coincide con el Java expresión regular Y, de lo contrario FALSO. | Solo toma cuerdas |
| X REGEXP Y | Lo mismo que RLIKE. | Solo toma cuerdas |
Tenga en cuenta que una comparación con NULL nunca devuelve VERDADERO ni FALSO. Por eso, la tabla enumera IS NULL e IS NOT NULL como operadores separados, en lugar de esperar que X = NULL funcione.
Aritmética de HiveQL Operatoros
Utilizamos operadores aritméticos para realizar operaciones aritméticas con operandos.
- Operaciones aritméticas como la suma, la restatracLas operaciones de ción, multiplicación y división entre operandos utilizan estos operadores.
- Los tipos de operandos en estos operadores son todos tipos numéricos.
Ejemplo de muestra:
2 + 3 da como resultado 5.
En este ejemplo, '+' es el operador, 2 y 3 son los operandos, y el valor de retorno es 5.
La siguiente tabla proporciona detalles sobre los operadores aritméticos en el lenguaje de consulta de Hive:
| Incorporado Operator | Mareas Ideales para Lecciones | Operand |
|---|---|---|
| X+Y | Devolverá el resultado de sumar los valores X e Y. | Se necesitan todos los tipos de números. |
| X-Y | Devolverá la salida de subtracCalcular Y a partir del valor X. | Se necesitan todos los tipos de números. |
| X * Y | Devolverá el resultado de multiplicar los valores X e Y. | Se necesitan todos los tipos de números. |
| X/Y | Devolverá el resultado de dividir Y de X. | Se necesitan todos los tipos de números. |
| X % Y | Devolverá el resto resultante de dividir X entre Y. | Se necesitan todos los tipos de números. |
| X e Y | Devolverá la salida del AND bit a bit de X e Y. | Se necesitan todos los tipos de números. |
| X | Y | Devolverá la salida del OR bit a bit de X e Y. | Se necesitan todos los tipos de números. |
| X^Y | Devolverá la salida del XOR bit a bit de X e Y. | Se necesitan todos los tipos de números. |
| ~X | Devolverá la salida del NOT bit a bit de X. | Se necesitan todos los tipos de números. |
Las últimas cuatro filas son aritméticas a nivel de bits en lugar de aritmética ordinaria: operan sobre la representación binaria de operandos enteros, por lo que &, | y ^ no son lo mismo que los operadores lógicos AND, OR y NOT que se tratan en la siguiente sección.
Lógica de HiveQL Operatoros
Utilizamos operadores lógicos para realizar operaciones lógicas sobre los operandos.
- Las operaciones lógicas como AND, OR y NOT entre operandos utilizan estos operadores.
- Los tipos de operandos en estos operadores son todos de tipo BOOLEAN.
La siguiente tabla proporciona detalles sobre los operadores lógicos en HiveQL:
| de telecomunicaciones | Mareas Ideales para Lecciones | OperaNDS |
|---|---|---|
| X Y Y | VERDADERO si tanto X como Y son VERDADEROS, de lo contrario FALSO. | Sólo tipos booleanos |
| X && Y | Igual que X Y Y, pero aquí usamos el símbolo &&. | Sólo tipos booleanos |
| X O Y | VERDADERO si X o Y o ambos son VERDADEROS, de lo contrario FALSO. | Sólo tipos booleanos |
| X || Y | Igual que X O Y, pero aquí usamos el símbolo ||. | Sólo tipos booleanos |
| NO X | VERDADERO si X es FALSO, de lo contrario FALSO. | Sólo tipos booleanos |
| !X | Igual que NOT X, pero aquí usamos el símbolo !. | Sólo tipos booleanos |
Dado que los operadores relacionales devuelven valores booleanos, los operadores lógicos son los que los combinan: un predicado como salary > 50000 AND dept = 'Sales' encadena una familia con la otra.
Operators sobre tipos complejos
Los operadores relacionales, aritméticos y lógicos trabajan con valores escalares únicos. Hive también almacena columnas de tipo array, map y struct, las cuales requieren un mecanismo diferente para acceder a sus elementos. La siguiente tabla detalla los operadores de tipos complejos, que proporcionan dicho mecanismo:
| de telecomunicaciones | OperaNDS | Mareas Ideales para Lecciones |
|---|---|---|
| Un] | A es una matriz y n es un tipo entero | Devolverá el enésimo elemento del array A. El primer elemento tiene el índice 0. |
| M[tecla] | M es un Map y la clave tiene tipo K | Devolverá el valor correspondiente a la clave en el mapa. |
Ambas formas son expresiones ordinarias, por lo que pueden aparecer en una lista SELECT, una cláusula WHERE o un GROUP BY, y se accede a un campo de estructura con la notación de punto, como S.field, en lugar de un corchete.
Constructores de tipos complejos
Mientras que los operadores anteriores leen una columna compleja existente, los constructores la crean. La siguiente tabla ofrece detalles sobre los constructores de tipos complejos, que crean instancias de los tipos de datos complejos (Array, Map y Struct) en Hive.
En esta sección, vamos a ver las operaciones que se realizan en los constructores de tipos complejos.
| de telecomunicaciones | OperaNDS | Mareas Ideales para Lecciones |
|---|---|---|
| matriz | (val1, val2,…) | Creará una matriz con los elementos dados como se mencionó, como val1, val2. |
| crear_unión | (etiqueta, val1, val2,…) | Creará un tipo de unión con el valor al que hace referencia el parámetro de etiqueta. |
| mapa | (clave1, valor1, clave2, valor2,…) | Creará un mapa con los pares clave/valor dados que se mencionan en los operandos. |
| estructura_con_nombre | (nombre1, val1, nombre2, val2,…) | Creará una estructura con los nombres de campo y los valores especificados en los operandos. |
| struct | (val1, val2, val3,…) | Crea una estructura con los valores de campo especificados. Los nombres de los campos de la estructura serán col1, col2, etc. |
Los constructores se utilizan con mayor frecuencia en una instrucción INSERT que rellena una columna compleja, o en una instrucción SELECT que agrupa varias columnas escalares en una sola estructura antes de escribir el resultado en otra tabla.
Funciones integradas de HiveQL
OperaLos tors cubren la comparación, el cálculo y el acceso a elementos, pero no redondean un número, recortan una cadena ni realizan sustituciones.tract dos fechas. Ese trabajo pertenece a las funciones integradas de Hive, que se llaman por su nombre dentro de las mismas expresiones en las que aparecen los operadores. La tabla a continuación agrupa las familias con las que se encuentra primero un principiante.
| Familia de funciones | Miembros típicos | Para qué se utiliza |
|---|---|---|
| Matemático | round(), floor(), ceil(), abs(), pow(), sqrt(), rand() | Redondeo, potencias y otros cálculos numéricos sobre un único valor de columna. |
| Cordón | concat(), substr(), upper(), lower(), trim(), length(), regexp_replace() | Limpieza, recorte y reacondicionamientoping texto antes de ser comparado o agrupado. |
| Fecha | fecha_actual, año(), mes(), dateiff(), date_add(), marca_de_tiempo_unix() | Extracdeterminar partes de la fecha y medir intervalos entre dos fechas. |
| Condicional | if(), CASE WHEN, coalesce(), nvl(), isnull() | Seleccionar un valor a nivel de fila y reemplazar NULL con un valor de reserva. |
| Colección | tamaño(), claves_mapa(), valores_mapa(), array_contiene(), ordenar_array() | Inspeccionando las columnas de array, mapa y estructura a las que llegan los operadores de tipo complejo. |
| Conversión de tipo | cast(), binary() | Forzar que una columna tenga el tipo que espera un operador. |
| Agregado (UDAF) | count(), sum(), avg(), min(), max(), collect_set() | Combinar varias filas en un solo valor, normalmente junto con GROUP BY. |
La lista de funciones depende de la versión de Hive, por lo que conviene leerla desde la propia sesión en lugar de desde una página estática. Dos instrucciones hacen eso:
SHOW FUNCTIONS; DESCRIBE FUNCTION round; DESCRIBE FUNCTION EXTENDED round;
SHOW FUNCTIONS enumera todos los nombres registrados, DESCRIBE FUNCTION imprime la firma de una línea y la forma EXTENDED agrega ejemplos de uso donde la clase implementadora los proporciona. Cuando ninguna función integrada se ajusta, Hive acepta una función definida por el usuario escrito en Java.
HiveQL vs SQL: Diferencias clave
HiveQL toma prestada la sintaxis SQL deliberadamente, y las tablas de operadores anteriores resultarán familiares para cualquiera que haya escrito SQL. El modelo de ejecución subyacente no es el mismo, y las diferencias se hacen evidentes en cuanto una consulta va más allá de un simple SELECT.
| Comportamiento | ColmenaQL | SQL tradicional (RDBMS) |
|---|---|---|
| Manejo de esquemas | Esquema en lectura: el esquema se aplica cuando se consulta el archivo. | Esquema en escritura: el esquema se aplica cuando se inserta la fila. |
| Actualizar y eliminar a nivel de fila | Solo compatible con tablas ACID; las tablas administradas son ACID por defecto a partir de Hive 3.0. | Compatible con todas las tablas de forma predeterminada. |
| Índices | La compatibilidad con índices se eliminó en Hive 3.0 (HIVE-18448); los índices a nivel de archivo ORC o Parquet y las vistas materializadas lo reemplazan. | El árbol B y otros índices secundarios son una característica fundamental. |
| Ejecución y latencia | Compila en trabajos por lotes en Tez, MapReduce o Spark, por lo que incluso las consultas pequeñas conllevan un coste de puesta en marcha del trabajo. | Ejecución interactiva, generalmente en milisegundos. |
| Objetivo de diseño | Rendimiento en archivos muy grandes en HDFS o en un almacén de objetos. | Lecturas y escrituras de baja latencia en un único servidor o clúster. |
La consecuencia práctica para la escritura expresiva es pequeña, pero real. OperaLos operadores se comportan como se espera, pero un predicado que se respondería a partir de un índice en una base de datos relacional se responde en Hive mediante el escaneo de archivos, por lo que filtrar en una columna de partición suele ser mucho más útil que ajustar el operador en sí.
