Está en la página 1de 4

Big Data

Departamento de Ciencia de la Computación


Universidad Católica San Pablo
24 de Octubre de 2023

Consultas JOIN en Hive


Rafael Alonso David Peñalva
rafael.david@ucsp.edu.pe

1. Introducción
1.1. ¿Qué es Hive?
Hive es una infraestructura de almacenamiento de datos basada en Apache Hadoop. Hadoop
proporciona capacidades masivas de expansión y tolerancia a fallos para el almacenamiento y
procesamiento de datos en hardware común.
Hive está diseñado para facilitar la resumen de datos, las consultas ad-hoc y el análisis de grandes
volúmenes de datos. Proporciona SQL, lo que permite a los usuarios realizar consultas ad-hoc,
resumen y análisis de datos fácilmente. Al mismo tiempo, el SQL de Hive ofrece a los usuarios
múltiples lugares para integrar su propia funcionalidad para realizar análisis personalizados, como
Funciones Definidas por el Usuario (UDFs)

1.2. Lo que Hive NO es


Hive no está diseñado para el procesamiento de transacciones en línea. Es mejor utilizarlo para
tareas tradicionales de almacenamiento de datos

1.3. Consultas JOIN en Hive


Las consultas JOIN en Hive, al igual que en otros sistemas basados en SQL, permiten combinar
registros de dos o más tablas en función de una o varias condiciones de coincidencia (generalmente
basadas en valores de columnas). Hive, como herramienta de consulta en el ecosistema Hadoop,
permite realizar JOIN en grandes volúmenes de datos distribuidos.

2. Sintaxis y Tipos de JOIN


Utilizaremos la sintaxis descrita en la documentación de Hive:

1 join_table :
2 table_reference [ INNER ] JOIN table_factor [ join_condition ]
3 | table_reference { LEFT | RIGHT | FULL } [ OUTER ] JOIN table_reference
join_condition
4 | table_reference LEFT SEMI JOIN table_reference join_condition
5 | table_reference CROSS JOIN table_reference [ join_condition ]

Tenemos los siguientes tipos de JOIN:

INNER JOIN

LEFT OUTER JOIN

RIGHT OUTER JOIN


Consultas JOIN en Hive

FULL OUTER JOIN

LEFT SEMI JOIN

CROSS JOIN

3. Ejemplos
Se definirán dos tablas para llevar a cabo los ejemplos:

autor_id nombre
1 García
2 Borges
3 Allende

Cuadro 1: Autores

libro_id titulo autor_id


1 Cien años de soledad 1
2 Ficciones 2
3 La casa de los espíritus 3
4 El Aleph 2
5 Eva Luna 3
6 Sobre héroes y tumbas NULL

Cuadro 2: Libros

3.1. INNER JOIN


Combina registros de ambas tablas donde la condición especificada en la expresión es verdadera.
Si la condición no se cumple para ciertos registros, estos registros no aparecerán en el resultado.

1 SELECT autores . nombre , libros . titulo


2 FROM autores
3 INNER JOIN libros ON autores . autor_id = libros . autor_id ;

El resultado de la consulta sería:

nombre titulo
García Cien años de soledad
Borges Ficciones
Allende La casa de los espíritus
Borges El Aleph
Allende Eva Luna

3.2. LEFT OUTER JOIN


Devuelve todos los registros de la tabla de la izquierda y los registros coincidentes de la tabla de
la derecha. Si no hay coincidencias en la tabla de la derecha, el resultado contendrá NULL en
las columnas de la derecha.

2
Consultas JOIN en Hive

1 SELECT autores . nombre , libros . titulo


2 FROM autores
3 LEFT OUTER JOIN libros ON autores . autor_id = libros . autor_id ;

El resultado de la consulta serían todos los autores y sus libros, incluso si no tienen un libro:

nombre titulo
García Cien años de soledad
Borges Ficciones
Allende La casa de los espíritus
Borges El Aleph
Allende Eva Luna

3.3. RIGHT OUTER JOIN


Es el inverso del LEFT JOIN. Devuelve todos los registros de la tabla de la derecha y los registros
coincidentes de la tabla de la izquierda. Si no hay coincidencias en la tabla de la izquierda, el
resultado contendrá NULL en las columnas de la izquierda.

1 SELECT autores . nombre , libros . titulo


2 FROM autores
3 RIGHT OUTER JOIN libros ON autores . autor_id = libros . autor_id ;

El resultado de la consulta serían todos los libros y sus autores, incluso si un libro no tiene un
autor definido:

nombre titulo
García Cien años de soledad
Borges Ficciones
Allende La casa de los espíritus
Borges El Aleph
Allende Eva Luna
NULL Sobre héroes y tumbas

3.4. FULL OUTER JOIN


Devuelve todos los registros cuando hay una coincidencia en una de las tablas. Es decir, devuelve
registros de ambas tablas, rellenando con NULL en los lados donde no hay coincidencia.

1 SELECT autores . nombre , libros . titulo


2 FROM autores
3 FULL OUTER JOIN libros ON autores . autor_id = libros . autor_id ;

El resultado de la consulta serían todos los autores y todos los libros, independientemente de si
hay una coincidencia:

3.5. LEFT SEMI JOIN


Devuelve registros de la tabla de la izquierda para los cuales existe al menos un registro en la
tabla de la derecha que cumple con la condición de JOIN. No devuelve ninguna columna de la
tabla de la derecha.

3
Consultas JOIN en Hive

nombre titulo
García Cien años de soledad
Borges Ficciones
Allende La casa de los espíritus
Borges El Aleph
Allende Eva Luna
NULL Sobre héroes y tumbas

1 SELECT autores . nombre


2 FROM autores
3 LEFT SEMI JOIN libros ON autores . autor_id = libros . autor_id ;

El resultado de la consulta serían los autores que al menos tienen un libro:

nombre
García
Borges
Allende

3.6. CROSS JOIN


Produce el producto cartesiano de las dos tablas; es decir, combina cada fila de la tabla de la
izquierda con cada fila de la tabla de la derecha.

1 SELECT autores . nombre , libros . titulo


2 FROM autores
3 CROSS JOIN libros ;

El resultado de la consulta sería (Solo mostrando las primeras filas para ahorrar espacio):

nombre titulo
García Cien años de soledad
García Ficciones
García La casa de los espíritus
... ...

Serían 18 filas en total (3 autores x 6 libros).

También podría gustarte