Aller au contenu principal

PySpark sur Databricks

Databricks est construit sur Apache Spark, un moteur de unified analytics pour le Big Data et le Machine Learning. PySpark vous permet d'interfacer avec Apache Spark en utilisant le langage de programmation Python, qui est un langage flexible facile à apprendre, à implémenter et à maintenir. Il offre également de nombreuses options pour la visualisation de données dans Databricks. PySpark combine la puissance de Python et d'Apache Spark.

Cet article fournit un aperçu des fondamentaux de PySpark sur Databricks.

Introduction aux concepts de Spark

Il est important de comprendre les concepts clés d'Apache Spark avant de se plonger dans l'utilisation de PySpark.

DataFrames

Les DataFrames sont les objets principaux dans Apache Spark. Un DataFrame est un dataset 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 bidimensionnelle d'une série d'enregistrements (similaires aux lignes d'une table) et de colonnes de différents types. Les DataFrames offrent un riche ensemble 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 des DataFrame :

  • Schéma : un schéma définit les noms et les types de colonnes d'un DataFrame. Les formats de données ont des sémantiques différentes pour la définition et l'application des schémas. Certaines sources de données fournissent des informations de schéma, tandis que d'autres s'appuient sur une définition de schéma manuelle ou permettent l'inférence de schéma. Les utilisateurs peuvent définir les schémas manuellement ou les schémas peuvent être lus à partir d'une source de données.
  • Lignes : Spark représente les enregistrements dans un DataFrame sous forme d'objets Row. Alors que les formats de données sous-jacents tels que Delta Lake utilisent des colonnes pour stocker les données, pour l'optimisation, Spark met en cache et mélange les données en utilisant des 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 de caractères ou un entier, mais aussi des types complexes comme un tableau, une carte (map) ou null. Vous pouvez écrire des queries qui sélectionnent, manipulent ou suppriment des colonnes d'une source de données. Les sources de données possibles incluent les tables, les vues, les fichiers ou d'autres DataFrames. Les colonnes ne sont jamais supprimées d'un dataset ou d'un DataFrame, elles sont simplement omises des résultats par le biais de .drop transformations ou d'une omission dans les instructions select.

Traitement des données

Apache Spark utilise l'évaluation différée pour traiter les Transformations et les actions définies avec les DataFrames. Ces concepts sont fondamentaux pour comprendre le traitement des données avec Spark.

Transformations : dans Spark, vous exprimez la logique de traitement sous forme de 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 (telles que spark.read et spark.table), les jointures, les agrégations et la conversion de type.

Évaluation paresseuse : 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. Cependant, Spark n'agit pas sur les transformations tant que les actions ne sont pas appelées. Plutôt que d'évaluer chaque transformation dans l'ordre exact spécifié, Spark attend qu'une action ne déclenche le calcul sur toutes les transformations. Ceci est connu sous le nom d'évaluation paresseuse, ou de chargement paresseux, ce qui vous permet 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 paresseuse signifie que les DataFrames stockent les queries logiques comme un ensemble d'instructions contre une source de données plutôt qu'un résultat en mémoire. Ceci diffère drastiquement de l'exécution anticipée, qui est le modèle utilisé par pandas DataFrames.

Actions : les actions indiquent à Spark de compute un résultat à partir d’une série de transformations sur un ou plusieurs DataFrames. Les opérations d'action renvoient une valeur et peuvent être l'une des suivantes :

  • Actions pour exporter des données dans la console ou votre éditeur, telles que display ou show
  • Actions pour collecter des données (Row objets renvoyés), telles que take(n), et first ou head
  • Actions pour écrire dans les sources de données, telles que saveAsTable
  • Agréations qui Trigger un calcul, telles que count
important

Dans les pipelines de données de production, l’écriture de données est généralement la seule action qui devrait être présente. Toutes les autres actions interrompent l'optimisation des query et peuvent entraîner des goulots d'étranglement.

Que signifie le fait que les DataFrames sont immuables ?

Les DataFrames sont un ensemble de Transformations et d'actions qui sont définies par rapport à une ou plusieurs sources de données, mais en fin de compte, Apache Spark résout les queries vers les sources de données d'origine, de sorte que les données elles-mêmes ne sont pas modifiées, et aucun DataFrame n'est modifié. En d'autres termes, les DataFrames sont immuables . De ce fait, après avoir effectué des transformations, un nouveau DataFrame est retourné qui doit être enregistré dans une variable afin d'y accéder dans les opérations ultérieures. Si vous voulez évaluer une étape intermédiaire de votre transformation, appelez une action.

APIs et bibliothèques

Comme toutes les APIs pour Spark, PySpark est doté de nombreuses APIs et bibliothèques qui permettent et prennent en charge des fonctionnalités puissantes, notamment :

  • Traitement des données structurées avec des requêtes relationnelles avec Spark SQL et DataFrames . Spark SQL vous permet de combiner des queries SQL avec des programmes Spark. Avec les Spark DataFrames, vous pouvez lire, écrire, transformer et analyser les données efficacement en utilisant Python et SQL, ce qui signifie que vous exploitez toujours toute la puissance de Spark. Consultez Prise en main de PySpark.
  • Traitement évolutif des Stream avec **Structured Streaming**. Vous pouvez exprimer votre calcul de streaming de la même manière que vous exprimeriez un calcul par batch sur des données statiques, et le moteur Spark SQL l'exécute de manière incrémentielle et continue à mesure que les données de streaming continuent d'arriver. Consultez la vue d'ensemble de Structured Streaming.
  • Structures de données Pandas et outils d’analyse de données fonctionnant sur Apache Spark avec l’API Pandas sur Spark. L’API Pandas sur Spark vous permet de monter en charge votre charge de travail Pandas quelle que soit sa 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, datasets plus petits) et avec Spark (production, datasets distribués). Consultez l’ aperçu de l’API Pandas sur Spark.
  • Algorithmes de Machine Learning avec **Machine Learning Library (MLlib)**. MLlib est une Machine Learning Library (MLlib) évolutive, conçue sur Spark, qui fournit un ensemble uniforme d'APIs afin d'aider les utilisateurs à créer et à ajuster des pipelines de Machine Learning pratiques. Consultez la Machine Learning Library (MLlib).
  • Graphes et calculs parallèles de graphes avec GraphX . GraphX introduit un nouveau multigraphe orienté avec des propriétés attachées à chaque sommet et arête, et expose des opérateurs de calcul de graphes, des algorithmes et des constructeurs pour simplifier les tâches d'analytique de graphes. Consultez la Présentation de GraphX.

Tutoriels Spark

Pour des exemples d'utilisation de PySpark sur Databricks, voir les articles suivants :

La documentation Apache Spark contient également des guides de démarrage rapide et des guides pour apprendre Spark, notamment les suivants :

Référence PySpark

La référence PySpark se trouve dans ces sections :