È possibile usare Pandas in Azure Databricks?

Databricks Runtime include Pandas come uno dei pacchetti Python standard, consentendo di creare e sfruttare i dataframe Pandas nei notebook e nei processi di Databricks.

In Databricks Runtime 10.4 e versioni successive l'API Pandas in Spark offre comandi Pandas familiari oltre ai dataframe PySpark. È anche possibile convertire i dataframe tra Pandas e PySpark.

Apache Spark include l'esecuzione ottimizzata per arrow della logica Python sotto forma di API per le funzioni pandas, che consentono agli utenti di applicare trasformazioni pandas direttamente ai dataframe PySpark. Apache Spark supporta anche le funzioni definite dall'utente pandas, che utilizzano ottimizzazioni Arrow simili per le funzioni utente arbitrarie definite in Python.

Dove vengono archiviati i dati da pandas su Azure Databricks?

È possibile usare pandas per archiviare i dati in molte posizioni diverse in Azure Databricks. La possibilità di archiviare e caricare dati da alcune posizioni dipende dalle configurazioni impostate dagli amministratori dell'area di lavoro.

Nota

Databricks consiglia di archiviare i dati di produzione nell'archiviazione di oggetti cloud. Consultare Connettersi ad Azure Data Lake Storage e gestione rete virtuale di Azure.

Se ti trovi in un'area di lavoro con Unity Catalog abilitato, è possibile accedere all'archiviazione cloud tramite posizioni esterne. Vedere Panoramica delle posizioni esterne.

Per un'esplorazione rapida e dati senza informazioni sensibili, puoi salvare i dati utilizzando volumi del Catalogo Unity o percorsi relativi, come nei seguenti esempi.

import pandas as pd

df = pd.DataFrame([["a", 1], ["b", 2], ["c", 3]])

df.to_csv("/Volumes/my_catalog/my_schema/my_volume/volume_test.csv")
df.to_csv("./relative_path_test.csv")
df.to_csv("/dbfs/tmp/dbfs_test.csv") # DBFS is deprecated.

Puoi esplorare i file scritti su un volume con il %fs comando magico:

%fs ls /Volumes/my_catalog/my_schema/my_volume

Nota

Se utilizzi risorse di calcolo che supportano ancora DBFS, tieni presente che pandas utilizza percorsi in stile POSIX, come /dbfs/..., e non può leggere direttamente i percorsi dbfs:/.... Per leggere un file DBFS con pandas in un ambiente di calcolo che supporta DBFS FUSE, sostituisci lo schema dbfs:/ con /dbfs/.

Quando si salva in un percorso relativo, la posizione del file dipende da dove si esegue il codice. Se si usa un notebook di Databricks, il file di dati viene salvato nell'archiviazione su volume collegata al driver del tuo cluster. I dati archiviati in questa posizione vengono eliminati definitivamente al termine del cluster. Se si usano cartelle Git di Databricks con supporto di file arbitrari abilitato, i dati vengono salvati nella radice del progetto corrente. In entrambi i casi, è possibile esplorare i file scritti usando il comando magic %sh, che consente semplici operazioni bash relative alla directory radice corrente, come nel seguente esempio:

%sh ls

Per altre informazioni su come Azure Databricks archivia vari file, vedere Usare file in Azure Databricks.

Come si caricano i dati con pandas su Azure Databricks?

Azure Databricks offre diverse opzioni per facilitare il caricamento dei dati nell'area di lavoro per l'esplorazione. Il metodo preferito per caricare i dati con pandas varia a seconda della modalità di caricamento dei dati nell'area di lavoro.

Se hai piccoli file di dati archiviati nelle vicinanze dei notebook sul tuo computer locale, puoi caricare i tuoi dati e codice insieme alle cartelle Git. È quindi possibile usare percorsi relativi per caricare i file di dati.

Azure Databricks offre opzioni complete basate sull'interfaccia utente per il caricamento dei dati. La maggior parte di queste opzioni archivia i dati come tabelle Delta. È possibile leggere una tabella Delta in un dataframe Spark e quindi convertirla in un dataframe pandas.

Se hai file dati salvati usando volumi del catalogo Unity o percorsi relativi, puoi ricaricare quei file dalla stessa posizione. Nel codice seguente ne viene illustrato un esempio:

import pandas as pd

df = pd.read_csv("/Volumes/my_catalog/my_schema/my_volume/volume_test.csv")
df = pd.read_csv("./relative_path_test.csv")
df = pd.read_csv("/dbfs/tmp/dbfs_test.csv") # DBFS is deprecated.

È possibile caricare i dati direttamente da Azure Data Lake Storage usando pandas e un URL completo. È necessario fornire le credenziali cloud per accedere ai dati cloud. I pacchetti Python fsspec e adlfs devono essere installati anche.

df = pd.read_csv(
  f"abfss://{container}@{storage_account}.dfs.core.windows.net/{file_path}",
  storage_options={
    "sas_token": sas_token_value
  }
)