Visualizza i DataFrame Spark nei notebook

Puoi esplorare in modo interattivo i DataFrame PySpark nei notebook Jupyter, incluso il Google Cloud Data Agent Kit (DAK), utilizzando il pacchetto Python google-colabsqlviz con Managed Service for Apache Spark. Basato su anywidget e sul motore di creazione di grafici di Data Studio, google-colabsqlviz esegue il rendering di una visualizzazione interattiva all'interno dell'output della cella del notebook senza codice di tracciamento.

Quando passi un DataFrame a google-colabsqlviz, puoi passare dalla visualizzazione del grafico a quella della tabella dati, configurare dimensioni e metriche, applicare aggregazioni, ordinare o filtrare i dati in modo interattivo ed esportare i dati del grafico filtrati o aggregati in un nuovo DataFrame:

  • Supporto di DataFrame multi-motore: visualizza gli oggetti pyspark.sql.DataFrame (inclusi i DataFrame Spark Connect), bigframes.pandas.DataFrame e pandas.DataFrame utilizzando un'unica API.
  • Esecuzione in-kernel e distribuita: anche se il widget carica la UI dei grafici di Data Studio dalla CDN di Google, i dati sottostanti non vengono inviati a Data Studio. Tutte le aggregazioni e i filtri vengono eseguiti nel kernel Python o nella sessione di Managed Service for Apache Spark e i grafici vengono visualizzati localmente nel client del notebook.
  • Zero conflitti di ambiente: i motori distribuiti facoltativi come pyspark e bigframes vengono rilevati in fase di runtime e non vengono aggiornati o sovrascritti quando installi google-colabsqlviz.

Prima di iniziare

Il rendering dei DataFrame PySpark su Spark Connect con google-colabsqlviz è supportato nelle sessioni interattive di Managed Service for Apache Spark con versione del runtime serverless 3.0 o successiva.

Segui queste istruzioni per creare un notebook in Visual Studio Code (VS Code) con Data Agent Kit o utilizza un altro ambiente di notebook Jupyter supportato, come JupyterLab:

  1. Configura il Data Agent Kit (DAK):
    1. Installa l'estensione Data Agent Kit.
    2. Configura Data Agent Kit.
    3. Assicurati di disporre dei ruoli IAM (Identity and Access Management) richiesti.
  2. Crea un notebook:
    1. Nella barra delle attività di VS Code, fai clic su Data Agent Kit, espandi Apache Spark e seleziona + Nuovo notebook Spark.
    2. In Seleziona tipo di kernel, fai clic su Kernel locale.
    3. Per selezionare un template di runtime serverless, fai clic sul nome di un template di runtime elencato.
    4. Nella barra degli strumenti del notebook, fai clic su Seleziona kernel, poi su Ambienti Python… e scegli l'ambiente Python locale.
  3. Per installare i pacchetti Python Spark Connect e google-colabsqlviz richiesti nel tuo ambiente locale, esegui questo comando in una cella del blocco note o in un terminale locale:

    Cella del notebook

    %pip install -U 'google-cloud-spark-connect[interactive,client]'
    

    Terminale locale

    pip install -U 'google-cloud-spark-connect[interactive,client]'
    

Carica e visualizza un set di dati

Dopo aver avviato una ManagedSparkSession e caricato un set di dati in un pyspark.sql.DataFrame, passa il DataFrame alla funzione explore_dataframe per eseguire il rendering della visualizzazione interattiva. L'esempio seguente si connette a una sessione serverless e carica il set di dati Palmer Penguins (`lakehouse-public-data`.ml_datasets.penguins) dai set di dati pubblici di 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)

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • REGION: la regione di Managed Service for Apache Spark per la sessione (ad esempio us-central1).

Quando esegui la cella, google-colabsqlviz ispeziona lo schema del DataFrame e visualizza un widget di visualizzazione interattivo nell'area di output della cella con una visualizzazione predefinita: per il set di dati penguins, visualizza un grafico a dispersione della media di flipper_length_mm e body_mass_g raggruppati per species.

