En publicaciones anteriores hemos creado la BBDD de Hive para almacenar datos, y hemos cargado datos en HDInsight (HDI) además de crear la tabla externa que hace referencia a los archivos cargados.
Recapitulando información de la Introducción a Hive, debemos recordar que el objetivo que se persigue con Hive es:
- Utilizar un lenguaje parecido al SQL tradicional (HiveSQ).
- Mediante este lenguaje ejecutar trabajos Map&Reduce sobre el data almacenado.
A continuación vamos a ejecutar consultas con la herramienta de línea de comando y analizaremos el comportamiento.
Otros artículos relacionados con las primeras consultas son los siguientes:
- Apache Hive en HDInsight: Primeras consultas (queries) HiveQL
- Apache Hive en HDInsight: Primeras consultas (queries) HiveQL (II)
Operadores Relacionales en HiveQL
Además de los conocidos en TSQL, puedes utilizar el operador != que es lo mismo que <>
Operadores Aritméticos en HiveQL
Igual que TSQL
Operadores Lógicos en HiveQL
Igual que TSQL; además se soporta && que es lo mismo que AND y || que es lo mismo que OR.
Funciones Matemáticas en HiveQL
Parecido a TSQL con extensiones.
Funciones de fecha en HiveQL
En versiones de Hadoop anteriores a la 0.12 el tipo de datos Date no existe (en Hadoop 2.0 ya estará implementado). Mientras tanto, las fechas es natural almacenarlas como string o como timestamps (conteo desde 1970-01-01 hasta el 2038).
Mientras tanto, existe una lista de funciones que realizan las conversiones asumiendo que la fecha que pasamos a las funciones es del formato (“1970-01-01 00:00:00“). Existen funciones como YEAR, MINUTE, DAY, MONTH, WEEKOFYEAR, DATEDIFF, DATE_ADD, DATE_SUB.
Aquí puedes encontrar información respecto a la implementación de Date a partir de Hadoop 0.12 (https://issues.apache.org/jira/browse/HIVE-4055).
La implementación de tipo de datos timestamp está disponible desde la versión de Hadoop 0.8 (https://issues.apache.org/jira/browse/HIVE-2272)
Funciones de cadena en HiveQL
Para trabajar con funciones revisa el siguiente enlace: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF, y busca la sección “String Functions”.
Allí podrás ver que todas (incluso más) las funciones de cadena que has utilizado en TSQL, están implementadas en HiveQL. No están implementadas con los nombres que conoces en TSQL; no te resultará complicado familiarizarte; por ejemplo, CONCAT, DECODE, CONCAT_WS, DECODE, ENCODE, FIND_IN_SET, FORMAT, INSTR, LENGTH, LPAP, LOWER, UPPER, LTRIM, RTIM, TRIM, SUBSTR. Incluso verás funciones nuevas como STR_TO_MAP, SPLIT, y REGX* para expresiones regulares. Obviamente, no haremos una publicación por cada función; la práctica hará que se sientas más cómodo con el formato de estas nuevas funciones.
Referencias
Tutorial Apache Hive (lenguaje): https://cwiki.apache.org/confluence/display/Hive/Tutorial
Apache Hive (Arquitectura): https://cwiki.apache.org/confluence/display/Hive/Home
Funciones en Hive: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF