Spark Introduction TP 1/2

Le but de ce TP est de se familiariser avec l'API Java de SPARK.

Pour ce TP on considère que nous disposons d'un serveur Hadoop YARN. On installera (si-nécessaire) uniquement les outils permettant de communiquer avec ce serveur YARN (Hadoop ressource manager). Addresse des services du cluster:

  • Namenode (HDFS): $hdfs://10.0.NUM_SALLE.3:9000/$
  • Ressource manager (YARN): $10.0.NUM_SALLE.3:$
  • WebUI (HDFS): $http://10.0.NUM_SALLE.3:50070/$
  • WebUI (YARN): $http://10.0.NUM_SALLE.3:8088/$

Partie I Job Submit

Exercice 1 : test simple spark

Utilisez la commande spark run-example SparkPi 100 pour tester votre installation de Spark. Par défaut Spark s'execute en local sur votre machine.

Pour lancer votre code sur le cluster uttilisez la commande `MASTER=yarn-cluster run-example SparkPi'. Vérifier sur la WebUI de yarn que votre programme yarn a bien été lancé.

Exercice 2 : Lancemet manuel d'un jar

Pour lancer un job Spark on utilise la commande spark-submit. Regardez attentivement les options possible de cette commande.

Lancez les porgramme d'exemple SparkPi manuellement en utilisant spark-submit. On réservera 4 executor avec chacun de 2 coeurs et 512méga de mémoire et on lancera le driver sur le cluster. Le jar SparkPi est disponible dans /net/ens/BigData/spark-2.0.1/examples/jars/.

Partie II WorldCities Back

Récupérez le fichier spark_maven.tgz pour créez votre projet spark sosu eclipse.

Exercice I

Ecrivez un programm Spark qui charge le fichier WorlCitiesPop dans un RDD. Affichez le nombre de partitions de votre RDD et modifier le pour avoir un nombre de partitions égal à votre nombre d'exécuteurs.

Exercice II

Transformez votre RDD de string en un RDD de Tuple2. Le premier élement du Tuple correspondra à la ville et deuxième à la population. Si il n'y a pas de population renseignée on mettra la population à -1.

Filtrez votre nouveau RDD pour conserver uniquement les lignes valides. Afficher le nombre de ligne valide.

Exercice III

En utilisant la méthode stats() des JavaDoubleRDD afficher les statisques sur les populations des villes valides. Pour mapper dans un JavaDoubleRDD on utilise la fonction mapToDouble.

Exercice IV

Générez l'histogramme de fréquences des population des villes ainsi que les statisques de chaque classe d'équivalence de votre histogramme. On peut réutiliser l'objet StatCounter de spark pour cela.

Exercice IV

Réalisez une jointure (inner join) entre le fichier "WorlCitiesPop" et le fichier de "regions.txt" pour obtenir un nouveau fichier qui ajoute sur toutes les lignes de WorldCities le nom de la région à laquelle elles appartiennent. Les villes sans code region ou avec des codes régions inconus seront supprimées.