Introduction
Dans un lointain avenir, l'humanité a étendu sa portée dans l'immensité de l'espace. L'Autorité du Port spatial interstellaire (ISA) est responsable de la gestion du réseau complexe de ports spatiaux répartis dans la galaxie. En tant que Commandant suprême de l'ISA, votre mission est d'optimiser les opérations du port spatial en utilisant le pouvoir des capacités de partitionnement et de tri par compartiment de Hadoop.
Le centre de données du port spatial contient une quantité énorme d'informations, y compris les journaux de vol, les manifestes de fret et les enregistrements de passagers. Une gestion efficace des données est cruciale pour assurer des opérations fluides et prendre des décisions éclairées. Votre objectif est de mettre en œuvre des stratégies de partitionnement et de tri par compartiment pour améliorer les performances de requête et l'organisation des données dans l'écosystème Hadoop.
Créer une table partitionnée
Dans cette étape, vous allez créer une table partitionnée pour stocker les données des journaux de vol, ce qui aidera à améliorer les performances de requête et à permettre une gestion efficace des données.
Tout d'abord, assurez-vous d'être connecté en tant qu'utilisateur hadoop en exécutant la commande suivante dans le terminal :
su - hadoop
Ensuite, lancez le shell Hive en exécutant la commande suivante :
hive
Maintenant, créez une base de données si elle n'existe pas :
CREATE DATABASE IF NOT EXISTS spaceport;
Changez de base de données vers spaceport :
USE spaceport;
Ensuite, créez une table partitionnée pour les journaux de vol :
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;
Enfin, quittez Hive avec la commande suivante :
EXIT;
Dans le code ci-dessus, nous créons une table partitionnée flight_logs avec des colonnes pour l'identifiant de vol, le vaisseau spatial, l'heure de départ, l'heure d'arrivée et la destination. La table est partitionnée par les colonnes year et month, ce qui signifie que les données seront organisées en partitions séparées en fonction des valeurs de l'année et du mois.
Charger des données dans la table partitionnée
Dans cette étape, vous allez charger des données d'échantillonnage de journaux de vol dans la table partitionnée que vous avez créée dans l'étape précédente.
Tout d'abord, créez quelques fichiers de données d'échantillonnage de journaux de vol :
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
Ensuite, chargez les données dans la table partitionnée :
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);"
Dans le code ci-dessus, nous créons tout d'abord quelques fichiers de données d'échantillonnage de journaux de vol flight_logs_1.txt et flight_logs_2.txt avec quatre enregistrements de vol. Ensuite, nous utilisons la commande LOAD DATA dans Hive pour charger les données dans la table partitionnée flight_logs. Nous chargeons les données deux fois, une fois pour la partition year=2023 et month=6, et une fois pour la partition year=2023 et month=7.
Créer une table triée par compartiment
Dans cette étape, vous allez créer une table triée par compartiment pour stocker les données des manifestes de fret, ce qui améliorera les performances des requêtes impliquant la colonne cargo_type.
Tout d'abord, lancez le shell Hive en exécutant la commande suivante :
hive
Ensuite, changez de base de données vers spaceport :
USE spaceport;
Maintenant, créez une table triée par compartiment pour les manifestes de fret :
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;
Enfin, quittez Hive avec la commande suivante :
EXIT;
Dans le code ci-dessus, nous créons une table triée par compartiment cargo_manifests avec des colonnes pour l'identifiant du manifeste, le type de fret, la destination, le poids et le volume. La table est triée (groupée) par la colonne cargo_type en 4 compartiments pour améliorer les performances des requêtes impliquant la colonne cargo_type.
Charger des données dans la table triée par compartiment
Dans cette étape, vous allez charger des données d'échantillonnage de manifestes de fret dans la table triée par compartiment que vous avez créée dans l'étape précédente.
Tout d'abord, créez un fichier de données d'échantillonnage de manifestes de fret
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
Ensuite, chargez les données dans la table triée par compartiment
hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/cargo_manifests.txt' OVERWRITE INTO TABLE spaceport.cargo_manifests;"
Dans le code ci-dessus, nous créons tout d'abord un fichier de données d'échantillonnage de manifestes de fret cargo_manifests.txt avec quatre enregistrements de fret. Ensuite, nous utilisons la commande LOAD DATA dans Hive pour charger les données dans la table triée par compartiment cargo_manifests.
Résumé
Dans ce laboratoire, nous avons exploré la mise en œuvre des partitions et des compartiments dans Hadoop Hive. Nous avons commencé par créer une table partitionnée pour stocker les données des journaux de vol, partitionnée par année et mois. Cette approche permet une interrogation et une gestion des données efficaces en organisant les données en partitions séparées selon des critères spécifiques.
Ensuite, nous avons chargé des données d'échantillonnage de journaux de vol dans la table partitionnée en utilisant la commande LOAD DATA, en nous assurant que les données étaient correctement partitionnées par année et mois.
Nous avons ensuite créé une table triée par compartiment pour stocker les données des manifestes de fret, triée par la colonne cargo_type. Le tri par compartiment aide à améliorer les performances des requêtes en divisant les données en parties plus petites et plus faciles à gérer sur la base d'une colonne spécifique.
Enfin, nous avons chargé des données d'échantillonnage de manifestes de fret dans la table triée par compartiment en utilisant la commande LOAD DATA.
Au cours de tout ce laboratoire, nous avons appris l'importance des partitions et des compartiments dans l'écosystème Hadoop pour optimiser le stockage de données, les performances des requêtes et la gestion globale des données. En mettant en œuvre ces techniques, nous pouvons assurer des opérations efficaces au sein de l'Autorité du port spatial interstellaire et prendre des décisions éclairées sur la base de la vaste quantité de données disponibles.



