PySpark sur Azure Databricks
Azure Databricks repose sur Apache Spark, un moteur d’analytique unifié pour le Big Data et le Machine Learning. PySpark vous aide à vous interfacer avec Apache Spark en utilisant le langage de programmation Python, qui est un langage flexible, facile à apprendre, à mettre en œuvre et à maintenir. Il fournit également de nombreuses options pour la visualisation des données dans Databricks. PySpark combine la puissance de Python et d’Apache Spark.
Cet article fournit une vue d’ensemble des principes fondamentaux de PySpark sur Databricks.
Présentation des concepts Spark
Il est important de comprendre les concepts clés d’Apache Spark avant de plonger dans l’utilisation de PySpark.
DataFrames
Les DataFrames sont les objets principaux dans Apache Spark. Un DataFrame est un jeu de données organisé en colonnes nommées. Vous pouvez considérer un DataFrame comme une feuille de calcul ou une table SQL, une structure de données étiquetée à deux dimensions d’une série d’enregistrements (similaire aux lignes d’une table) et des colonnes de différents types. Les DataFrames fournissent un ensemble complet de fonctions (par exemple, sélectionner des colonnes, filtrer, joindre et agréger) qui vous permettent d’effectuer efficacement des tâches courantes de manipulation et d’analyse des données.
Voici quelques éléments importants de DataFrame :
- Schéma : un schéma définit les noms et types de colonnes d’un DataFrame. Les formats de données ont une sémantique différente pour la définition de schéma et l’application. Certaines sources de données fournissent des informations de schéma, tandis que d’autres s’appuient sur la définition manuelle du schéma ou autorisent l’inférence de schéma. Les utilisateurs peuvent définir manuellement des schémas ou des schémas peuvent être lus à partir d’une source de données.
- Lignes : Spark représente des enregistrements dans un DataFrame en tant qu’objets
Row
. Bien que les formats de données sous-jacents tels que Delta Lake utilisent des colonnes pour stocker des données, pour optimiser les caches Spark et les données aléatoires à l’aide de lignes. - Colonnes : les colonnes dans Spark sont similaires aux colonnes d’une feuille de calcul et peuvent représenter un type simple tel qu’une chaîne ou un entier, mais également des types complexes tels que tableau, carte ou null. Vous pouvez écrire des requêtes qui sélectionnent, manipulent ou suppriment des colonnes d’une source de données. Les sources de données possibles incluent des tables, des vues, des fichiers ou d’autres DataFrames. Les colonnes ne sont jamais supprimées d’un jeu de données ou d’un DataFrame, elles sont simplement omises des résultats par le biais de transformations
.drop
ou d’omissions dans des instructionsselect
.
Traitement des données
Apache Spark utilise l’évaluation différée pour traiter les transformations et les actions définies avec des DataFrames. Ces concepts sont fondamentaux pour comprendre le traitement des données avec Spark.
Transformations : dans Spark, vous exprimez la logique de traitement en tant que transformations, qui sont des instructions pour le chargement et la manipulation de données à l’aide de DataFrames. Les transformations courantes incluent la lecture de données, de jointures, d’agrégations et de cast de types. Pour plus d’informations sur les transformations dans Azure Databricks, consultez Transform data.
Évaluation différée : Spark optimise le traitement des données en identifiant le plan physique le plus efficace pour évaluer la logique spécifiée par les transformations. Toutefois, Spark n’agit pas sur les transformations tant que les actions ne sont pas appelées. Au lieu d’évaluer chaque transformation dans l’ordre exact spécifié, Spark attend qu’une action déclenche le calcul sur toutes les transformations. L'évaluation différée permet également d'enchaîner plusieurs opérations car Spark gère leur exécution de manière différée, plutôt que de les exécuter immédiatement lorsqu'elles sont définies.
Remarque
L’évaluation différée signifie que les DataFrames stockent des requêtes logiques en tant qu’ensemble d’instructions sur une source de données plutôt qu’un résultat en mémoire. Cela varie considérablement de l’exécution impatiente, qui est le modèle utilisé par les pandas DataFrames.
Actions : les actions indiquent à Spark de calculer un résultat à partir d’une série de transformations sur un ou plusieurs DataFrames. Les opérations d’action retournent une valeur et peuvent être l’une des opérations suivantes :
- Actions pour générer des données dans la console ou votre éditeur, telles que
display
oushow
- Actions pour collecter des données (retourne des objets
Row
), telles quetake(n)
etfirst
ouhead
- Actions à écrire dans des sources de données, telles que
saveAsTable
- Agrégations qui déclenchent un calcul, par exemple
count
Important
Dans les pipelines de données de production, l’écriture de données est généralement la seule action qui doit être présente. Toutes les autres actions interrompent l’optimisation des requêtes et peuvent entraîner des goulots d’étranglement.
Qu’est-ce que cela signifie que les DataFrames sont immuables ?
Les DataFrames sont une collection de transformations et d’actions définies sur une ou plusieurs sources de données, mais finalement Apache Spark résout les requêtes vers les sources de données d’origine, de sorte que les données elles-mêmes ne sont pas modifiées et aucune trame de données n’est modifiée. En d’autres termes, les DataFrames sont immuables. En raison de cela, après avoir effectué des transformations, un nouveau DataFrame est retourné qui doit être enregistré dans une variable afin de l’accéder aux opérations suivantes. Si vous souhaitez évaluer une étape intermédiaire de votre transformation, appelez une action.
API et bibliothèques
Comme toutes les API pour Spark, PySpark est équipé de nombreuses API et bibliothèques qui permettent et supportent des fonctionnalités puissantes, y compris :
- Traitement de données structurées avec des requêtes relationnelles avec Spark SQL et DataFrames. Spark SQL vous permet de mélanger des requêtes SQL avec des programmes Spark. Avec Spark DataFrames, vous pouvez lire, écrire, transformer et analyser efficacement les données à l'aide de Python et de SQL, ce qui signifie que vous tirez toujours parti de toute la puissance de Spark. Consultez Prise en main de PySpark.
- Traitement évolutif des flux avec Diffusion en continu structurée. Vous pouvez exprimer votre calcul en continu de la même manière que vous exprimeriez un calcul par lots sur des données statiques et le moteur Spark SQL l'exécute de manière incrémentielle et continue au fur et à mesure de l'arrivée des données en continu. Consultez Vue d’ensemble de Structured Streaming.
- Structures de données Pandas et outils d’analyse des données qui fonctionnent sur Apache Spark avec l’API Pandas sur Spark. L'API Pandas sur Spark vous permet de faire évoluer votre charge de travail pandas à n'importe quelle taille en l'exécutant de manière distribuée sur plusieurs nœuds, avec une base de code unique qui fonctionne avec pandas (tests, petits ensembles de données) et avec Spark (production, ensembles de données distribués). Consultez Vue d’ensemble de l’API Pandas sur Spark.
- Algorithmes d’apprentissage automatique avec Machine Learning (MLLib). MLlib est une bibliothèque d'apprentissage automatique évolutive basée sur Spark qui fournit un ensemble uniforme d'API permettant aux utilisateurs de créer et d'optimiser des pipelines d'apprentissage automatique pratiques. Consultez Vue d’ensemble de la bibliothèque Azure Machine Learning.
- Graphiques et calculs parallèles au graphique avec GraphX. GraphX introduit un nouveau multigraphe dirigé avec des propriétés attachées à chaque sommet et à chaque arête, et expose des opérateurs de calcul de graphes, des algorithmes et des constructeurs pour simplifier les tâches d'analyse de graphes. Consultez Vue d’ensemble de GraphX.
Tutoriels Spark
Pour obtenir des exemples d’utilisation de PySpark sur Databricks, consultez les articles suivants :
La documentation Apache Spark contient également des guides de démarrage rapide et des guides pour apprendre Spark, notamment les éléments suivants :
- Démarrage rapide de PySpark DataFrames
- Prise en main de Spark SQL
- Guide de programmation de Structured Streaming
- Démarrage rapide de l’API Pandas sur Spark
- Guide de la bibliothèque de Machine Learning
Informations de référence sur PySpark
Azure Databricks gère sa propre version des API PySpark et des références correspondantes, qui peuvent être trouvées dans ces sections :