Können Sie Pandas in Azure Databricks verwenden?

Databricks Runtime umfasst Pandas als eines der Python-Standardpakete, mit dem Sie Pandas-DataFrames in Databricks-Notebooks und -Aufträgen erstellen und nutzen können.

In Databricks Runtime 10.4 LTS und höher stellt die Pandas-API in Spark neben PySpark-DataFrames auch bekannte Pandas-Befehle bereit. Sie können auch DataFrames zwischen Pandas und PySpark konvertieren.

Apache Spark umfasst die für Arrow optimierte Ausführung von Python-Logik in Form von Pandas-Funktions-APIs, mit denen Benutzer Pandas-Transformationen direkt auf PySpark-DataFrames anwenden können. Apache Spark unterstützt auch Pandas-UDFs, die ähnliche Arrow-Optimierungen für beliebige, in Python definierte Benutzerfunktionen verwenden.

Wo speichert Pandas Daten in Azure Databricks?

Sie können Pandas verwenden, um Daten an vielen verschiedenen Speicherorten in Azure Databricks zu speichern. Die Fähigkeit, Daten an einigen Speicherorten speichern und von dort laden zu können, hängt von den von Arbeitsbereichsadministratoren festgelegten Konfigurationen ab.

Hinweis

Databricks empfiehlt das Speichern von Produktionsdaten im Cloudobjektspeicher. Siehe Herstellen einer Verbindung mit Azure Data Lake Storage und Blob Storage.

Wenn Sie sich in einem Arbeitsbereich mit aktiviertem Unity-Katalog befinden, können Sie auf Cloud-Speicher mit externen Speicherorten zugreifen. Siehe Übersicht über externe Speicherorte.

Für schnelle Erkundung und Daten ohne sensible Informationen können Sie Daten über Unity-Catalog-Volumes oder relative Pfade speichern, wie in den folgenden Beispielen.

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.

Du kannst Dateien, die auf ein Volume geschrieben wurden, mit dem %fs Magic-Befehl untersuchen:

%fs ls /Volumes/my_catalog/my_schema/my_volume

Hinweis

Wenn du Compute-Ressourcen verwendest, die weiterhin DBFS unterstützen, beachte, dass pandas Pfade im POSIX-Stil verwendet, wie z. B. /dbfs/..., und dbfs:/...-Pfade nicht direkt lesen kann. Um eine DBFS-Datei mit pandas in Compute-Umgebungen zu lesen, die DBFS FUSE unterstützen, ersetzen Sie das Schema dbfs:/ durch /dbfs/.

Wenn Sie in einem relativen Pfad speichern, hängt der Speicherort Ihrer Datei davon ab, wo Sie Ihren Code ausführen. Wenn Sie ein Databricks-Notizbuch verwenden, wird Ihre Datendatei im Volumespeicher gespeichert, der dem Treiber Ihres Clusters zugeordnet ist. An diesem Speicherort gespeicherte Daten werden dauerhaft gelöscht, wenn der Cluster beendet wird. Wenn Sie Databricks Git-Ordner mit aktivierter beliebiger Dateiunterstützung verwenden, werden Ihre Daten im Stammverzeichnis Ihres aktuellen Projekts gespeichert. In beiden Fällen können Sie die geschriebenen Dateien mit dem Magic-Befehl %sh untersuchen, der einfache Bash-Vorgänge relativ zu Ihrem aktuellen Stammverzeichnis erlaubt, wie im folgenden Beispiel gezeigt:

%sh ls

Weitere Informationen zu den Speichervorgängen in Azure Databricks für verschiedene Dateien finden Sie unter Arbeiten mit Dateien in Azure Databricks.

Wie laden Sie Daten mit Pandas in Azure Databricks?

Azure Databricks bietet eine Reihe von Optionen, um das Hochladen von Daten in den Arbeitsbereich zum Untersuchen zu vereinfachen. Die bevorzugte Methode zum Laden von Daten mit Pandas hängt davon ab, wie Sie Ihre Daten in den Arbeitsbereich laden.

Wenn Sie kleine Datendateien zusammen mit Notebooks auf Ihrem lokalen Computer gespeichert haben, können Sie Ihre Daten und Ihren Code zusammen mit Git-Ordnern hochladen. Sie können dann relative Pfade zum Laden von Datendateien verwenden.

Azure Databricks bietet umfangreiche benutzeroberflächenbasierte Optionen für das Laden von Daten. Bei den meisten dieser Optionen werden Ihre Daten als Delta-Tabellen gespeichert. Sie können eine Delta-Tabelle in einen Spark-DataFrame lesen und dann in einen Pandas-DataFrame konvertieren.

Wenn du gespeicherte Datendateien mit Unity-Katalog-Volumes oder verwandten Pfaden hast, kannst du diese Dateien vom selben Ort neu laden. Der folgende Code gibt ein Beispiel:

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.

Sie können Daten direkt aus Azure Data Lake Storage mithilfe von Pandas und einer vollqualifizierten URL laden. Sie müssen Cloudanmeldeinformationen angeben, um auf Clouddaten zugreifen zu können. Die Python-Pakete fsspec und adlfs müssen ebenfalls installiert werden.

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