Développer une application Big Data avec Hadoop

Filtrer les données de HBase

Testez gratuitement nos 1270 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Appréhendez les différentes méthodes de filtrage des résultats obtenus par un scan des données HBase.
05:51

Transcription

Il nous faut encore gérer maintenant les filtres réellement sur Hbase pour pouvoir récupérer uniquement les données qui nous intéressent. Pour cela il faut spécifier dans le workflow Oozie que nous voulons utiliser un scan précis. Un scan ça va être quelque chose qui s'opère sur Hbase et nous allons lui dire que nous voulons réaliser un scan grâce à la propriété qui s'appelle hbase.mapreduce.scan et nous allons devoir mettre un scan se réaliser dedans. Alors, c'est la réalisation. Le plus simple pour ce faire ça reste quand même de créer une nouvelle classe avec une méthode permettant de générer ce scan se réaliser. Nous allons créer une nouvelle classe GenerateScanString qui va permettre de générer un scan se réaliser juste avec une méthode main et qu'on va exécuter en java. Alors cette méthode va créer un nouveau scan, pas grand chose de particulier juste un New scan, bien entendu, hbase client scan et va réaliser sur le scan tout plein de choses, par exemple, un scan.addColumn pour récupérer uniquement une colonne. En l'occurrence je vais vous en proposer une première version relativement simple qui va simplement utiliser les différentes possibilités soit pour Filtrer sur les préfixes si jamais c'est passé en premier argument soit pour Filtrer sur les colonnes si jamais elles sont passées en second argument. Alors on résout les imports et voilà. Nous avons désormais notre scan, nous allons vouloir l'exporter de façon se réaliser pour ce faire il va nous falloir utiliser la méthode ProtobufUtil, ProtobufUtil .toScan qui nous permet de prendre un scan et qui va nous ressortir un ClientProto.Scan. On va demander à Eclipse de générer directement la chose sauf que préféré quand même, avec des imports. Alors ceci peut générer des exceptions, nous allons faire directement sur la méthode main et une fois que l'on a ça, nous allons pouvoir réellement faire un proto.toByteArray et de réaliser dessus, par exemple, un Base64 qui est celui dans hadoop.hbase.util Base64.encodeBytes directement là-dessus. Ainsi nous avons passé notre scan dans Protobuf, nous récupérons le résultat en Base64 et tout ça nous donne une String qui correspond à notre outputScan, c'est ce qu'on doit passer dans le paramètre scan de notre MapReduce. Alors pour le passer nous allons d'abord appeler ceci directement en java et pour ce faire nous allons créer une action qu'on va exécuter avant le MapReduce et qui va être une action que je vous propose ici toute faite, une action generateScan. Elle appelle du java, elle précise l'objet-tracker et le name-node et elle va appeler la classe processor.GenerateScanString. Elle va lui passer des paramètres et elle va ensuite passer le résultat au MapReduce. Dans le MapReduce on va pouvoir l'utiliser directement grâce au Element languages, c'est-à-dire grâce à une expression qu'on va pouvoir écrire directement. On met $ accolade pour écrire une variable et ici on va faire la même chose sauf qu'on va spécifier que l'on veut récupérer la sortie de GenerateScan notamment de la variable scan pour passer dans cette propriété. Pour ce faire on a besoin de rajouter un capture output ici directement sur l'action java qui va dire à Oozie de s'occuper de la sortie et de pouvoir l'utiliser. Pour en java passer tout de même ce résultat il va falloir écrire dans un fichier Properties qui a son nom directement dans une propriété, elle-même. On va la récupérer grâce à un Système.getProperty, son nom, c'est oozie.action.output.properties et c'est le nom du fichier properties qu'on doit écrire. Alors je vous propose le code tout fait, plus exactement, on initialise un nouveau fichier, on crée un objet Properties, on lui définit le scan qui est le Base64 GProtobuf de l'objet scan et nous écrivons directement dans le fichier grâce à un props.store et nous fermons le fichier. Nous venons d'écrire notre propriété scan avec la valeur en Base64 dans le fichier Properties passé dans cette propriété et va être récupéré et lu par Oozie grâce au capture Output et son résultat va pouvoir être exploité via wf:actionData avec ici le nom de l'action et ici le nom de la propriété.

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 !