Exercices big-data Cette page présente les exercices de la formation big-data.
Une correction est systématiquement proposée.

Installation et configuration de cloudera quickstart

La machine virtuelle cloudera permet de travailler sur une installation standalone (un seul noeud qui est à la fois namenode et datanode). Pour travailler sur cette machine, nous allons utiliser virtual box.

  1. Télécharger (ou récupérer) la machnine virtuelle cloudera quickstart sur le site de cloudera
  2. Importer cette machine dans virtual box
  3. Créer un dossier partagé : une fois la machine importée et avant de la démarer, cliquer sur configuration et choisir le menu Dossiers partagés. Sélectionner un dossier de votre espace de travail et lui donner un nom. Par exemple Partage
  4. Démarrer la machine
  5. Attendre longtemps et m'écouter avancer sur ce cours si passionnant
  6. Configurer la langue du clavier : System > Preferences > Keyboard onglet Layout. Ajouter French et supprimer english
  7. Configurer le gestionnaire de fichiers pour qu'il n'ouvre pas une nouvelle fenêtre à chaque clic (comportement très énervant) : System > Preferences > File Management. Onglet Behavior : cocher la case Always open in browser windows.
  8. Configurer gedit pour ne pas qu'il génère de fichier de sauvegarde : fichiers parasites. Pour celà, ouvrir gedit, Edit > Preferences onglet editor et décocher Create a backup copy of file before saving. Dans l'onglet view, je vous recommande de cocher display line number et de décocher enable text wrapping
  9. Monter le dossier partagé. Par convention, les systèmes de fichiers sont montés dans le répertoire mnt.
    sudo mkdir -p /mnt/Partage
    sudo mount -t vboxsf -o uid=$(id -u) -o gid=$(id -g) Partage /mnt/Partage

Vote machine est prête à être utilisée

Initialisation de hdfs

Réaliser les opérations suivantes sur hdfs :

  • Lister les dossiers présents à la racine
  • Lister les fichiers présents sous /user/cloudera
  • Créer le dossier /user/cloudera/reception (le supprimer ainsi que son contenu avant de le faire)
  • Déposer dans le dossier /user/cloudera/reception les fichiers fournis pour les exercices
  • Donner les droits à tout le monde sur ces fichiers
Pig chargement simple

Mettre au format le fichier origines.csv fournit à l'aide de Pig. Le fichier en sortie sera un fichier csv délimité par des | qui contiendra les colonnes suivantes

  • Prénom
  • Genre
  • Identifiant Langue

Le fichier mis au format sera enregistré sous /user/cloudera/data/origines. Une fois le traitement pig terminé, supprimer le fichier _SUCCESS créé

Pig chargement via une UDF

Mettre au format les fichiers prenoms_paris_2014.txt et prenoms_paris_2015.txt en lisant le fichier avec une udf de chargement pig et enregistrer le résultat sous la forme d'un fichier csv dont les champs sont séparés par des | et contenant les colonnes suivantes

  • prenom : en minuscule
  • nombre
  • genre : m ou f en minuscule

Pour cela, vous aurez besoin d'utiliser le classpath suivant Classpath pig. Vous penserez à tester votre code avec JUnit (uniquement la partie qui permet de découper la ligne en champs)

Création de tables

Créer deux tables permettant d'accéder de charger les fichiers prénoms origine et prenoms_paris

La table prenoms_paris est partitionnée par année, les champs sont délimités par des |, les fichiers sont enregistrés dans /user/cloudera/tables/prenoms_paris et les colonnes sont les suivantes :

  • prenom : string
  • effectif : int
  • sexe : string

La table origines_prenoms n'est pas partitionnée, les champs sont délimités par des | et les fichiers sont enregistrés dans /user/cloudera/tables/origines_prenoms. Il faudra ignorer la première lignes des fichiers chargés dans cette table. Les colonnes sont les suivantes:

  • prenom : string
  • sexe : string
  • origine : string

Une fois les tables créées, charger le contenu des fichiers dans les tables et notez que les fichiers du dossier data ont été supprimés.

Quelques requête SQL

Sélectionner les 10 prénoms les plus donnés en 2015

Sélectionner le nombre de prénoms présents en 2015 et qui n'existaient pas en 2014. Ce nombre est assez élevé étant donné que tous les prénoms de moins de 5 occurences n'ont pas été diffusés.

Créer une requête SQL permettant de séléctionner les origines des prénoms données en 2015 en les classant par fréquence d'apparition. Limiter les résultats aux 10 premiers

Créer une requête SQL permettant de sélectionner les prénoms donnés à la fois à des filles et à des garcons en 2015 à paris ainsi que le nombre de prénoms

UDF Hive

Créer une udf permettant de définir une indicatrice sur la variable origine de la table origines_prenoms

  • Si le prénom a une origine francaise au moins, l'indicatrice vaut 1
  • Dans les autres cas, elle vaut 0

Pour cela, vous aurez besoin d'utiliser le classpath suivant Classpath hive

A l'aide de cette UDF, créer une requête permettant de sélectionner les 50 premières origines de la table origines_prenoms ainsi que l'indicatrice définie par l'udf. Puis créer une requête permettant de compter le nombre de prénoms donnés à Paris en 2015 qui avaient une origine francaise au moins ainsi que le nombre de prénoms d'origine étrangère