Spark RDD : Transformations & Actions

download Spark RDD : Transformations & Actions

of 48

Embed Size (px)

Transcript of Spark RDD : Transformations & Actions

  • APACHE SPARKRDD : TRANSFORMATIONS, ACTIONS PAS PAS

    DR MUSTAPHA MICHRAFY

    CONTACT : DATASCIENCE.KM@GMAIL.COM

  • CONTEXTE

    Cette tude a t mene dans le cadre desrencontres de travail organises auLaboratoire CERMSEM, Centre d'conomie dela Sorbonne (CES).

    2

    M.MICHRAFY

  • PLAN

    1. Contexte2. Objectif et prrequis3. Spark Dfinition et motivations4. Positionnement de Spark dans leco-systeme Big Data5. Composants de spark6. Spark driver et workers7. Apache Spark : vue logique et APIs8. Vue globale sur les API Spark : dpendance et interaction9. RDD, caractristiques, cration et Operations10.Oprations de type transformation et action

    3

    M.MICHRAFY

  • OBJECTIF ET PRREQUIS

    Connaissance de lapproche objet Connaissance de la programmation

    fonctionnelle Connaissance du langage Scala

    Cette tude vise mettre en pratique Sparkpas pas. Il sagit dexplorer les oprations(transformations et actions) relatives lastructure rsiliente RDD .

    PrrequisPrrequisObjectifObjectif

    4

    M.MICHRAFY

  • SPARK DFINITION ET MOTIVATIONS

    Framework open source ddi au calcul distribu Extension du design pattern map-reduce Diffrents modes de traitement : interactif et

    streaming Excution en mmoire Intervient dans le traitement de donnes dans un

    cosystme Big-Data

    Rapide 10 fois plus rapide que Hadoop sur disque 100 fois plus rapide en mmoire que Hadoop

    Facile dvelopper Riche en terme doprations Ecriture rapide des programmes Mode interactif Code concis

    Dploiement flexible : Yarn, Standlone, Local, Mesos Stockage : HDFS, S3, Openstack Swift, MapR FS,

    Cassandra Modle de dveloppement unifi : Batch, streaming,

    interactif Multi-langages : Scala, Java, Python, R

    Apache spark ?Apache spark ? MotivationsMotivations

    5

    M.MICHRAFY

  • POSITIONNEMENT DE SPARK DANS LECO-SYSTEME BIG DATA

    6

    Batch/ETL processing

    Spark, MapReduce, Pig, Hive

    Stream processing

    Spark Streaming, Storm, Flink Streaming

    Machine Learning

    Spark MLib, Mahout, Flink ML, R

    Interrogation SQL-Like

    Spark SQL, Drill, Hive, Impala

    Graph processing

    Spark GraphX, Giraph, GraphLab

    HDFS, S3, Openstack swift, MapR FS, Cassandra

    Stockage

    M.MICHRAFY

  • COMPOSANTS DE SPARK

    7

    Cluster ManagerSparkContext

    Spark driver

    Worker Node

    Executor

    TaskTask

    Worker Node

    Executor

    TaskTask

    Worker Node

    Executor

    TaskTask

    M.MICHRAFY

  • SPARK DRIVER ET WORKERS

    8

    SparkContext

    Spark driver

    Cluster Manager

    LocalThreads

    WorkerExecutor

    WorkerExecutor

    HDFS, S3, Openstack swift, MapR FS, CassandraHDFS, S3, Openstack swift, MapR FS, Cassandra

    Un programme Spark est compos de deux programmes :

    1. Le programme pilote ( driver program )2. Les programmes travailleurs (workers program)

    Les programmes travailleurs sexcutent soit sur les nuds du cluster soit sur les threads en local

    Le programme pilote interagit avec le cluster via SparkContext

    Pas de communication entre les programmes travailleurs

    M.MICHRAFY

  • 9

    Spark Core

    RDD (Transformations et Action)

    Spark SQL Spark MLSparkStreaming

    Spark GraphX SparkR

    Systme de stockage

    Spark supporte plusieurs systmes de stockage: HDFS, S3, Openstack swift, MapR FS,Cassandra

    Spark SQL est un module ddi au traitementdes donnes structures avec une syntaxesimilaire SQL. Il permet dextraire, transformeret charger des donnes sous diffrents formats(CSV, JSON, Parquet, base de donnes) et lesexposer pour des requtes ad-hoc.

    Spark ML est une librairieddie aux mthodesdapprentissage distribus :

    Classification Clustering Rgression Filtrage collaboratif Rduction de dimension

    Spark Core est le moteur de calcul etdexcution pour la plateforme Spark : Ordonnancement des taches Gestion du calcul en mmoire Recouvrement Interaction avec le systme de stockage

    API RDD propose des oprations de typetransformation et Action.

    Spark Streaming est ddi au traitementtemps-rel des donnes en flux. Il offre unmode de traitement en micro-batch etsupportant diffrentes sources de donnes(Kafka, Flume, Kinesis ou TCP sockets ).

    Spark GraphX est ddi au traitement et laparalllisation de graphes. Ce module offre desoprateurs et des algorithmes pour letraitement des graphes. GraphX tend les RDDde Spark via la Resilient Distributed DatasetGraph (RDDG)

    SparkR est un package R offrant une interfacelgre pour utiliser Spark partir de R. DansSpark 2.0.2, SparkR fournit une implmentationde la Dataframe distribue supportant desoprations telles que la slection, le filtrage,l'agrgation. SparkR offre aussi des algorithmesdapprentissages distribus.

    APACHE SPARK : VUE LOGIQUE ET APIS M.MICHRAFY

  • VUE GLOBALE SUR LES API SPARK : DPENDANCE ET INTERACTION

    10

    Spark core

    RDDRDDRDD

    Spark SQL

    DataframeDataframeDataframe

    Spark ML

    Model MLModel MLModel ML

    Spark GraphX

    Graph RDDGraph RDDGraph RDD

    Spark Streaming

    DStreamDStreamDStream

    Streaming Source

    File System Data Source

    M.MICHRAFY

  • RDD, CARACTRISTIQUES, CRATION ET OPERATIONS (1)

    11

    1. Une RDD est une liste de partitions2. Une RDD est associe une liste de

    dpendances avec les RDD parents3. Une RDD dispose dune fonction pour calculer

    une partition4. Optionnellement, un objet partionner pour

    les RDD de type cl/valeur5. Optionnellement, une liste indiquant

    lemplacement pour chaque partition

    CaractristiquesCaractristiques

    RDD supporte deux type doprations1. Transformation2. Action

    Une transformation consiste appliquer une fonction sur 1 n RDDet retourner une nouvelle RDD

    Une action consiste appliquer unefonction et retourner une valeur

    OprationsOprations

    1. Les transformations sontparesseuses, vitant le calcul inutile.Ceci favorise loptimisation dutraitement.

    2. Une RDD transforme est calculelorsquune action est applique surcette dernire.

    Evaluation LazyEvaluation Lazy

    Resilient Distributed Dataset (RDD)

    Resilient : supporte la tolrance aux pannes grce unemodlisation du processus dexcution par un DAG (directedacyclic graph), et au recalcul des partitions manquantes.

    Distributed : donnes distribues sur les nuds du cluster.

    Dataset : collection de donnes partitionne.

    M.MICHRAFY

  • RDD, CARACTRISTIQUES, CRATION ET OPERATIONS (2)

    12

    Trois manires de crer une RDD1. A partir dune source de donnes2. En paralllisant une collection via

    SparkContext3. En appliquant une opration de

    type transformation sur la RDD

    CrationCration

    Certaines fonctions sont disponiblesseulement sur certains types de RDD :

    1. mean, variance, stdev pour les RDDnumriques

    2. Join pour les RDD cl/valeur3. Lenregistrement de fichier utilisant

    des RDD bases sur des fichiers deformat squentiel.

    Pour plus de dtails, voir les RDD de typeo PairRDDFunctions,o DoubleRDDFunctions,o SequenceFileRDDFunctions

    Fonction/type RDDFonction/type RDD

    In-MemoryImmutable

    Lazy

    evaluated

    Lazy

    evaluated

    CacheableParallele

    TypedPartitioned

    Resilient

    RDD

    Spark supporte de charger oudenregistrer des fichiers dansdivers formats : non structur, semi-structur, structur.

    Les formats sont :o Texto Jsono CSVo SequenceFileo Protocole bufferso Object files

    Formats fichiersFormats fichiers

    M.MICHRAFY

  • 13

    Oprations de type transformation et action

    Cette section prsente les diffrentes oprations( Transformation, Action) relatives un type RDD.

    Elle est organise par fiche. Chaque fiche porte sur une opration et contient :

    1. Un objectif2. La signature de lopration3. Une section retenir 4. Un exemple excut en mode interactif (*)

    (*) : Les exemple du code ont t excuts avec spark-shell, version 2.0.2

    M.MICHRAFY

  • OPRATION DE TRANSFORMATION : MTHODE MAP

    La mthode map retourne une RDDen appliquant une fonction passeen argument chaque item de laRDD source

    Il sagit dun design patternincontournable de la programmationfonctionnelle.

    ObjectifObjectif

    def map[U](f: (T) U)(implicit arg0: ClassTag[U]): RDD[U]

    API : scala, Classe : RDD, Package : org.apache.spark

    Entre : f est une fonction : (T) => USortie : une RDD de type U

    SignatureSignature

    // crer un RDD

    val x = sc.parallelize(List( 7, 10, 12, 17, 19), 2) // x: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[2] at parallelize at :24

    // definir une fonction f

    val f = (a:Int) => (a/2, a%2) // f: Int => (Int, Int) =

    // dfinir une fonction g

    val g = (a:Int) => (a*100.0)/20 // g: Int => Double =

    // applique map avec f et g

    val zf = x.map(f) // zf: org.apache.spark.rdd.RDD[(Int, Int)] = MapPartitionsRDD[3] at map at :28

    val zg = x.map(g) // zg: org.apache.spark.rdd.RDD[Double] = MapPartitionsRDD[4] at map at :28

    // afficher zf et zg

    zf.collect() // res1: Array[(Int, Int)] = Array((3,1), (5,0), (6,0), (8,1), (9,1))

    zg.collect() // res2: Array[Double] = Array(35.0, 50.0, 60.0, 85.0, 95.0)

    ExempleExemple

    La RDD source et la RDD retourne ont le mme nombre ditem

    Si les items de la RDD source sont de type T alors les item