Sparks SQL
&
DataFrames
Bouhrara Adam
Cassiet 29/02/2024
Clément CY-TECH
Gautier Jordan ING2 GSIA
Legrand Joan Djaouida
Zaouche 1
Table des matières
01 03
Récupération des données et
Introduction Communication avec
Database SQL
- Rappel de ce qu’est
Spark - Différentes manières de
- Introduction à Spark récupérer les données en
SQL DataFrame.
04
02 - Utilisation de JDBC et
SparkSQL pour communiquer
Intégration avec les Database SQL DataFrames
- Integrer SparkSQL a un Présentation générale des
projet Spark DataFrame, de fonctions
- Création de Spark de traitements
sessions couramment utilisées,
- Configuration de avec exemples
connexion à la base de d’utilisation concret 2
01
Introduction
Spark et Spark SQL
3
Spark Spark SQL
● Puissant framework pour traiter les ● Module majeur de Spark
données pour traiter les données structuré
⇒ Pour un grand nombre de comme les non structuré, pour les
données notamment (Big Data) analyser et les manipuler
● Haute performance, rapide et facile ● Accessible simple et puissant
d’utilisation ● Utilise un type de données les
● Opère en mémoire DataFrames
● Flexible ⇒ plusieurs langages ● Permet les utilisateurs d’agir sur les
possibles Scala/Python/Java/R DataFrames à l’aide de requêtes SQL
notamment
Utilisation de Spark :
- Traitement en temps réel Utilisation de Spark SQL :
- Machine learning - Analyse de données
- De manière générale pour traiter un - Manipulation des données
volume massif de données en parallèle - Reporting
- Incontournable de la Big Data
4
02
Intégration
5
Integrer Spark SQL à son
projet Spark
Dependance :
val sparkVersion = "3.5.0"
libraryDependencies += "[Link]" %% "spark-sql" % sparkVersion
Imports
import [Link].{SparkSession, DataFrame, Column, Row, SaveMode}
importants :
import [Link]._
import [Link]._
Démarré sbt
server avec sbt -java-home "C:\Program Files\Java\jdk-11"
jdk 11 :
6
Configuration pour se connecter
aux Bases SQL
libraryDependencies += "[Link]" % "mssql-jdbc" % "9.4.0.jre11"
libraryDependencies += "[Link]" % "ojdbc8" % "[Link]"
7
Initialisation d’une Session Gestion des Exceptions
Spark
import [Link]
import [Link]
8
03
Récupération des
données et
communication avec
database SQL
9
Récupération de données
Différentes manières de récupérer des données depuis la Session Spark (même
avant de vouloir récupérer directement en Database) :
Depuis un
JSON ou
CSV :
Directement dans le code
Scala,
depuis un Seq avec .toDF par
exemple :
10
[Link]()
[Link]()
11
Les modes
Append: Overwrite:
● Ajoute les données de la ● Remplace complètement la table
DataFrame à la table existante avec les données de la
existante DataFrame.
Ignore: ErrorIfExists:
● N'écrit pas les données si la ● Génère une erreur si la table existe
table existe déjà déjà
12
Les options
Les options permettent de configurer et personnaliser les opérations de lecture et
d'écriture de données dans Spark SQL, offrant ainsi un contrôle sur le format, le
schéma, le mode d'écriture, les paramètres de connexion à la source de données,
etc.
Quelques options
utiles :
● format: Spécifie le format. ● queryTimeout: Limite de temps pour
● query: Spécifie une requête SQL à exécuter l'exécution de la requête SQL
directement sur la source de données. ● user: Nom d'utilisateur pour la connexion à
● prepareQuery: Utilisé pour exécuter des la base de données
requêtes paramétrées avec des paramètres ● password: Mot de passe pour la connexion
dynamiques ou pour préparer la requête à la base de données
final. ● mode: Pour spécifier un mode (append,
● dbtable: Spécifie la table dans la base de overwrite…) mais dans un option
données relationnelle à lire.
● truncate: Tronquer la table avant l'écriture
● fetchsize: Taille du lot pour récupérer les
résultats 13
Les options
14
Coupler avec le module [Link]
● Permet de DROP, TRUNCATE…
● Il est possibe de faire la même chose avec les dataFrame. Ecrire une
DataFrame préalablement vidé dans la db pour truncate… Crée de la
complexité.
15
Utilisation de SparkSQL
DataFrame
[Link] [Link]
() ()
16
04
DataFrames
17
Présentation DataFrames
18
Les fonctions natives des DataFrames
Un très grand nombre de fonctions pour traiter, analyser et
manipuler les DataFrames existent :
[Link]
html
19
Utilisation des DataFrames
Manipulation de base Agrégation et Analyse
Jointure sur DataFrame Transformation
20
Manipulation de base
Fonctions natives : Fonctions
développées:
● [Link](SQLquery)
● executeAnyStateme
● [Link](StructType)
nt
● [Link](Columns names)
● truncate
● [Link](Columns names)
● deleteRows
● [Link](Columns names)
● [Link]()
● [Link](dataframe2)
● [Link](numberOfRows)
● [Link]()
21
executeAnyStatement
22
Filter (1)
23
Filter (2)
truncate deleteRows
24
Agrégation et Analyse
Fonction native :
● [Link](cols: List[ColumnOrName])
● [Link](column name, other columns)
Fonctions développées:
● computeAggregate
● groupby
25
groupby
26
computeAggregate
27
Jointure sur DataFrame
Fonctions natives :
● [Link](dataframe1, dataframe2, Column name,
mode)
● [Link](dataframe2, Column name, mode)
(mode par defaut = “inner”)
Fonctions développées:
● Left Join
● Right Join
● Inner Join
● Outer Join
28
Left Join
29
Transformations
Fonctions natives :
● [Link](dataframe1, Column name, Column type, values)
● [Link](dataframe1, Old column name, New
column name)
Fonctions développées:
● Rename Column
● Convert Column
● Add Column
30
Add Column
31
Merci !
Avez vous des
questions ?
Sources :
- Lien vers les
CREDITS: Thisfonctions natives
presentation templateSpark SQL by
was created : Slidesgo,
All :and
[Link]
includes icons by Flaticon, and infographics & images by
Freepik
Sur les DataFrames :
[Link]
- Notre Repo Github avec le Projet :
[Link]
32