Spark SQL principes et fonctions

download Spark SQL principes et fonctions

of 32

Embed Size (px)

Transcript of Spark SQL principes et fonctions

  • APACHE SPARK : SPARK SQL PRINCIPES ET FONCTIONS

    DR MUSTAPHA MICHRAFY

    CONTACT : DATASCIENCE.KM@GMAIL.COM

  • CONTEXTE

    Cette tude a t mene dans le cadre des

    rencontres de travail organises au Laboratoire

    CERMSEM, Centre d'conomie de la Sorbonne (CES).

    Il vise prsenter Spark SQL:

    Architecture

    API de Spark SQL

    Oprations sur DataFrames

    Oprations sur DataSet

    Oprations relationnelles

    2

    M.MICHRAFY

  • PLAN

    1. Contexte

    2. Objectif et prrequis3. Spark SQL, Motivations

    4. Spark SqL et introduction de Catalyst Optimizer

    5. Aperu sur les objets du module Spark SQL

    6. Nouvelle architecture Spark ( 2.x)

    7. DataWorkflow et Catalyst Optimizer

    8. Zoom sur SParkSESSION

    9. DataSet et DataFrame

    10.DataFrame, caractristiques, formats supports, cration11.Chargement et persistance des donnes

    12.DataFrameNaFunctions et Prparation des donnes

    13.Graphe de conversion entre Collection, RDD, DataFrame et DataSet

    14.Oprations sur les DataSets et les DataFrames

    3

    M.MICHRAFY

  • OBJECTIF ET PRREQUIS

    Connaissance de lapproche objet

    Connaissance de la programmation

    fonctionnelle

    Connaissance du langage Scala

    Connaissance de Spark

    Cette tude porte sur la brique Spark SQL de

    la plateforme Apache Spark. Il vise

    prsenter les concepts et les fonctionnalits

    de spark SQL.

    PrrequisObjectif

    4

    M.MICHRAFY

  • SPARK SQL : DFINITION ET MOTIVATIONS ?

    SPARK SQL est une brique logiciel incontournable

    de la plate forme Apache Spark.

    Cette brique est ddie au traitement de

    donnes structures et semi structures via lAPI

    DataSet/DataFrame.

    Spark SQL permet deffectuer des requtes sur les

    donnes avec une syntaxe similaire SQL.

    Spark SQL permet de sinterfacer diverses

    sources de donnes.

    Les oprations de SPARK SQL sont optimises

    travers lutilisation de Catalyst Optimizer.

    Pour formater les donnes Pour extraire des caractristiques des donnes Pour enrichir les donnes Pour transformer les donnes Pour appliquer des oprations relationnelles

    SPARK SQL ? Fonctionnalits

    5

    M.MICHRAFY

    Sinterfacer avec un tableau de bord en utilisant

    tableau, Qlik

    Raliser des requtes SQL sans faire appel la

    smantique RDD

    Prparation et Analyse des donnes travers lutilisation

    de lAPI DataFrame/DataSet avec oprations optimises

    et riches limage du package dplyr de R

    Cas dutilisation

  • SPARK SQL ET INTRODUCTION DE CATALYST OPTIMIZER

    6

    La popularit des systmes

    relationnels montre que les

    utilisateurs favorisent lcriture des

    requtes dclaratives.

    Constat 1

    Lapproche relationnelle

    est insuffisante pour la

    majorit des applications

    BigData, car :

    Limite

    Un besoin pour des oprations ETL vers et

    partir de diverses sources de donnes,

    (semi) structure, ncessitant un code

    personnalis.

    Lanalyse avance -base sur des

    algorithmes complexes- ne peut tre

    ralise par lapproche relationnelle

    1

    2

    Les workflows de donnes

    peuvent tre exprims par une

    combinaison de requtes

    relationnelles et dalgorithmes

    complexes.

    Constat 2

    Ces deux systmes - relationnel et procdural sont rests jusqu' la

    version 1.0.2 de Spark largement disjointes, forant les utilisateurs

    choisir un paradigme ou l'autre.

    noter

    Il vise combiner lapproche relationnelle et procdurale dans la brique spark SQL.o API DATASET/DataFrame permet deffectuer des oprations relationnelles sur des sources de

    donnes externes et les collections intgres de Spark

    o Divers formats de donnes et algorithmes distribus supports via lintroduction de loptimiseurCatalyst

    Intrt de SPARK SQL

  • APERU SUR LES OBJETS DU MODULE SPARK SQL

    7

    Objets

    Spark SQL

    Point dentre pour lAPI

    DataSet et lAPI DataFrame

    DataSet est une collection

    distribue immutable, disposant

    doprations de type action et

    transformation. DataFrame est

    un DataSet de Type Row

    Interface pour charger des

    DataSet partir dun stockage

    externe (TXT, CSV, JSON,

    PARQUET, Cle/Valeur, JDBC)

    Interface pour persister les

    donnes dune DataSet vers un

    systme de stockage externe

    Trait qui reprsente

    une colonne

    Trait qui reprsente

    une ligne

    Point dentre pour le module

    Spark SQL de la version 1.0.1

    la version 1.6 de Spark

    Collection des mthodes

    implicites pour convertir

    des Objets Scala en

    DataSets

    SQLImplicits

    SQLContext

    Row

    ColumnDataFrameWriter

    DataFrameReader

    DataSet & DataFrame

    SparkSession

  • NOUVELLE ARCHITECTURE SPARK ( 2.X)

    8

    Spark Core (RDD)

    SQL

    ML Pipelines

    Catalyst Optimizer

    DataSet/DataFrame

    Structured

    Streaming

    GraphFrame

    Storage

    SparkSQL

    o La nouvelle architecture sappuie sur le module Catalyst Optimizer permettant

    dunifier les APIs et optimiser davantage le

    traitement .

    o DataSet = DataFrame[Row]

    o DataSet, DataFrame et SQL partagent les mmes tapes doptimisation et

    dexcution grce Catalyst Optimizer

  • DATAWORKFLOW ET CATALYST OPTIMIZER

    9

    SQL AST

    DataFrame

    DataSet

    RDDs

    Catalyst Optimizer

    Query Plan Optimization

    Query

    Transformation Gnration du code

  • SPARKSESSION

    10

    SparkSession est le point dentre de lAPI

    DataSet/Dataframe, depuis la version 2.0.0

    SparkSession est une classe qui peut tre cre

    partir du Builder.

    Elle appartient au package org.apache.spark.sql

    Point dentre

    Accder SparkContext

    Accder SparkSql pour garantir la cohrence des versions

    de Spark SQL

    Crer des DataFrames partir des RDD ou des collections

    Crer des DataSet

    Crer une DataFrame ou une DataSet vide

    Crer une DataSet avec une seule colonne

    Excuter une requte Sql et retourner une dataframe.

    Accder des Interfaces permettant de charger une

    DataSet, en mode batch ou flux continu, partir de

    systmes de stockage externes (TEXT, CSV, JSON, ORC,

    PARQUET, Cle/valeur, JDBC)

    Fonctionnalits

    La majorit des mthodes sont au stade exprimental et sont disponibles partir de la version 2.

    Dautres mthodes sont ddis aux dveloppeurs de lAPI Spark

    Avant la version 2.0.0, la classe utilise est SparkSql

    noter bien

    Builder est une classe interne pour SparkSession.

    Cette dernire permet de grr, crer et

    configurer une session spark SQL

    Il dispose de :

    Constructeur sans argument

    appName pour fixer le nom de lapplication

    Config pour fixer les options de la conf.

    getOrCreate pour retourner une session

    Builder

  • DATASET ET DATAFRAME

    11

    DataSet est une collection distribue de donnes

    LApi DataSet a t introduit dans Spark partir

    de la version 1.6.

    La dataSet est fortement type.

    DataSet supporte des transformations bases sur

    des paradigmes fonctionnels ou relationnels

    limage de la RDD, une DataSet dispose des

    oprations de type transformation et Action.

    Une DataSet est paresseuse, par consquent le

    calcul se dclenche pour des oprations de type

    action.

    LAPI DataSet est disponible pour le langage

    Scala et Java, pas pour Python

    DataSet

    DataFrame est une DataSet avec des lments

    de type Row.

    Une DataFrame est lquivalent dune table dans

    une base de donnes ou une dataFrame dans R

    ou Python.

    Une DataFrame est non type.

    Une DataFrame peut tre construite partir

    dune source de donnes structures, des tables

    Hive, des BD ou des RDDs.

    LAPI DataFrame est disponible en Scala, Java,

    Python et R.

    DataFrame

    LAPI SPARK SQL sarticule autour de

    de la notion de DataSet/DataFrame

  • DATAFRAME, CARACTRISTIQUES, FORMATS SUPPORTS, CRATION

    12

    Cinq manires de crer une DataFrame1. A partir dune source de donnes2. partir dune RDD3. partir dune table BD4. A partir dune table Hive5. Via une opration de

    transformation

    Cration

    La dataFrame supporte : des oprations de type transformation et

    action. des oprateurs relationnels : select, where,

    join, groupby. les langages Scala, Java, Python, R

    Elle est : Oriente colonne Partionne dune valuation paresseuse

    DataSet = DataFrame[Row]

    Caractristique

    In-MemoryImmutable

    Lazyevaluated

    Cacheable

    Parallele

    unTyped

    Resilient DataFrame

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

    Les formats sont :

    o Texto Jsono CSVo Parqueto Orc

    Formats fichiers

    M.MICHRAFY

    Partitioned

  • CHARGEMENT ET PERSISTANCES DES DONNES 1/2

    13

    DataFrameReader a pour objectif de charger des DataSet partir dun systme de stockage externe

    tels quun systme de fichier, une table relationnelle,

    un stockage cl-valeur, etc.

    Laccs cette classe se fait partir dune session

    sparkSession via le membre read.

    Elle dispose des mthodes ddies des formats

    de type TXT, JSON, Parquet, Orc, CSV. Pour cela,

    utiliser les mthodes txt, json, orc, csv, parquet,

    textFiles, jdbc Elle dispose