Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Leonardo Noleto

May 04, 2017
Tweet

More Decks by Leonardo Noleto

Other Decks in Programming

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 :

    View Slide

  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 :

    View Slide

  3. Dans l'épisode précédent...

    View Slide

  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,

    View Slide

  5. View Slide

  6. Représentation de données
    ● RDDs
    ● Data Frame en R ou Python Pandas
    ● Table (base de données relationnelles)

    View Slide

  7. Problème :
    Régulation des vélos en libre service

    View Slide

  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

    View Slide

  9. View Slide

  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/

    View Slide

  11. Parquet: approche colonne vs. ligne
    Exemple: voici une table à
    stocker
    Stockage basé sur ligne :
    Stockage basé sur colonne :

    View Slide

  12. Mission:
    Créer une heatmap permettant de
    comprendre l’usage de vélos par jour de la
    semaine et heure

    View Slide

  13. Lignes
    Colonnes
    Example Heatmap

    View Slide

  14. View Slide

  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

    View Slide

  16. Merci !
    > questions
    .where (questions.contenu.isNotNull())
    .show(5)

    View Slide

  17. Driver, Executors
    Driver
    SparkContext
    Executors

    View Slide

  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

    View Slide