Data Munging avec Spark Partie II @ Paris Machine Learning Applications Group

Data Munging avec Spark Partie II @ Paris Machine Learning Applications Group

Dans l’atelier précédent, nous avons vu comment Spark fait partie intégrante dans le kit de "ménage" du data scientist moderne. Les bases de Spark et son API (PySpark) ont été abordées. Nous avons vu que le concept de RDDs est assez flexible et puissant pour travailler la donnée de tout type à l’aide d’une multitude de transformations et d’actions proposées.

Nous savons bien que pour commencer à faire une analyse exploratoire et utiliser les méthodes de machine learning il faut d’abord structurer correctement ses données. C’est ce que nous aborderons dans cette deuxième partie de l’atelier.

Le programme :

• Charger et enregistrer des données volumineuses au format CSV sans souffrance

• Utiliser l’API DataFrame pour faire une analyse exploratoire simple

• Analyser la donnée via SQL avec SparkSQL (et oui, le bon et vieux SQL a toujours la côte)

• Utiliser les tableaux croisés dynamique

• Utiliser Parquet, un format de stockage performant et structuré de plus en plus utilisé en entreprise

Cette atelier sera animé par Leonardo Noleto, data scientist.

Les TPs en format Jupyter Notebook peuvent être téléchargés ici: https://goo.gl/1C7UOq

Pour installer l'image Docker nécessaire, suivre ce guide : https://docs.google.com/document/d/1ku757Irz-bv9g1IiUeBUoDaRhSpQXc-RFfTruvjmW3o/edit

4b0496d835b7ddcc8b9fe03efbae5f7b?s=128

Leonardo Noleto

May 04, 2017
Tweet

Transcript

  1. Data Munging avec Spark Partie II Leonardo Noleto @leonardo_noleto Workshop

    Mercredi 3 Mai 2017 https://goo.gl/1C7UOq Les TPs corrigés sont ici :
  2. Leonardo Noleto Data Scientist Co-fondateur Toulouse Data Science @leonardo_noleto Paris

    Machine Learning Applications Group Andrei Arion Data engineer @LesFurets.com @andreiarion Mehdi Sakji Data (scientist | engineer) @ Davidson Consulting Moniteurs :
  3. Dans l'épisode précédent...

  4. Récap’ • Spark : framework généraliste traitement distribué • Driver,

    Executor • API PySpark (Python) • Transformations (Lazy) ◦ map, flatMap, filter, reduceByKey, groupByKey • Actions ◦ count, collect, take, top, takeOrdered, reduce,
  5. None
  6. Représentation de données • RDDs • Data Frame en R

    ou Python Pandas • Table (base de données relationnelles)
  7. Problème : Régulation des vélos en libre service

  8. Données • Nombre de location des vélos par heure :

    ◦ data/bike_sharing/usage_hourly.csv • Données météo (température, vent, humididité) : ◦ data/bike_sharing/weather.csv
  9. None
  10. Parquet • Auto- descriptif (schéma, structure, statistiques inclus dans le

    fichier) • Format colonnes (optimisation de requêtes) • Compressé (stockage performant, minimise E/S) • Indépendant du langage ou framework d’analyse Source: https://drill.apache.org/docs/parquet-format/
  11. Parquet: approche colonne vs. ligne Exemple: voici une table à

    stocker Stockage basé sur ligne : Stockage basé sur colonne :
  12. Mission: Créer une heatmap permettant de comprendre l’usage de vélos

    par jour de la semaine et heure
  13. Lignes Colonnes Example Heatmap

  14. None
  15. Pour aller plus loin... • Apache Spark: RDD, DataFrame or

    Dataset? → http://goo.gl/BFGrwl • Pivoting Data in SparkSQL → http://goo.gl/qtMrgn • From Pandas to Apache Spark’s DataFrame → https://goo.gl/6iyyXd
  16. Merci ! > questions .where (questions.contenu.isNotNull()) .show(5)

  17. Driver, Executors Driver SparkContext Executors

  18. Resilient Distributed Dataset (RDD) 1, 2, 3, 4, 5, 6,

    …………………………………………………………………996, 997, 998, 999, 1000 Partitions Collection d’éléments Collection d’éléments distribuée Important : cette collection est immuable