Développer une application Big Data avec Hadoop

Utiliser les clés composites

Testez gratuitement nos 1270 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Dans vos modèles MapReduce, utilisez des clés composites développées sur mesure à l'aide des writables d'Hadoop.
10:10

Transcription

Maintenant que nous avons développé notre StationDateWritable, pour la clé de notre mapper, on va développer un TypeValueWritable qui va prendre le type de mesure et la valeur de la mesure, pour la valeur. Ce TypeValueWritable n'a pas besoin d'être « comparable », puisqu'il ne s'agit pas d'une clé, il faut juste qu'il implémente l'interface Writable. Il va être composé d'une string qui va être le « type », et d'un INT qui va être la « value ». Nous n'avons pas besoin de cela et nous pouvons directement reprendre « type, int value ». On met à jour nos constructeurs, nos attributs, on va redemander à Eclipse de générer les « getters » et les « setters » À la fois pour « type » et pour « value », et on va devoir s'attaquer aux méthodes readField et Write. Pour « type », on va lire la chaîne de caractères, au début, pour « value », de façon assez similaire, faire « in.readInt ». qui va nous permettre de lire un IN ?? Ici, lorsqu'on va écrire, donc sérialiser les données, de la même façon, nous allons d'abord sérialiser la chaîne de caractères Type, puis, nous allons sérialiser le INT grâce à la méthode « out.writeInt » de notre Value. Nous venons de faire la dé-sérialisation et la sérialisation, nous n'avons pas besoin de la méthode CompareTo, nécessaire pour les WritableComparable si utilisés dans le cadre des clés. Par contre, nous allons avoir besoin de la méthode Equals et hashCode. Pour l'hashCode, ça va être le type.hashCode, plus la Value. Et pour le Equals, on va comparer d'abord les Types, le Type courant avec le getType de l'autre objet et les valeurs. C'est fait, on corrige les imports de Java grâce au raccourci clavier Ctrl+Shift+O sur Eclipse, et notre second Writable est réellement développé. Nous pouvons l'utiliser directement dans le mapper, pour cela, nous allons modifier notre mapper. Nous allons utiliser, à chaque fois, un « New ». StationDateWritable, qui va prendre en paramètre la Station et dans le second paramètre, la Date. Il faut sortir de la Station et la Date, la Station, on sait que c'est le champ 0, et la date, c'est le champ 1. Cependant, il va falloir le mettre sous le type Date de Java, donc, pour cela, on va faire DateFormat.parse. On va créer un objet DateFormat sur notre classe, et on va pouvoir faire un df.parse sur Fields[1]. Ceci a donc « nouveau journey », une entité de Date. C'est parfait, il faut quand même spécifier que la clé de sortie n'est plus un texte mais est un StationDateWritable. Au passage, il faut mettre un Try Catch autour du Parse. Si on n'arrive pas à Parser la Date, on ne va pas faire d'écriture du tout, puisqu'on va considérer qu'on a pas de données du tout. On peut donc mettre tout notre Context.write dedans. On fait la même chose pour notre valeur, ce n'est plus un « newText » mais notre valeur va être un typeValueWritable. On fait un New « TypeValueWritable » qui prend, en premier, une chaîne de caractères Type, et en second argument, la valeur sous forme d'un INT. On va l'écrire correctement et il nous faut avoir - on va éviter Value qui est déjà utilisé, on va avoir en premier StringType qui est le Fields[2]. Et « int value », qui est le Fields[3], qu'on va d'abord passer par un integer, ou un parseInt. Il s'agit toujours de Val. Tout cela est parfait, il ne faut pas oublier de spécifier que notre mapper va retourner une valeur sous la forme d'un TypeValueWritable. On a ajusté notre mapper, tout est bon. Il n'y a plus de warning, on peut ajuster notre Reducer. Notre Reducer, il faut changer les Types de la clé et la valeur qu'il va récupérer. Pour cela, on les spécifie ici et, également, ici. Il faut mettre un TypeValueWritable et un Iterable TypeValueWritable. En clé, c'était un StationDateWritable. Tout est bon, nous pouvons récupérer les valeurs comme il le faut. C'est-à-dire que, pour la station, ça va être un key.getStation. Pour la date, très simple, ça va être un key.getDate. Et nous n'avons pas à splitter la clé. La date, il va s'agir directement d'un objet Date. Et nous avons également à recréer la clé : faire un Bytes.toBytes de la Station, on a dit : « +_+DATE », formattée comme il faut. Pour cela, toujours pareil, il nous faut un simple DateFormat avec un DateFormat. Et on peut utiliser un df.format de notre date. Nous venons de faire notre clé, on va utiliser le df.format de la date et on ne va pas oublier qu'il ne faut pas mettre la date sous le format année/mois/jour, mais qu'il faut soustraire 9999 à cette date. Ce qu'on va appeler un masque de date. On va l'utiliser en convertissant cette date df.format de date en Integer, en faisant un Integer.parseInt. On va mettre notre masque ici. Et ça va nous donner un Integer, celui qu'on va devoir afficher en Integer, on va l'afficher directement en string, donc utiliser ce genre de substitut. Ceci est ce qu'on doit utiliser dans la clé, c'est-à-dire ici. On a déjà la string, on peut le faire directement. Il nous reste encore la date à mettre. La date, c'est la vraie date formattée, donc df.format(date). Enfin, les valeurs qu'on récupère vont être des TypeValueWritable, qu'on ne splitte pas, ici. Mais on fait un value.getType et value .getValue qui va retourner notre Val directement en Int. On corrige les imports sur Eclipse et notre classe est faite.

Développer une application Big Data avec Hadoop

Concevez une application Big Data avec la suite Hadoop. Stockez des données dans l'HDFS et dans HBase, traitez-les en MapReduce sous YARN, exportez-les dans MySQL via Sqoop, etc.

2h31 (25 vidéos)
Aucun commentaire n´est disponible actuellement
 

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !