Optimisation des données de course spatiale

HadoopBeginner
Pratiquer maintenant

Introduction

Dans un avenir proche, un tournoi de course intergalactique à haut risque se déroule sur une série de circuits de course dangereux répartis dans l'univers. En tant qu'agent de sécurité de la course spatiale, votre responsabilité principale est de garantir la sécurité et l'équité de ces courses cosmique en surveillant étroitement les circuits de course et les vaisseaux spatiaux participants.

La mission consiste à analyser les données de télémétrie recueillies dans diverses sections des circuits de course pour identifier les dangers potentiels, les violations de la course et optimiser l'expérience de course pour les concurrents et les spectateurs. En utilisant les puissantes capacités de traitement de données d'Hadoop, vous pouvez découvrir des informations précieuses qui aideront à maintenir l'intégrité et l'excitation des courses cosmique.

Explorer les fonctions d'opération de collection dans Hive

Dans cette étape, vous allez apprendre à utiliser les fonctions d'opération de collection dans Hive pour traiter et analyser les données de télémétrie recueillies sur les circuits de course.

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, créons un ensemble de données d'échantillonnage avec lequel travailler. Ouvrez un éditeur de texte et créez un nouveau fichier nommé racetrack_data.txt avec le contenu suivant :

1,Sector1,Benny,32.5,12.7,45.2
2,Sector2,Zara,28.9,14.1,43.0
3,Sector1,Alex,30.2,11.5,41.7
4,Sector3,Benny,35.7,10.2,45.9
5,Sector2,Zara,31.1,12.8,43.9
6,Sector3,Alex,29.8,15.7,45.5

Ce jeu de données représente des données de télémétrie provenant de différents secteurs du circuit de course, avec des colonnes représentant l'ID d'enregistrement, le nom du secteur, le nom du pilote, la vitesse, l'altitude et le score total.

Maintenant, lançons l'interface de ligne de commande Hive :

hive

Ensuite, créez une nouvelle table Hive pour stocker ces données :

