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:

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

 

Eladio Rincón

Eladio Rincón is professionally focused on SQL Server databases. He is an MVP on SQL Server since 2003, and his area of expertise is resolution of performance and scalability issues for OLTP based systems. His professional career revolves on SQL Server mentoring, consulting, and training projects. He believes that mixing training and mentoring projects is the best approach to help the clients to get the most from SQL Server. With other mentors of SolidQ he has developed a tuning methodology applied in most of the SQL Server consulting projects.