Académique Documents
Professionnel Documents
Culture Documents
- Draft -
Khaled Jouini
j.khaled@gmail.com
2020-2021
1 1. Spark, quésaco?
Data Science Life Cycle
1. Spark, quésaco?
Spark : idée essentielle, on compose des chaı̂nes de traitement avec des opérateurs de
haut niveau et les données sont constamment gardés en mémoire vive. Jusqu’à 1000 fois
plus rapide que Hadoop.
Unified Analytics Engine for Big Data : opérateurs de haut niveau pour réaliser différents type
de traitements
SparkSQL : données structurées et semi-structurées. Permet entre autres d’utiliser SQL sur les
collections de données.
Spark Streaming : traitement de flux de données en temps réel
Spark MlLib : algorithme de machine learning
Spark Graphx : sharding et interrogation de données en graphe.
1. Spark, quésaco?
1. Spark, quésaco?
Spark SQL est le module Spark permettant de traiter les données structurées et
semi-structurées avec SQL et la programmation fonctionnelle
Utilité, essentiellement :
Spark SQL est le module Spark permettant de traiter les données structurées et
semi-structurées avec SQL et la programmation fonctionnelle
Il est possible d’interagir avec SparkSQL avec les API Dataframe et Dataset. Quelque soit la
manière d’exprimer les traitements, ceux-ci vont être optimisés et exécutés avec le moteur
d’exécution;
Spark SQL, fournit plusieurs manières d’exprimer les traitements sur les données structurées et
semi-structurées incluant les requêtes SQL et les expressions lambda de l’API Dataset.
Spark SQL permet également de lire/écrire les données à partir d’une source csv, JSON,
texte, input hadoop, Hive ou JDBC/ODBC. Les données lues à partir d’une source SQL sont
mises dans des dataframes/datasets.
DataFrame API (introduit dans Spark 1.3), renommé en DataSet[Row] depuis la version 2.2
Possibilité d’interroger les données avec des opérateurs SQL ou bien avec une chaı̂ne de
caractère SQL
L’API DataFrame utilise également la sérialisation off-heap (gains par rapport au GC Java) et
effectue certaines transformations directement sur le format binaire.
Conceptuellement un Dataframe se présente sous une forme tabulaire similaire à une table
relationnelle
Data Drame : Abstractionde haut niveau d’un RDD. Représente un tableau de données
avec des lignes et des colonnes (spreadsheet).
Techniquement : collection distribuée d’objets typés. Distribution sur un cluster de machines
(Big Data).
Le concept de Data Frame, n’est pas propre à SparK. On retrouve le même concept dans
Python (pandas) et R. Il est facile de convertir un Data Frame Spark en un Data frame
Python ou R et inversement.
schema : une liste de noms de colonnes. Les types des colonnes peuvent être inférés.
sentenceData = spark.createDataFrame([
(1, "ISITCom Spark SQL"),
(1, "ISITCom Spark Spark ML"),
(0, "ISITCom MapReduce"),
(0, "ISITCom Hadoop")],
["label", "sentence"])
Le format de lecture écriture par défaut utilisé par l’API Dataframe est parquet
df = spark.read.load("...users.parquet")
df.select("_id", "name").write.save("idsNames.parquet")
import spark.implicits._
dfA.select("_id", "first_name").show()
1
dfA.groupBy("birth_date").count().orderBy("count").show()
1
$ sign is used as a short cut for selecting a column and applying functions on top of it.For ex df.select($"id".isNull).show
which can be other wise written asdf.select(col("id").isNull)
13 / 17 Khaled Jouini (IsitCom) Spark RDD, DataFrame et Dataset- Draft - 2020-2021 13 / 17
2. Saprk SQL : présentation et prise en main 2.2. API Dataframe
Exemple
import spark.implicits._
dfM.printSchema()
dfM.groupBy("year").count().show()
dfM.select($"year",$"title").orderBy($"year").show()
2
$ sign is used as a short cut for selecting a column and applying functions on top of it.For ex df.select($"id".isNull).show
which can be other wise written asdf.select(col("id").isNull)
14 / 17 Khaled Jouini (IsitCom) Spark RDD, DataFrame et Dataset- Draft - 2020-2021 14 / 17
2. Saprk SQL : présentation et prise en main 2.2. API Dataframe
Exemple
dfM.createOrReplaceTempView("movies")
sqlDF.show()
dfA.createOrReplaceTempView("artists")
Les vues temporaires sont session-scoped ce qui signifie qu’elles disparaissent un fois la
session qui les as créés se termine.
Il est possible de créer des vues temporaires globales interrogeables à partir des différentes
sessions et qui ne disparaissent qu’à la fermeture de Spark.
df.createGlobalTempView("movies")
Les opérations appliquées à un DataFrame sont soit des transformations soit des actions
Ceci permet à spark de libérer la mémoire vive et de ne pas avoir à retourner au driver les
résultats intermédiaires d’une chaı̂ne d’opérations d’être donc plus performant