la clef USB sur vos portables : ➔ La VM VirtualBox (contient l’environnement de développement et les instructions) ➔ Option : Le binaire VirtualBox correspondant à votre plateforme (v4.3, 64 bits) ➔ Ces slides • Pour importer la VM, double-cliquer sur le fichier Spark Hands On.ova Organisation du Hands-on ✱ Points importants • Libérer un maximum de ressources CPU et RAM pour la VM • Configuration attendue ◦ HDD: 5+ Go ◦ RAM: 4+ Go ◦ CPU: 4+ cores
de gros volumes de données • Traitement distribué sur du “commodity hardware” • Ecrit en Scala, bindings disponibles pour Java, Python et R • Intègre des algorithmes de Machine Learning
systèmes déjà en place ◦ Stockage de données : HDFS ◦ Management de cluster : Yarn, Mesos ◦ Election de master : Zookeeper ◦ Bases de données NoSQL : Cassandra, Elasticsearch, Riak ◦ Notebooks : Zeppelin, Spark Notebook, Jupyter Integration dans l’éco-système Big Data
: les RDDs ◦ Resilient Distributed Dataset ◦ Collection d’objets distribués et immutables ◦ Tolérance à la panne • On applique des Transformations et des Actions ◦ Les Transformations sont lazy et retournent des RDDs expl : map(), filter(), reduceByKey() ◦ Les Actions appliquent les Transformations sur les RDDs et ne retournent pas de RDDs expl : count(), foreach(), collect()
colonnes ◦ Collection de données structurées distribuée et immutable ◦ Abstraction de plus haut niveau que les RDDs • Manipulation des données via un built-in DSL ◦ select(), where(), groupBy() ◦ show(), printSchema() (affichage dans la console) ◦ drop(), agg(), withColumn(), explode(), join() ◦ sortBy(), orderBy() Les Dataframes
de musique : ➔ Fichier des artistes et groupes : /data/music/performers.csv ➔ Fichier des albums : /data/music/albums.csv ➔ Fichier des notes : /data/music/artists_ratings.csv • Manipulation de DataFrames ➔ http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.DataFrame
➔ Code en Scala ➔ Affichage de tableaux et graphiques • Pour travailler : ➔ Lancer la VM ➔ Accéder à http://localhost:8081 dans votre navigateur ➔ Ouvrir le notebook “Music” ➔ Suivre les instructions ➔ Shift+Enter pour exécuter le code • Durée : 1h20 Exploration de données
des prédictions sur de nouvelles données en apprenant depuis d’autres existantes ◦ Le process d’apprentissage permet de générer un modèle ◦ Ce modèle peut être appliqué sur les nouvelles données • Différents types ◦ prédiction de valeurs (régression) ◦ classification (binaire ou classes multiples) ◦ moteurs de recommandation ◦ clusterisation ◦ autres... • 2 types d’algorithmes : ◦ Ceux à apprentissage supervisé ◦ et les autres à apprentissage non-supervisé
d’un apprentissage supervisé, ◦ On dispose dans nos données ▪ d’un Label : la valeur qui doit être déterminée ▪ et de Features : les valeurs qui expliquent la valeur label ◦ Le but est de prédire le Label de nouvelles données • Dans le cas d’un apprentissage non-supervisé ◦ On ne dispose que de Features ◦ Exemple : construction de clusters de points basés sur les similarités
1. Nettoyage des données brutes 2. Définition des Features 3. Génération d’un modèle de Machine Learning a. Découpage du dataset en datasets d’apprentissage/validation/test b. Génération du modèle 4. Application du modèle sur de nouvelles données
Machine Learning • Algorithmes implémentés en utilisant les spécificités de Spark: ◦ Partitioning des données ◦ Processing itératif exécuté en mémoire • Optimisés pour d’importants volumes de données • La différence entre MLlib & ML ◦ MLlib ▪ manipule des RDDs ▪ laisse une approche libre pour la mise en oeuvre des algorithmes ◦ ML ▪ abstraction de plus haut niveau que les MLlib ▪ permet la description de pipelines
Learning avec Spark ML, il faut 1. Charger les données dans un DataFrame 2. Faire du nettoyage dans les données 3. Faire du “feature engineering” pour rendre les données compatibles avec les algorithmes de ML a. conversions spécifiques / StringIndexer / VectorAssembler 4. Découper les données en données d’entrainement & en données de test a. df.randomSplit() 5. Instancier l’algorithme et définir ses paramètres 6. Appeler la méthode fit() sur le jeu de données d’entrainement pour obtenir un modèle de Machine Learning 7. Appeler la méthode transform() pour faire des prédictions sur le jeu de données de test
➔ Jeu d’entrainement (avec labels) : /data/titanic/train.csv ➔ Jeu de test (sans labels) : /data/titanic/test.csv ➔ Labels du jeu de test : /data/titanic/gendermodel.csv • Liste des passagers + indication s’ils ont survécu • Peut-on prédire si un passager va survivre au naufrage ?
Ouvrir le notebook “Titanic” ➔ Les opérations de Data Cleansing, Feature Engineering et construction du Pipeline sont déjà écrites ◦ → Analyser le code ➔ Les étapes d’entrainement du modèle et de prédiction sont à écrire ◦ → Compléter le code ➔ Visualiser ensuite les prédictions et les comparer aux résultats attendus • Durée : 20 minutes
Une API riche (privilégier les DataFrames) ➔ Adapté à la Data Science : ◦ Librairie de Machine Learning ◦ Support de Python et R ➔ Adapté à de larges volumes de données • A combiner avec d’autres outils : ➔ Bases (No)SQL ➔ Notebooks (Zeppelin, Databricks Cloud…) A retenir