@aseigneurin - @antoine_hars ● En parallèle, copie des fichiers de 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
@aseigneurin - @antoine_hars Apache Spark ● Framework pour le traitement 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
@aseigneurin - @antoine_hars ● Spark s’intègre avec la majorité des 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
@aseigneurin - @antoine_hars Les RDDs ● Représentation de la donnée : 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()
@aseigneurin - @antoine_hars ● Dataframe ≈ RDD + Schéma des 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
@aseigneurin - @antoine_hars Exploration de données ● Exploration de données 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
@aseigneurin - @antoine_hars ● Zeppelin : un notebook pour Spark ➔ 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
@aseigneurin - @antoine_hars Le Machine Learning ● Permet de faire 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é
@aseigneurin - @antoine_hars Supervisé vs non-supervisé ● Dans le cas 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
@aseigneurin - @antoine_hars Le Workflow d’un process de Machine Learning 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
@aseigneurin - @antoine_hars Spark ML & MLlib ● Librairie de 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
@aseigneurin - @antoine_hars Spark ML ● Pour faire du Machine 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
@aseigneurin - @antoine_hars Machine Learning ● Données du Titanic : ➔ 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 ?
@aseigneurin - @antoine_hars Machine Learning ● Pour travailler : ➔ 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
@aseigneurin - @antoine_hars ● Spark, un framework complet : ➔ 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