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

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

Databricks Runtime10.4LTS 以降では、Pandas API on Sparkは使い慣れた Pandas コマンドをPySpark DataFrame 上で提供します。pandas と PySpark の間で DataFrames を変換する こともできます。

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

pandas は Databricksのデータをどこに保存しますか?

pandas を使用して、Databricks のさまざまな場所にデータを格納できます。 一部の場所からデータを格納および読み込む機能は、ワークスペース管理者が設定した構成によって異なります。

Databricks では、本番運用データをクラウドオブジェクトストレージに格納することを推奨しています。 「 Amazon S3 への接続」を参照してください。

Unity Catalog対応のワークスペースにいる場合は、外部ロケーションにあるクラウドストレージにアクセスできます。 「外部ロケーションを作成してクラウド ストレージを Databricks に接続する」を参照してください。

機密情報のないデータをすばやく探索するには、次の例に示すように、相対パスまたは 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

Databricks がさまざまなファイルを格納する方法の詳細については、「 Databricks でのファイルの操作」を参照してください。

Databricks で pandas を使用してデータをロードするにはどうすればよいですか?

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

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

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

DBFS または相対パスを使用してデータ ファイルを保存した場合は、DBFS または相対パスを使用してそれらのデータ ファイルを再読み込みできます。 次のコードに例を示します。

import pandas as pd

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

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

df = pd.read_csv(
  f"s3://{bucket_name}/{file_path}",
  storage_options={
    "key": aws_access_key_id,
    "secret": aws_secret_access_key,
    "token": aws_session_token
  }
)