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

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

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

Apache Spark est un framework open source généraliste, conçu pour le traitement distribué de données. C’est une extension du modèle MapReduce avec l’avantage de pouvoir traiter les données en mémoire et de manière interactive. Spark offre un ensemble de composants pour l’analyse de données: Spark SQL, Spark Streaming, MLlib (machine learning) et GraphX (graphes).

Cet atelier se concentre sur les fondamentaux de Spark et le paradigme de traitement de données avec l’interface de programmation Python (plus précisément PySpark).

L’installation, configuration, traitement sur cluster, Spark Streaming, MLlib et GraphX ne seront pas abordés dans cet atelier.

Objectifs

Comprendre les fondamentaux de Spark et le situer dans l'écosystème Big Data ;

Savoir la différence avec Hadoop MapReduce ;

Utiliser les RDD (Resilient Distributed Datasets) ;

Utiliser les actions et transformations les plus courantes pour manipuler et analyser des données ;

Ecrire un pipeline de transformation de données ;

Utiliser l’API de programmation PySpark.

Cet atelier est le premier d’une série de 2 ateliers avec Apache Spark. Pour suivre les prochains ateliers, vous devez avoir suivi les précédents ou être à l’aise avec les sujets déjà traités.

Quels sont les pré-requis ?

Connaître les base du langage Python (ou apprendre rapidement via ce cours en ligne Python Introduction)

Être sensibilisé au traitement de la donnée avec R, Python ou Bash (why not?)

Aucune connaissance préalable en traitement distribué et Apache Spark n’est demandée. C’est un atelier d’introduction. Les personnes ayant déjà une première expérience avec Spark (en Scala, Java ou R) risquent de s'ennuyer (c’est un atelier pour débuter).

Comment me préparer pour cet atelier ?

Vous devez être muni d’un ordinateur portable relativement moderne et avec minimum 4 Go de mémoire, avec un navigateur internet installé. Vous devez pouvoir vous connecter à Internet via le Wifi.

Suivre les instructions pour vous préparer à l’atelier (installation Docker + image docker de l’atelier).
https://docs.google.com/document/d/1ku757Irz-bv9g1IiUeBUoDaRhSpQXc-RFfTruvjmW3o/edit

Les données à nettoyer sont comprises dans l’image Docker. Les exercices seront fournis lors de l’atelier en format Jupyter notebook.

Lien vers le meetup : https://www.meetup.com/Paris-Machine-learning-applications-group/events/237212885/

4b0496d835b7ddcc8b9fe03efbae5f7b?s=128

Leonardo Noleto

March 22, 2017
Tweet

More Decks by Leonardo Noleto

Other Decks in Programming

Transcript

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

    Mercredi 15 et 22 mars 2017 https://goo.gl/THWjyB Les TPs corrigés sont disponibles ici:
  2. Leonardo Noleto Data Scientist @ KPMG 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. Comment analyser le Big Data ?

  4. Il était une fois… Hadoop

  5. Dois-je apprendre Hadoop avant Spark ? Non, Apache Spark est

    un projet indépendant de Hadoop. ...toutefois, comme il s’intègre avec Hadoop il est intéressant de connaître les bases de Hadoop.
  6. ~~~~~ ~~~~~ ~~~~~ ~~~ Ecrire un fichier 180 Mo DN1,

    DN2, DN3 done done done close Name node Client Data Node1 Data Node2 Data Node3 Replication pipeline Bloc de 64 Mo DN1, DN2, DN3 HDFS : récap’
  7. Hadoop MapReduce : récap’

  8. Hadoop : limitations • Mode Batch (adapté pour les traitement

    longs) • Ecriture des résultats intermédiaires en disque (forte latence à cause de la réplication) • Lecture à partir du disque seulement (pénalise les algorithmes itératifs)
  9. HDD: $1.24/GB RAM: $189/GB HDD: $0.05/GB RAM: $5.50/GB (34x less

    expensive 2005) (Apache Spark June 2013)
  10. Apache Spark • 2009 : sujet de recherche UC Berkeley

    AMPLab (open source 2010) • Juin 2013 : Top Apache Project (Apache Spark) • Extension du modèle MapReduce (plus performant, in-memory) • Framework généraliste (propose autres paradigmes de programmation) • API en Scala, Java, Python et R • Permet de faire des analyses interactives (Scala et Python) • Ecosystème riche (SparkSQL, Spark Streaming, MLlib, GraphX)
  11. None
  12. Apache Spark : les bases

  13. Driver, Executors Driver Executors SparkContext

  14. 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
  15. Transformations

  16. Map

  17. Map

  18. Actions

  19. Collect

  20. Filter Transformation

  21. Reduce Action reduce(accumulator, e: accumulator + element) 0 acc 01

    1 2 3 3 6 4 10 15 5 elem 15 30 La fonction doit être commutative et associative !!!
  22. Mission : Réaliser un nuages de mots à partir des

    ouvrages de Shakespeare
  23. None
  24. Approche distribuée et scalable

  25. Manipuler les RDD Key-Value • Pairs (k1, v1) (k2, v2)

    (k3, v4) …………………………………………………………………….. (kN, vN) • RDD de pairs
  26. GroupByKey Transformation

  27. GroupByKey : limitations • Demande beaucoup de transfert des données

    entre les workers • Pour une grande collection, par exemple compter les mots dans toutes le pages Wikipedia, cela peut dépasser la mémoire disponible dans les workers
  28. ReduceByKey Transformation reduceByKey(accumulator, e: ...)

  29. map vs flatMap Transformation RDD (String) Hello Word A new

    line! Viva Las Vegas map(x: x.split(‘ ’)) RDD (List of String) Hello Word A new line! Viva Las Vegas
  30. map vs flatMap Transformation RDD (String) Hello Word A new

    line! Viva Las Vegas flatMap(x: x.split(‘ ’)) RDD (String) Hello Word A new line!
  31. Solution word count avec Spark

  32. RDD Lineage

  33. 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,
  34. Pour aller plus loin • edX Introduction to Big Data

    with Apache Spark (https://goo.gl/ZHTIS7) • Coursera Big Data Analysis with Scala and Spark (https://goo.gl/d3kOUq) • How-to: Translate from MapReduce to Apache Spark (http://goo.gl/oBZrb0)
  35. A venir • Partie II - CSV, Parquet, DataFrames, SparkSQL

  36. Merci! > questions .map(lambda x: reponses(x)) .collect()

  37. Spark vs. PySpark Source: https://goo.gl/ZpYSRv

  38. None