Azure Databricks で pandas を使用できますか?

Databricks Runtime には、標準の Python パッケージの 1 つとして pandas が含まれており、Databricks ノートブックとジョブで pandas DataFrames を作成して活用できます。

Databricks Runtime 10.4 LTS 以降では、Spark の Pandas API によって PySpark DataFrames の上に使い慣れた pandas コマンドが提供されます。 pandas と PySpark の間で DataFrames を変換することもできます。

Apache Spark には、pandas 関数 API の形式で Python ロジックの Arrow 最適化実行が含まれており、ユーザーは pandas 変換を PySpark DataFrame に直接適用できます。 Apache Spark では、Python で定義されている任意のユーザー関数に対して同様の Arrow 最適化を使用する pandas UDF もサポートされています。

pandas では Azure Databricks のどこにデータが保存されますか?

pandas を使用すると、Azure Databricks のさまざまな場所にデータを保存できます。 一部の場所からデータの保存と読み込みができるかは、ワークスペース管理者によって設定された構成によって異なります。

注意

Databricks では、運用データをクラウド オブジェクト ストレージに保存することを推奨しています。 「Google Cloud Storage に接続する」を参照してください。

機密情報を含まないデータの迅速な探索のために、次の例のように、相対パスまたは DBFS を使用してデータを安全に保存できます。

import pandas as pd

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

df.to_csv("./relative_path_test.csv")
df.to_csv("/dbfs/dbfs_test.csv")

次の例のように、%fs マジック コマンドを使用して DBFS に書き込まれたファイルを調べることができます。 /dbfs ディレクトリは、これらのコマンドのルート パスであることに注意してください。

%fs ls

相対パスに保存する場合、ファイルの場所はコードの実行場所によって異なります。 Databricks ノートブックを使用している場合、データ ファイルはクラスターのドライバーに接続されているボリューム ストレージに保存されます。 この場所に保存されているデータは、クラスターが終了すると完全に削除されます。 任意のファイル サポートが有効になっている Databricks Git フォルダーを使用している場合、データは現在のプロジェクトのルートに保存されます。 どちらの場合も、%sh マジック コマンドを使用して書き込まれたファイルを調べることができます。これにより、次の例のように、現在のルート ディレクトリに対する単純な bash 操作が可能になります。

%sh ls

Azure Databricks でさまざまなファイルがどのように保存されるかについての詳細は、「Azure Databricks 上のファイルを操作する」を参照してください。

Azure Databricks で pandas を使用してデータを読み込む方法

Azure Databricks には、探索のためにワークスペースへのデータのアップロードを容易にするさまざまなオプションが用意されています。 pandas を使用してデータを読み込むための推奨される方法は、ワークスペースにデータを読み込む方法によって異なります。

お使いのローカル コンピューターにノートブックと共に保存されている小さなデータ ファイルがある場合は、Git フォルダーと共にデータとコードをアップロードできます。 その後、相対パスを使用してデータ ファイルを読み込むことができます。

Azure Databricks には、データ読み込み用の広範な UI ベースのオプションが用意されています。 これらのオプションのほとんどは、データを Delta テーブルとして保存します。 Spark DataFrame に Delta テーブルを読み取ってから、それを pandas DataFrame に変換できます。

DBFS または相対パスを使用してデータ ファイルを保存した場合は、DBFS または相対パスを使用して、これらのデータ ファイルを再度読み込めます。 コードの例は次のとおりです。

import pandas as pd

df = pd.read_csv("./relative_path_test.csv")
df = pd.read_csv("/dbfs/dbfs_test.csv")

Databricks では、運用データをクラウド オブジェクト ストレージに保存することを推奨しています。 「Azure Data Lake Storage Gen2 と Blob Storage に接続する」を参照してください。

Unity Catalog 対応ワークスペースを使用している場合は、外部の場所でクラウド ストレージにアクセスできます。 「クラウド ストレージを Azure Databricks に接続するための外部の場所を作成する」を参照してください。

pandas と完全修飾 URL を使用して、Azure Data Lake Storage Gen2 から直接データを読み込むことができます。 クラウド データにアクセスするには、クラウド資格情報を指定する必要があります。

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