Introducción
En un futuro lejano, la humanidad ha extendido su alcance hacia la vasta extensión del espacio. La Autoridad del Puerto Espacial Interestelar (ISA) es responsable de gestionar la compleja red de puertos espaciales dispersos por la galaxia. Como Comandante Supremo de la ISA, tu misión es optimizar las operaciones del puerto espacial aprovechando el poder de las capacidades de particionamiento y agrupamiento de Hadoop.
El centro de datos del puerto espacial alberga una gran cantidad de información, incluyendo registros de vuelo, manifestaciones de carga y registros de pasajeros. La gestión eficiente de datos es crucial para garantizar un funcionamiento fluido y tomar decisiones informadas. Tu objetivo es implementar estrategias de particionamiento y agrupamiento para mejorar el rendimiento de consultas y la organización de datos dentro del ecosistema de Hadoop.
Crear una tabla particionada
En este paso, crearás una tabla particionada para almacenar datos de registros de vuelo, lo que ayudará a mejorar el rendimiento de las consultas y a permitir una gestión eficiente de datos.
Primero, asegúrate de estar registrado como el usuario hadoop ejecutando el siguiente comando en la terminal:
su - hadoop
Luego, lanza la shell de Hive ejecutando el siguiente comando:
hive
Ahora, crea una base de datos si no existe:
CREATE DATABASE IF NOT EXISTS spaceport;
Cambia a la base de datos spaceport:
USE spaceport;
A continuación, crea una tabla particionada para los registros de vuelo:
CREATE TABLE flight_logs (
flight_id STRING,
spacecraft STRING,
departure_time TIMESTAMP,
arrival_time TIMESTAMP,
destination STRING
)
PARTITIONED BY (year INT, month INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
Finalmente, sale de hive con el siguiente comando:
EXIT;
En el código anterior, creamos una tabla particionada flight_logs con columnas para el ID de vuelo, la nave espacial, la hora de salida, la hora de llegada y el destino. La tabla está particionada por las columnas year y month, lo que significa que los datos se organizarán en particiones separadas según los valores de año y mes.
Cargar datos en la tabla particionada
En este paso, cargarás datos de registros de vuelo de muestra en la tabla particionada que creaste en el paso anterior.
Primero, crea algunos archivos de datos de registros de vuelo de muestra:
cat > /home/hadoop/flight_logs_1.txt << EOF
FL001,Andromeda Explorer,2023-06-01 08:00:00,2023-06-02 12:30:00,Andromeda Galaxy
FL002,Milky Way Voyager,2023-06-15 10:15:00,2023-06-16 06:45:00,Milky Way Galaxy
EOF
cat > /home/hadoop/flight_logs_2.txt << EOF
FL003,Cygnus Cruiser,2023-07-20 14:30:00,2023-07-21 09:00:00,Cygnus Constellation
FL004,Orion Shuttle,2023-07-25 18:00:00,2023-07-26 03:15:00,Orion Nebula
EOF
Luego, carga los datos en la tabla particionada:
hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/flight_logs_1.txt' INTO TABLE spaceport.flight_logs PARTITION (year=2023, month=6);"
hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/flight_logs_2.txt' INTO TABLE spaceport.flight_logs PARTITION (year=2023, month=7);"
En el código anterior, primero creamos algunos archivos de datos de registros de vuelo de muestra flight_logs_1.txt y flight_logs_2.txt con cuatro registros de vuelo. Luego, usamos el comando LOAD DATA en Hive para cargar los datos en la tabla particionada flight_logs. Cargamos los datos dos veces, una vez para la partición year=2023 y month=6, y una vez para la partición year=2023 y month=7.
Crear una tabla agrupada
En este paso, crearás una tabla agrupada para almacenar datos de manifestaciones de carga, lo que mejorará el rendimiento de las consultas que involucren la columna cargo_type.
Primero, lanza la shell de Hive ejecutando el siguiente comando:
hive
Luego, cambia a la base de datos spaceport:
USE spaceport;
Ahora, crea una tabla agrupada para las manifestaciones de carga:
CREATE TABLE cargo_manifests (
manifest_id STRING,
cargo_type STRING,
destination STRING,
weight DOUBLE,
volume DOUBLE
)
CLUSTERED BY (cargo_type) INTO 4 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
Finalmente, sale de hive con el siguiente comando:
EXIT;
En el código anterior, creamos una tabla agrupada cargo_manifests con columnas para el ID de la manifestación, el tipo de carga, el destino, el peso y el volumen. La tabla está agrupada (clasificada) por la columna cargo_type en 4 cubetas para mejorar el rendimiento de las consultas que involucren la columna cargo_type.
Cargar datos en la tabla agrupada
En este paso, cargarás datos de manifestaciones de carga de muestra en la tabla agrupada que creaste en el paso anterior.
Primero, crea un archivo de datos de manifestaciones de carga de muestra
cat > /home/hadoop/cargo_manifests.txt << EOF
CM001,Electronics,Andromeda Galaxy,5.2,2.1
CM002,Machinery,Milky Way Galaxy,12.8,8.5
CM003,Food,Cygnus Constellation,3.1,1.5
CM004,Electronics,Orion Nebula,7.9,3.2
EOF
Luego, carga los datos en la tabla agrupada
hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/cargo_manifests.txt' OVERWRITE INTO TABLE spaceport.cargo_manifests;"
En el código anterior, primero creamos un archivo de datos de manifestaciones de carga de muestra cargo_manifests.txt con cuatro registros de carga. Luego, usamos el comando LOAD DATA en Hive para cargar los datos en la tabla agrupada cargo_manifests.
Resumen
En este laboratorio, exploramos la implementación de particiones y cubetas en Hadoop Hive. Comenzamos creando una tabla particionada para almacenar datos de registros de vuelo, particionada por año y mes. Este enfoque permite una consulta y gestión de datos eficientes al organizar los datos en particiones separadas según criterios específicos.
Luego, cargamos datos de registros de vuelo de muestra en la tabla particionada utilizando el comando LOAD DATA, asegurándonos de que los datos estuvieran correctamente particionados por año y mes.
Después, creamos una tabla agrupada para almacenar datos de manifestaciones de carga, agrupada por la columna cargo_type. La agrupación ayuda a mejorar el rendimiento de las consultas al dividir los datos en fragmentos más pequeños y manejables según una columna específica.
Finalmente, cargamos datos de manifestaciones de carga de muestra en la tabla agrupada utilizando el comando LOAD DATA.
En todo este laboratorio, aprendimos la importancia de la particionación y la agrupación en el ecosistema de Hadoop para optimizar el almacenamiento de datos, el rendimiento de las consultas y la gestión general de datos. Al implementar estas técnicas, podemos garantizar operaciones eficientes en la Autoridad del Puerto Espacial Interestelar y tomar decisiones informadas basadas en la gran cantidad de datos disponibles.



