Découvrir les trésors anciens avec Hadoop

HadoopBeginner
Pratiquer maintenant

Introduction

Imaginez un scénario où vous êtes un archéologue marin explorant les profondeurs de la "Baie du Trésor Naufragé". Cette baie mystérieuse est soupçonnée de cacher les secrets des civilisations anciennes, de leurs trésors et d'artefacts perdus sous les vagues. Votre objectif est de découvrir ces trésors et de reconstruire le puzzle historique qui est caché sous la surface de l'océan.

Lorsque vous entreprendrez votre expédition sous-marine, vous devrez analyser les divers artefacts et reliques que vous découvrirez, en étudiant soigneusement leurs caractéristiques et leurs modèles. C'est là que le pouvoir des fonctions fenêtres Hadoop entre en jeu, vous permettant de réaliser une analyse de données complexe et de démêler les mystères du passé.

Préparer les données

Dans cette étape, nous allons créer un ensemble de données qui simule les artefacts et les reliques que vous avez découverts lors de votre exploration sous-marine. Cet ensemble de données servira de base pour notre analyse utilisant les fonctions fenêtres Hadoop.

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 nouveau répertoire appelé artefacts dans le répertoire /home/hadoop :

mkdir /home/hadoop/artifacts
cd artifacts/

Ensuite, créez un nouveau fichier nommé artefacts.txt dans le répertoire artefacts avec le contenu suivant :

1,Or,2500,15,A1
2,Argent,1800,20,B2
3,Cuivre,3000,12,A1
4,Céramique,1200,18,C3
5,Or,2800,22,B2
6,Argent,2000,16,A1
7,Cuivre,2500,25,C3
8,Céramique,1500,14,A1
9,Or,3200,21,B2
10,Argent,1700,19,C3

Ce fichier représente une collection d'artefacts avec des détails tels que leur matériau, leur âge, la profondeur à laquelle ils ont été trouvés et les coordonnées de leur emplacement.

Explorer les données avec les fonctions fenêtres

Maintenant que notre ensemble de données est prêt, explorons-le à l'aide des fonctions fenêtres Hadoop. Nous utiliserons Apache Hive, un logiciel de stockage de données qui facilite la requêtage et la gestion d'ensembles de données volumineux stockés dans un stockage distribué.

Tout d'abord, lancez le shell Hive en exécutant la commande suivante dans votre terminal :

hive

Ensuite, créez une nouvelle table nommée artefacts pour stocker notre ensemble de données :

CREATE TABLE artifacts (
  artifact_id INT,
  material STRING,
  age INT,
  depth INT,
  location STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

Chargez les données du fichier artefacts.txt dans la table artefacts :

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

Commencons par explorer la colonne age à l'aide des fonctions fenêtres RANK() et DENSE_RANK(). Ces fonctions nous aideront à identifier les rangs d'âge relatifs des artefacts :

SELECT
  artifact_id,
  material,
  age,
  RANK() OVER (ORDER BY age DESC) AS rank_age,
  DENSE_RANK() OVER (ORDER BY age DESC) AS dense_rank_age
FROM
  artifacts;

Cette requête affichera les détails des artefacts ainsi que leurs rangs d'âge basés sur les fonctions RANK() et DENSE_RANK().

Ensuite, utilisons les fonctions LAG() et LEAD() pour comparer les âges des artefacts consécutifs :

SELECT
  artifact_id,
  material,
  age,
  LAG(age, 1) OVER (ORDER BY age DESC) AS prev_age,
  LEAD(age, 1) OVER (ORDER BY age DESC) AS next_age
FROM
  artifacts;

Cette requête affichera les détails des artefacts ainsi que les âges des artefacts précédent et suivant dans la séquence ordonnée.

Analyser les modèles d'artefacts

Dans cette étape, nous utiliserons les fonctions fenêtres pour analyser les modèles et identifier les artefacts importants selon divers critères.

Commençons par trouver les artefacts les plus anciens et les plus récents pour chaque type de matériau :

CREATE TABLE result_1
AS
SELECT
  material,
  artifact_id,
  age,
  FIRST_VALUE(artifact_id) OVER (PARTITION BY material ORDER BY age DESC) AS oldest_artifact,
  LAST_VALUE(artifact_id) OVER (PARTITION BY material ORDER BY age ASC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS newest_artifact
FROM
  artifacts;

SELECT * FROM result_1;

Cette requête utilise les fonctions FIRST_VALUE() et LAST_VALUE() pour identifier respectivement les artefacts les plus anciens et les plus récents pour chaque type de matériau.

Ensuite, trouvons les artefacts qui sont considérablement plus anciens ou plus jeunes par rapport à l'âge moyen de leur type de matériau :

CREATE TABLE result_2
AS
SELECT
  artifact_id,
  material,
  age,
  AVG(age) OVER (PARTITION BY material) AS avg_age_by_material,
  CASE
    WHEN age > AVG(age) OVER (PARTITION BY material) + 200 THEN 'Significantly Older'
    WHEN age < AVG(age) OVER (PARTITION BY material) - 200 THEN 'Significantly Younger'
    ELSE 'Average'
  END AS age_category
FROM
  artifacts;

SELECT * FROM result_2;

Cette requête calcule l'âge moyen pour chaque type de matériau à l'aide de la fonction fenêtre AVG() puis catégorise chaque artefact selon qu'il est considérablement plus ancien, considérablement plus jeune ou moyen par rapport à l'âge moyen du matériau.

Résumé

Dans ce laboratoire, nous avons exploré le pouvoir des fonctions fenêtres Hadoop dans le cadre d'une expédition d'archéologie marine. En simulant un ensemble de données d'artefacts et de reliques, nous avons appris à exploiter diverses fonctions fenêtres telles que RANK(), DENSE_RANK(), LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE() et AVG() pour analyser et découvrir les modèles dans les données.

Grâce à des exercices pratiques, nous avons acquis des connaissances sur l'identification des rangs d'âge, la comparaison des âges d'artefacts consécutifs, la recherche des artefacts les plus anciens et les plus récents pour chaque type de matériau, et la catégorisation des artefacts selon leur âge par rapport à l'âge moyen du matériau. Ce laboratoire a offert une expérience pratique et captivante dans l'utilisation des fonctions fenêtres Hadoop pour démêler les mystères de la "Baie du Trésor Naufragé".

La conception de ce laboratoire visait à combiner un scénario captivant avec des exercices de codage pratiques, permettant aux apprenants de développer une compréhension plus approfondie des fonctions fenêtres Hadoop tout en explorant une aventure fictive. En plongeant les apprenants dans un contexte réaliste, le laboratoire a favorisé une expérience d'apprentissage plus engageante et mémorable.