Tutoriel 4 : Format Input personnalisée Hadoop

Hadoop

Tutoriel 4 : Format Input personnalisée Hadoop

Dans chaque ville tunisienne, on a un capteur de température qui envoie les données au serveur.

 

Sur le serveur, chaque enregistrement est stocké dans un fichier.

 

Malheureusement, la structure des données n’est pas la même dans toutes les villes.

 

Par exemple, à Sfax, chaque enregistrement est stocké comme suit (année, mois, jour, température de Sfax), par exemple (1950 4 30 sfax 30), par contre à Sousse, chaque enregistrement est stocké comme suit (température de Sousse, 1950 4 30).

 

Notre objectif est de calculer la moyenne des deux villes pour chaque jour.

 

Défi: Comment puis-je traiter des données qui ne sont pas structurées de la même manière?

 

Tout d’abord, vous devez vous assurer que vous avez correctement installé Hadoop sur votre machine. 

 

Ensuite, vous devriez démarrer le démon Hadoop en appelant ces scripts:

 

  • start-dfs.sh
  • start-yarn.sh 

 

Une dernière étape avant de commencer, vous devez copier les fichiers d’entrée dans votre système de fichiers Hadoop local et créer des répertoires dans hdfs avant de les copier.

 

Alors téléchargez ces deux fichiers d’entrée (ce sont de petits fichiers juste pour les tests)

 

Après cela, créez des chemins dans hdfs en appelant: hdfs dfs -mkdir -P / formation / lab4 / inputs /

 

Après cela, copiez les fichiers sur hdfs en appelant cette commande comme suit: hdfs dfs -copyFromLocal <localPathOfFiles> / training / lab4 / inputs /

 

Par exemple, si vous avez téléchargé les fichiers dans Téléchargements / lab4 / inputs, la ligne de commande doit être la suivante: hdfs dfs -copyFromLocal ~ / Téléchargements / lab4 / inputs / * / training / lab4 / inputs /

 

Maintenant que tout est déjà configuré, commençons à coder.

 

Commencez par créer une classe de travail qui s’étend à Configured (pour obtenir la configuration à partir des fichiers d’installation «core-site.xml etc….»)

 

Et implémente Tool (en procédant de la sorte. vous pouvez appeler votre travail depuis la ligne de commande via la commande hadoop jar).

 

En écrivant cette classe, vous donnerez à la tâche des informations sur le format d’entrée « input », le format de sortie « output », le mappeur, le réducteur, le clé et la valeur du format de sortie « output », du mappeur et du réducteur, etc..

 

 

Voyons maintenant comment ajouter une clé et une valeur personnalisées.

 

Pour créer une clé personnalisée vous devez implémenter WritableComparable et pour créer une valeur personnalisée, vous devez implémenter Writable.

 

Commençons avec la valeur

 

 

Ensuite, la clé doit implémenter WritableComparable car Hadoop utilisera la méthode compareTo pour trier les clés lors de l’étape de réorganisation.

 

 

Voyons maintenant comment écrire un format d’entré  » input  » personnalisé, vous devez s’étend FileInputFormat< KeyType, ValueType> ( le KeyType doit implémenter WritableComparable et la ValueType doit implémenter Writable) et redéfinir la méthode createRecordReader

 

 

CustomInputFromat utilisera un CustomRecordReader qui transférera le fichier au format hdfs vers un enregistrement (key, value).

 

La méthode intialize CustomRecordReader est la première qui sera appelée par une boucle

while (getProgress !=1)

{

nextKeyValue will be called

than getCurrentKey(), getCurrentValue()

}

Finalement la méthode close() sera appelée

 

 

De la même manière, vous pouvez vérifier le code source de SousseInputFormat

 

 

Maintenant, le TemperatureMapper ne divisera pas les données, il obtiendra simplement la clé et la valeur sans analyser les données

 

 

Et dans le réducteur, nous allons juste calculer la moyenne des deux températures

 

 

Maintenant, après le codage, exportez le fichier jar en tant que fichier jar exécutable et spécifiez MinMaxJob en tant que classe principale, puis ouvrez le terminal et exécutez le travail en appelant: hadoop jar <nomOfTheJar.jar>.

 

Par exemple, si vous donnez au fichier jar le nom lab4.jar, la ligne de commande sera: hadoop jar lab4.jar 

 

Regardez le résultat en appelant: hdfs dfs -cat / training / lab4 / output / part-r-00000

 

 

Avatar for Nizar Ellouze

Author: Nizar Ellouze

No Comments

Post a Comment

Comment
Name
Email
Website