Nella barra degli strumenti del widget, fai clic su Dati per esaminare le righe del DataFrame sottostante in una tabella impaginata. Seleziona Modalità divisa per visualizzare contemporaneamente il grafico e la tabella dei dati sottostante. Fai clic su Grafico per tornare alla visualizzazione del grafico.

Visualizzazione predefinita del grafico a dispersione nel widget di visualizzazione che mostra la lunghezza media delle pinne e la massa corporea per specie di pinguino.

Esplora e personalizza i grafici

Puoi personalizzare i tipi di grafici, le dimensioni, le metriche, le aggregazioni, l'ordinamento e i filtri nell'interfaccia del widget ed esportare i dati risultanti in un DataFrame nel tuo notebook.

  1. Seleziona un tipo di grafico: nel riquadro delle impostazioni di configurazione, fai clic sul menu del tipo di grafico e seleziona un tipo di grafico, ad esempio Grafico a barre verticali. Per un elenco completo dei tipi di grafici supportati, consulta Tipi di grafici in Data Studio.
  2. Configura dimensioni e metriche: nella scheda Configurazione, configura i campi per il DataFrame penguins:
    • Mantieni Dimensione impostata su species per raggruppare i record in base alla specie di pinguino.
    • In Metrica - Asse Y, imposta la metrica su body_mass_g con l'aggregazione impostata su AVG (Media) per calcolare la massa corporea media in grammi per ogni specie.
    • Fai clic su Aggiungi dimensione e seleziona island o sex per suddividere il grafico in più dimensioni o modificare l'aggregazione delle metriche da AVG a MAX o SUM.
  3. Ordina e filtra la visualizzazione:
    • Nella scheda Configurazione, in Ordina, seleziona body_mass_g con l'aggregazione AVG e seleziona Decrescente per classificare le specie in base alla massa corporea media più alta.
    • Fai clic su Aggiungi filtro nella barra degli strumenti del widget per filtrare i record in base ai valori dei campi (ad esempio, body_mass_g maggiore o uguale a 4000) oppure fai clic su Crea dataframe di output nella parte inferiore del widget per esportare i dati del grafico aggregati o i dati filtrati in una nuova cella DataFrame. Quando aggiorni una proprietà o un filtro di un grafico, google-colabsqlviz ricalcola la query sul DataFrame e aggiorna la visualizzazione:

Grafico a barre verticali e riquadro di configurazione nel widget di visualizzazione che mostra la massa corporea media per specie di pinguino ordinata in ordine decrescente.

Per saperne di più sulla configurazione delle proprietà dei grafici, delle aggregazioni e dei controlli interattivi nell'interfaccia di creazione dei grafici incorporata, consulta la seguente documentazione:

Configura l'esecuzione per DataFrame di grandi dimensioni

Quando passi un pyspark.sql.DataFrame a explore_dataframe(df), google-colabsqlviz sceglie tra due strategie di esecuzione in base alle dimensioni del DataFrame:

  • Materializzazione in memoria (impostazione predefinita per i DataFrame più piccoli): se il DataFrame è stimato a 256 MiB o meno e contiene al massimo 5.000.000 di righe, google-colabsqlviz raccoglie il DataFrame nella memoria del kernel una volta. Le successive modifiche al tipo di grafico, le aggregazioni, l'ordinamento e i filtri vengono eseguiti in memoria con una latenza minima e non attivano nuovi job Spark.
  • Pushdown Spark distribuito (impostazione predefinita per DataFrame più grandi): se il DataFrame supera il budget di byte o righe, google-colabsqlviz mantiene il DataFrame lazy e traduce ogni query, filtro, ordinamento e richiesta di impaginazione del grafico in un'operazione PySpark eseguita sulla sessione serverless di Managed Service for Apache Spark. Questo approccio può aggiungere latenza aggiuntiva, ma consente di visualizzare DataFrame molto più grandi.

Puoi regolare o disattivare la soglia di materializzazione in memoria impostando la variabile di ambiente COLABSQLVIZ_PYSPARK_EAGER_MAX_BYTES prima di chiamare 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)

Passaggi successivi