Vous pouvez explorer de manière interactive les DataFrames PySpark dans les notebooks Jupyter, y compris Google Cloud Data Agent Kit (DAK), en utilisant le package Python google-colabsqlviz avec Managed Service pour Apache Spark. Basé sur anywidget et optimisé par le moteur de création de graphiques Data Studio, google-colabsqlviz affiche une visualisation interactive dans la sortie de cellule de votre notebook sans code de traçage.
Lorsque vous transmettez un DataFrame à google-colabsqlviz, vous pouvez basculer entre les vues de graphique et de tableau de données, configurer des dimensions et des métriques, appliquer des agrégations, trier ou filtrer les données de manière interactive, et exporter les données de graphique filtrées ou agrégées vers un nouveau DataFrame :
- Compatibilité avec les DataFrame multimoteurs : visualisez les objets
pyspark.sql.DataFrame(y compris les DataFrames Spark Connect),bigframes.pandas.DataFrameetpandas.DataFrameà l'aide d'une seule API. - Exécution dans le noyau et distribuée : bien que le widget charge l'interface utilisateur de création de graphiques Data Studio à partir du CDN de Google, vos données sous-jacentes ne sont pas envoyées à Data Studio. Toutes les agrégations et tous les filtres s'exécutent dans votre noyau Python ou votre session Managed Service pour Apache Spark, et les graphiques s'affichent localement dans votre client de notebook.
- Aucun conflit d'environnement : les moteurs distribués facultatifs tels que
pysparketbigframessont détectés au moment de l'exécution et ne sont pas mis à niveau ni écrasés lorsque vous installezgoogle-colabsqlviz.
Avant de commencer
Le rendu des DataFrames PySpark sur Spark Connect avec google-colabsqlviz est compatible avec les sessions interactives Managed Service pour Apache Spark avec la version d'exécution sans serveur 3.0 ou ultérieure.
Suivez ces instructions pour créer un notebook dans Visual Studio Code (VS Code) avec Data Agent Kit, ou utilisez un autre environnement de notebook Jupyter compatible, tel que JupyterLab :
- Configurez le Data Agent Kit (DAK) :
- Créez un notebook :
- Dans la barre d'activité de VS Code, cliquez sur Data Agent Kit, développez Apache Spark, puis sélectionnez + Nouveau notebook Spark.
- Pour Sélectionner le type de noyau, cliquez sur Noyau local.
- Pour sélectionner un modèle d'exécution sans serveur, cliquez sur le nom d'un modèle d'exécution listé.
- Dans la barre d'outils du notebook, cliquez sur Sélectionner le noyau, puis sur Environnements Python…, et choisissez votre environnement Python local.
Pour installer les packages Python Spark Connect et
google-colabsqlvizrequis dans votre environnement local, exécutez la commande suivante dans une cellule de notebook ou un terminal local :Cellule de notebook
%pip install -U 'google-cloud-spark-connect[interactive,client]'Terminal local
pip install -U 'google-cloud-spark-connect[interactive,client]'
Charger et visualiser un ensemble de données
Après avoir démarré un ManagedSparkSession et chargé un ensemble de données dans un pyspark.sql.DataFrame, transmettez le DataFrame à la fonction explore_dataframe pour afficher la visualisation interactive. L'exemple suivant se connecte à une session sans serveur et charge l'ensemble de données Palmer Penguins (`lakehouse-public-data`.ml_datasets.penguins) à partir des ensembles de données publics Lakehouse :
# Importing managed_spark_connect automatically imports explore_dataframe
from google.cloud.managed_spark_connect import ManagedSparkSession
spark = (
ManagedSparkSession.builder.projectId("PROJECT_ID")
.location("REGION")
.getOrCreate()
)
df = spark.read.table("`lakehouse-public-data`.ml_datasets.penguins")
explore_dataframe(df)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .REGION: région Managed Service pour Apache Spark de votre session (par exemple,us-central1).
Lorsque vous exécutez la cellule, google-colabsqlviz inspecte le schéma du DataFrame et affiche un widget de visualisation interactif dans la zone de sortie de la cellule avec une visualisation par défaut. Pour l'ensemble de données penguins, il affiche un graphique à nuage de points de la moyenne de flipper_length_mm et body_mass_g avec species comme critère de regroupement.
Dans la barre d'outils du widget, cliquez sur Données pour inspecter les lignes du DataFrame sous-jacent dans un tableau paginé. Sélectionnez Mode fractionné pour afficher le graphique et le tableau de données sous-jacent ensemble. Cliquez sur Graphique pour revenir à la vue graphique.
Explorer et personnaliser des graphiques
Vous pouvez personnaliser les types de graphiques, les dimensions, les métriques, les agrégations, le tri et les filtres dans l'interface du widget, puis exporter les données obtenues vers un DataFrame dans votre notebook.
- Sélectionnez un type de graphique : dans le panneau des paramètres de configuration, cliquez sur le menu du type de graphique et sélectionnez un type de graphique, par exemple Graphique à barres verticales. Pour obtenir la liste complète des types de graphiques compatibles, consultez Types de graphiques dans Data Studio.
- Configurer les dimensions et les métriques : dans l'onglet Configuration, configurez les champs du DataFrame
penguins:- Laissez Dimension défini sur
speciespour regrouper les enregistrements par espèce de manchot. - Sous Métrique - Axe Y, définissez la métrique sur
body_mass_gavec l'agrégation définie sur AVG (Moyenne) pour calculer la masse corporelle moyenne en grammes pour chaque espèce. - Cliquez sur Ajouter une dimension et sélectionnez
islandousexpour répartir le graphique sur plusieurs dimensions, ou remplacez l'agrégation de métriques AVG par MAX ou SUM.
- Laissez Dimension défini sur
- Trier et filtrer la visualisation :
- Dans l'onglet Configuration, sous Trier, sélectionnez
body_mass_gavec l'agrégation AVG, puis sélectionnez Décroissant pour classer les espèces par masse corporelle moyenne la plus élevée. - Cliquez sur Ajouter un filtre dans la barre d'outils du widget pour filtrer les enregistrements par valeurs de champ (par exemple,
body_mass_gsupérieur ou égal à4000), ou cliquez sur Créer un DataFrame de sortie en bas du widget pour exporter les données de graphique agrégées ou les données filtrées vers une nouvelle cellule DataFrame. Lorsque vous mettez à jour une propriété ou un filtre de graphique,google-colabsqlvizrecalcule la requête sur votre DataFrame et met à jour la visualisation :
- Dans l'onglet Configuration, sous Trier, sélectionnez
Pour en savoir plus sur la configuration des propriétés des graphiques, des agrégations et des commandes interactives dans l'interface de création de graphiques intégrée, consultez la documentation suivante :
- Types de graphiques dans Data Studio
- Explorer vos données dans Data Studio
- Utiliser des cellules de visualisation dans Colab Enterprise
Configurer l'exécution pour les grands DataFrames
Lorsque vous transmettez un pyspark.sql.DataFrame à explore_dataframe(df), google-colabsqlviz choisit entre deux stratégies d'exécution en fonction de la taille du DataFrame :
- Matérialisation en mémoire (par défaut pour les DataFrames plus petits) : si le DataFrame est estimé à
256 MiBou moins et contient au maximum 5 000 000 de lignes,google-colabsqlvizcollecte le DataFrame dans la mémoire du noyau une fois. Les modifications ultérieures du type de graphique, les agrégations, le tri et le filtrage s'exécutent en mémoire avec une latence minimale et ne déclenchent pas de nouveaux jobs Spark. - Pushdown Spark distribué (par défaut pour les DataFrames plus volumineux) : si le DataFrame dépasse le budget d'octets ou de lignes,
google-colabsqlvizconserve le DataFrame en mode différé et traduit chaque requête de graphique, filtre, tri et pagination en une opération PySpark exécutée sur votre session sans serveur Managed Service pour Apache Spark. Cette approche peut ajouter une latence supplémentaire, mais vous permet de visualiser des DataFrames beaucoup plus volumineux.
Vous pouvez ajuster ou désactiver le seuil de matérialisation en mémoire en définissant la variable d'environnement COLABSQLVIZ_PYSPARK_EAGER_MAX_BYTES avant d'appeler explore_dataframe(df) :
import os
# Importing managed_spark_connect automatically imports explore_dataframe
from google.cloud.managed_spark_connect import ManagedSparkSession
# Set to "0" to disable upfront collection and push all chart queries to Spark,
# or set a custom byte limit, such as str(64 * 1024 * 1024) for 64 MiB.
os.environ["COLABSQLVIZ_PYSPARK_EAGER_MAX_BYTES"] = "0"
explore_dataframe(df)
Étapes suivantes
- Découvrez les types de graphiques dans Data Studio.
- Découvrez comment transformer des données avec Data Agent Kit.
- Découvrez comment utiliser le client Spark Connect sans serveur.
- Découvrez comment utiliser JupyterLab et VS Code pour les sessions sans serveur.