CREATE TABLE racetrack_data (
    id INT,
    secteur STRING,
    pilote STRING,
    vitesse DOUBLE,
    altitude DOUBLE,
    score_total DOUBLE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

Chargez les données à partir du fichier racetrack_data.txt dans la table Hive :

LOAD DATA LOCAL INPATH '/home/hadoop/racetrack_data.txt' OVERWRITE INTO TABLE racetrack_data;

Maintenant, explorons quelques fonctions d'opération de collection dans Hive :

  1. Obtenez la liste des noms de pilotes distincts.
SELECT DISTINCT pilote FROM racetrack_data;
  1. Obtenez la liste des noms de secteurs et le nombre d'enregistrements pour chaque secteur.
SELECT secteur, COUNT(*) AS nombre_enregistrements FROM racetrack_data GROUP BY secteur;
  1. Obtenez la vitesse maximale pour chaque pilote.
SELECT pilote, MAX(vitesse) AS vitesse_max FROM racetrack_data GROUP BY pilote;
  1. Obtenez la liste des pilotes et leur score moyen.
SELECT pilote, AVG(score_total) AS score_moyen FROM racetrack_data GROUP BY pilote;

Ces exemples montrent comment utiliser des fonctions telles que DISTINCT, COUNT, MAX et AVG pour analyser les données de télémétrie et extraire des informations précieuses.

Analyser les données à l'aide de collections de structurées nommées

Dans cette étape, vous allez apprendre à utiliser la fonction named_struct dans Hive pour créer des structures de données complexes et analyser plus efficacement les données de télémétrie.

Tout d'abord, créons une nouvelle table Hive avec une structure imbriquée pour stocker des informations supplémentaires sur les pilotes :

CREATE TABLE racer_info (
    id INT,
    pilote STRUCT<nom:STRING, équipe:STRING, âge:INT>,
    performance STRUCT<vitesse:DOUBLE, altitude:DOUBLE, score_total:DOUBLE>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '#'
STORED AS TEXTFILE;

Maintenant, insérons quelques données d'échantillonnage dans la table racer_info :

INSERT INTO TABLE racer_info
VALUES
    (1, named_struct('nom', 'Benny', 'équipe', 'Cosmic Racers', 'âge', 28), named_struct('vitesse', CAST(32.5 AS DOUBLE), 'altitude', CAST(12.7 AS DOUBLE),'score_total', CAST(45.2 AS DOUBLE))),
    (2, named_struct('nom', 'Zara', 'équipe', 'Stellar Speeders', 'âge', 32), named_struct('vitesse', CAST(28.9 AS DOUBLE), 'altitude', CAST(14.1 AS DOUBLE),'score_total', CAST(43.0 AS DOUBLE))),
    (3, named_struct('nom', 'Alex', 'équipe', 'Galactic Gliders', 'âge', 25), named_struct('vitesse', CAST(30.2 AS DOUBLE), 'altitude', CAST(11.5 AS DOUBLE),'score_total', CAST(41.7 AS DOUBLE))),
    (4, named_struct('nom', 'Benny', 'équipe', 'Cosmic Racers', 'âge', 28), named_struct('vitesse', CAST(35.7 AS DOUBLE), 'altitude', CAST(10.2 AS DOUBLE),'score_total', CAST(45.9 AS DOUBLE))),
    (5, named_struct('nom', 'Zara', 'équipe', 'Stellar Speeders', 'âge', 32), named_struct('vitesse', CAST(31.1 AS DOUBLE), 'altitude', CAST(12.8 AS DOUBLE),'score_total', CAST(43.9 AS DOUBLE))),
    (6, named_struct('nom', 'Alex', 'équipe', 'Galactic Gliders', 'âge', 25), named_struct('vitesse', CAST(29.8 AS DOUBLE), 'altitude', CAST(15.7 AS DOUBLE),'score_total', CAST(45.5 AS DOUBLE)));

Maintenant, analysons les données à l'aide de la fonction named_struct :

  1. Obtenez les noms des pilotes et leurs équipes.
SELECT pilote.nom, pilote.equipe FROM racer_info;
  1. Obtenez les noms des pilotes et leur vitesse maximale.
SELECT pilote.nom, performance.vitesse AS vitesse_max FROM racer_info;
  1. Obtenez les noms des pilotes, leurs équipes et leur score moyen.
SELECT pilote.nom, pilote.equipe, AVG(performance.score_total) AS score_moyen
FROM racer_info
GROUP BY pilote.nom, pilote.equipe;

Ces exemples montrent comment utiliser la fonction named_struct pour créer des structures de données complexes et analyser les données.

Analyser les données à l'aide de fonctions de jeu de collections

Dans cette étape, vous allez apprendre à utiliser la fonction collect_set dans Hive pour effectuer des opérations d'ensemble sur les données de télémétrie.

Tout d'abord, créons une nouvelle table Hive pour stocker les classements des pilotes :

CREATE TABLE racer_rankings (
    race_id INT,
    secteur STRING,
    noms_pilotes ARRAY<STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '#'
STORED AS TEXTFILE;

Maintenant, insérons quelques données d'échantillonnage dans la table racer_rankings :

INSERT INTO TABLE racer_rankings
VALUES
    (1, 'Sector1', ARRAY('Benny', 'Alex')),
    (2, 'Sector2', ARRAY('Zara', 'Alex')),
    (3, 'Sector3', ARRAY('Benny', 'Zara', 'Alex')),
    (4, 'Sector1', ARRAY('Benny', 'Zara')),
    (5, 'Sector2', ARRAY('Zara', 'Alex')),
    (6, 'Sector3', ARRAY('Benny', 'Alex'));

Maintenant, analysons les données à l'aide de la fonction collect_set :

  1. Obtenez la liste des pilotes distincts dans tous les secteurs.
SELECT DISTINCT nom_pilote
FROM racer_rankings
LATERAL VIEW EXPLODE(noms_pilotes) rn AS nom_pilote;
  1. Obtenez la liste des pilotes qui ont participé à tous les secteurs.
SELECT nom_pilote
FROM (
  SELECT collect_set(noms_pilotes) AS tous_les_pilotes
  FROM racer_rankings
) t
LATERAL VIEW EXPLODE(tous_les_pilotes) rn AS nom_pilote;
  1. Obtenez la liste des pilotes qui ont participé à au moins deux secteurs.
SELECT nom_pilote
FROM (
  SELECT nom_pilote, COUNT(DISTINCT secteur) AS nombre_secteurs
  FROM racer_rankings LATERAL VIEW explode(noms_pilotes) exploded_table AS nom_pilote
  GROUP BY nom_pilote
) t
WHERE nombre_secteurs >= 2;

Ces exemples montrent comment utiliser la fonction collect_set pour effectuer des opérations d'ensemble telles que DISTINCT, INTERSECTION et UNION sur les données de télémétrie.

Résumé

Dans ce laboratoire, nous avons exploré diverses fonctions d'opération de collection dans Hive, telles que DISTINCT, COUNT, MAX, AVG, named_struct, LATERAL VIEW, EXPLODE et collection_set. En travaillant avec des jeux de données d'échantillonnage représentant des données de télémétrie d'un tournoi de course spatiale, nous avons appris à analyser et à extraire des informations précieuses à partir de structures de données complexes.

Grâce à des exercices pratiques, nous avons acquis une expérience pratique dans la création de structures de données imbriquées, la réalisation d'opérations d'ensemble et l'agrégation de données selon des critères spécifiques. Ces connaissances se révéleront précieuses dans notre rôle d'agents de sécurité de la course spatiale, nous permettant de surveiller efficacement les circuits de course, d'identifier les dangers potentiels et d'assurer l'équité et l'intégrité des courses cosmique.

Dans l'ensemble, ce laboratoire a offert une introduction complète aux fonctions d'opération de collection d'Hive, nous dotant des compétences nécessaires pour analyser et traiter efficacement de grands jeux de données dans l'écosystème Hadoop.