pyspark

PySpark : Tout savoir sur la librairie Python

Maxime R

Maxime R

3 min

Lorsque l’on parle de traitement de bases de données sur python, on pense immédiatement à la librairie pandas. Cependant, lorsqu’on a affaire à des bases de données trop massives, les calculs deviennent trop lents.
Heureusement, il existe une autre librairie python, assez proche de pandas, qui permet de traiter des très grandes quantités de données : PySpark.

Apache Spark est un framework open-source développé par l’AMPLab de UC Berkeley permettant de traiter des bases de données massives en utilisant le calcul distribué, technique qui consiste à exploiter plusieurs unités de calcul réparties en clusters au profit d’un seul projet afin de diviser le temps d’exécution d’une requête.
Spark a été développé en Scala et est au meilleur de ses capacités dans son langage natif. Cependant, la librairie PySpark propose de l’utiliser avec le langage Python, en gardant des performances similaires à des implémentations en Scala.
Pyspark est donc une bonne alternative à la librairie pandas lorsqu’on cherche à traiter des jeux de données trop volumineux qui entraînent des calculs trop chronophages.

Architecture de Spark:
Avant toute chose, il est important de comprendre la base du fonctionnement de Spark.

Lorsque vous interagissez avec Spark grâce à PySpark, vous envoyez des instructions au Driver. C’est lui qui coordonne toutes les opérations. On peut communiquer au Driver grâce à un objet SparkContext. Cet objet coordonne les différents calculs sur les différents clusters.
Le gros avantage de Spark réside dans le fait que le code est totalement indépendant du SparkContext. On peut donc développer son code en local sur quelconque machine.

Dans cet article, nous allons présenter des éléments centraux à Spark, en commençant par les RDD, la structure la plus élémentaire de Spark. Nous irons ensuite étudier le type DataFrame, une structure plus riche que les RDD, optimisée pour le Machine Learning.

RDD - Resilient Distributed Data

Un RDD est la représentation Spark d’un tableau de données. C’est une collection d’éléments que l’on peut utiliser pour contenir des tuples, des dictionnaires, des listes…
La force d’un RDD réside dans sa capacité à évaluer le code de façon paresseuse : le lancement des calculs est reporté jusqu’à ce que ce soit absolument nécessaire.
Par exemple, lorsque l’on importe un fichier, seul un pointeur vers ce dernier est créé. Ce n’est vraiment qu’au dernier moment, lorsqu’on recherche à afficher ou utiliser un résultat, que le calcul est effectué.
Pour aller plus loin dans la
manipulation d’un RDD, on peut s’aider de la documentation disponible ici

 

Un RDD se lit ligne par ligne, ce qui le rend efficace pour traiter des fichiers texte (compter le nombre d’occurence de chaque mot dans l’intégrale des misérables par exemple), mais c’est une structure inadaptée pour des calculs par colonne.
Pour faire du Machine Learning, nous avons donc  besoin d’introduire une nouvelle structure : les DataFrames.

DataFrame pyspark

Le DataFrame de pyspark est la structure la plus optimisée en Machine Learning. Elle utilise de façon sous-jacente les bases d’un RDD mais a été structurée en colonnes autant qu’en lignes dans une structure SQL. Sa forme est inspirée des DataFrame du module pandas.
Grâce à la structure DataFrame, nous pouvons donc faire des calculs performants à travers un langage familier (car similaire à pandas), en évitant le coût d’entrée d’apprentissage d’un nouveau langage fonctionnel : Scala.
Spark SQL est un module de Spark qui permet de travailler sur de la donnée structurée. C’est donc au sein de ce module qu’a été développé le Spark DataFrame.
Spark SQL possède une documentation en une seule page assez riche, à la fois en exemples et en explications. Contrairement à ce que vous pouvez trouver sur internet, cette documentation est le seul document perpétuellement à jour avec la dernière version de Spark.

Cet article n’est qu’une introduction aux notions principales de Pyspark. Nos formations contiennent un module entier sur l’apprentissage de cet outil essentiel pour la manipulation des données massives. Si vous désirez maîtriser cet outils, laissez vous tenter par une de nos formations en data science