Introducción
En las místicas tierras del Este, un venerado monasterio se erguía en la cima de una montaña imponente, envuelto en las nieblas de la sabiduría antigua. Dentro de sus venerables paredes residía un venerado guerrero-monje llamado Hiro, un maestro del arte sagrado de la manipulación de datos. Su inquebrantable dedicación a desentrañar los secretos de los datos le había ganado el respeto de los eruditos y los monjes por igual.
Un día, el abad del monasterio convocó a Hiro a sus cámaras, con una expresión preocupada en su rostro. "Hiro, ha surgido una situación desesperada", comenzó el abad. "Nuestros rollos sagrados, que contienen el conocimiento antiguo de nuestros antepasados, se han dispersado por todo el reino. Debemos recuperar y organizar esta información invaluable antes de que se pierda para siempre".
Hiro se inclinó profundamente, con los ojos iluminados por la determinación. "No te fallaré, venerable maestro", juró. "Con el poder de Hadoop y sus Funciones de Generación de Tablas, exploraré la tierra y restauraré el orden a nuestra sabiduría ancestral".
El abad asintió solemnemente, confiando en la inquebrantable determinación de Hiro. Así comenzó la búsqueda de Hiro por dominar las Funciones de Generación de Tablas de Hive, un viaje que pondría a prueba sus habilidades y su determinación hasta los límites extremos.
Explorando la Función Lateral View
En este paso, profundizaremos en la poderosa función Lateral View, que nos permite descomponer estructuras de datos complejas en formas más manejables.
Primero, creemos un conjunto de datos de muestra con el que trabajar. Navegue hasta el directorio /home/hadoop y cree un nuevo archivo llamado sample.txt con el siguiente contenido:
Cambie al usuario hadoop en la terminal usando:
su - hadoop
## Entra al directorio y crea un nuevo archivo
cd /home/hadoop
vim sample.txt
Ingrese el siguiente contenido:
1,2,3|4,5|6,7,8
9,10|11,12,13|14,15
Asegúrese de guardar el archivo y que sea accesible.
Luego, crearemos una tabla de Hive para almacenar estos datos. Abra la CLI de Hive ejecutando el siguiente comando en su terminal:
hive
Dentro de la CLI de Hive, ejecute los siguientes comandos:
CREATE TABLE sample_table (line STRING);
LOAD DATA LOCAL INPATH '/home/hadoop/sample.txt' INTO TABLE sample_table;
Ahora, usemos la función Lateral View para descomponer los datos de cadena compleja en la columna line:
SELECT line, x, y
FROM sample_table
LATERAL VIEW OUTER EXPLODE(SPLIT(line, '\\|')) temp AS x
LATERAL VIEW OUTER EXPLODE(SPLIT(x, ',')) temp2 AS y;
La sentencia SQL dada recupera datos de una tabla llamada sample_table usando el lenguaje de consulta de Hive. Aquí hay una explicación simplificada de la consulta:
Queremos seleccionar tres columnas de la tabla:
line,xey.Los datos se recuperan de la tabla
sample_table.La consulta utiliza la cláusula
LATERAL VIEW OUTER EXPLODEdos veces para realizar dos operaciones separadas:- La primera
LATERAL VIEW OUTER EXPLODE(SPLIT(line, '\\|')) temp AS xdivide los valores en la columnalineusando el delimitador|. Luego, la funciónEXPLODEtransforma la matriz resultante en múltiples filas. Estos valores expandidos se asignan al aliasx. - La segunda
LATERAL VIEW OUTER EXPLODE(SPLIT(x, ',')) temp AS ydivide los valores en la columnax(que se creó en el paso anterior) usando el delimitador,. Nuevamente, la funciónEXPLODEconvierte la matriz resultante en múltiples filas. Estos valores expandidos se asignan al aliasy.
- La primera
En resumen, la consulta toma cada fila de sample_table y realiza dos divisiones. Primero, divide la columna line por |, creando múltiples filas con diferentes valores en la columna x. Luego, divide la columna x por ,, creando aún más filas con diferentes valores en la columna y. El resultado es un conjunto de filas con todas las combinaciones posibles de valores de line, x e y.
Dominando la Función Explode
En este paso, exploraremos la función Explode, que nos permite transformar tipos de datos complejos como arrays y maps en múltiples filas.
Comencemos creando un nuevo conjunto de datos de muestra. Navegue hasta el directorio /home/hadoop y cree un archivo llamado array_data.txt con el siguiente contenido:
## Entra al directorio y crea un nuevo archivo
cd /home/hadoop
vim array_data.txt
Ingrese el siguiente contenido:
[1,2,3],[4,5],[6,7,8,9]
[10,11],[12,13,14],[15]
Luego, cree una tabla de Hive para almacenar estos datos:
CREATE TABLE array_table (arr ARRAY<STRING>);
LOAD DATA LOCAL INPATH '/home/hadoop/array_data.txt' INTO TABLE array_table;
Ahora, usemos la función Explode para aplanar los datos del array en filas individuales:
SELECT explode(arr) AS num FROM array_table;
Esta consulta convertirá cada elemento del array arr en una fila separada, con el valor correspondiente en la columna num.
También podemos usar la función Explode en combinación con Lateral View para procesar tipos de datos complejos como maps:
CREATE TABLE map_table (key STRING, value MAP<STRING, INT>);
INSERT INTO map_table
SELECT * FROM (
SELECT 'entry1' AS key, map('a', 1, 'b', 2, 'c', 3) AS value
UNION ALL
SELECT 'entry2' AS key, map('d', 4, 'e', 5) AS value
) AS temp_table;
SELECT key, map_keys, map_values
FROM map_table
LATERAL VIEW EXPLODE(value) temp AS map_keys, map_values;
La sentencia SQL dada es una consulta escrita en el lenguaje de consulta de Hive. Aquí está una explicación de la consulta:
SELECT key, map_keys, map_values: Esto especifica las columnas a seleccionar en el resultado. El resultado incluirá tres columnas:key,map_keysymap_values.FROM map_table: Esto indica que la consulta se realiza en la tablamap_table.LATERAL VIEW EXPLODE(value) temp AS map_keys, map_values: Esta es una vista lateral que explota la columnavaluede lamap_table. La funciónEXPLODEse utiliza para transformar cada par clave-valor en la columnaMAPen filas separadas. Los valores expandidos se asignan a los aliasmap_keysymap_values.
En resumen, la consulta recupera datos de la tabla map_table. Luego, utiliza la cláusula LATERAL VIEW EXPLODE para expandir la columna value, lo que resulta en filas separadas para cada par clave-valor en la columna MAP. Las filas resultantes tendrán la columna key de la map_table, junto con las columnas map_keys y map_values expandidas que representan las claves y valores individuales de la columna MAP, respectivamente.
Resumen
En este laboratorio, emprendimos un viaje por los reinos místicos de las Funciones de Generación de Tablas de Hive, guiados por la inquebrantable determinación del guerrero-monje Hiro. A través de la exploración práctica, desentrañamos el poder de las funciones Lateral View y Explode, dominando el arte de transformar estructuras de datos complejas en formas más manejables.
Al descomponer datos intrincados en elementos individuales, desbloqueamos los secretos ocultos dentro, revelando valiosos conocimientos y abriendo el camino hacia una comprensión más profunda. Al igual que la búsqueda de Hiro reunió los rollos dispersos de la sabiduría antigua, nuestro dominio de estas poderosas funciones nos ha dado la capacidad de organizar y analizar datos de maneras que una vez se consideraban imposibles.
Este laboratorio no solo ha fortalecido nuestras habilidades técnicas, sino que también ha inculcado en nosotros una profunda apreciación por el legado duradero de la manipulación de datos. A medida que continuamos nuestro viaje, que las lecciones aprendidas aquí sirvan como una luz guía, iluminando nuestro camino hacia un dominio cada vez mayor de las artes del datos.



