PandasでDatabricks を使用できますか?
Databricks Runtime には、標準の Python パッケージの 1 つとして pandas が含まれており、Databricks ノートブックとジョブでpandas データフレーム を作成して活用できます。
Databricks Runtime 10.4 LTS 以降では、Pandas API on SparkがPySparkデータフレーム上で馴染みのあるpandasコマンドを提供します。データフレームを Pandas と PySparkの間で変換することもできます。
Apache Sparkには、Pandas 関数API の形で PythonロジックのArrow最適化実行が含まれており、ユーザーはPandasの 変換ロジックを直接PySparkデータフレーム に適用できます。Apache Sparkでは、Pythonで定義されている任意のユーザー関数に対して同様のArrow 最適化を使用するPandas UDF もサポートしています。
PandasはDatabricksのどこにデータを保存しますか?
pandas を使用して、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")
DBFS に書き込まれたファイルは、次の例のように %fs
マジック コマンドで探索できます。 /dbfs
ディレクトリは、これらのコマンドのルート パスであることに注意してください。
%fs ls
相対パスに保存する場合、ファイルの場所はコードを実行する場所によって異なります。 Databricks ノートブックを使用している場合、データ ファイルはクラスターのドライバーに接続されているボリューム ストレージに保存されます。この場所に格納されたデータは、クラスターが終了すると完全に削除されます。 任意のファイルのサポートが有効になっている Databricks Git フォルダー を使用している場合、データは現在のプロジェクトのルートに保存されます。 どちらの場合も、 %sh
magicコマンドを使用して書かれたファイルを探索することができ、次の例のように、現在のルートディレクトリを基準にして単純なbash操作を行うことができます。
%sh ls
Databricks でさまざまなファイルを保存する方法の詳細については、「Databricksでのファイルの操作」を参照してください。
Pandas上のDatabricks でデータをどのようにロードしますか?
Databricks には、探索のためにワークスペースにデータをアップロードしやすくするためのオプションが多数用意されています。 pandas を使用してデータを読み込むための推奨される方法は、ワークスペースにデータを読み込む方法によって異なります。
ローカル コンピューター上にノートブックと共に小さなデータ ファイルが保存されている場合は、 データとコードを Git フォルダーと共にアップロードできます。 その後、相対パスを使用してデータファイルをロードできます。
Databricks では、さまざまなUI ベースのデータロードオプションが用意されています。 これらのオプションのほとんどは、データを Delta テーブルとして格納します。 DeltaテーブルをSparkデータフレームに読み取ってから、Pandasデータフレームに変換できます。
DBFS または相対パスを使用してデータ ファイルを保存した場合は、DBFS または相対パスを使用して、それらのデータ ファイルを再ロードできます。 次のコードはその一例です。
import pandas as pd
df = pd.read_csv("./relative_path_test.csv")
df = pd.read_csv("/dbfs/dbfs_test.csv")
Pandasと完全修飾 URL を使用して、Google Cloud Storage から直接データをロードできます。クラウドデータにアクセスするには、クラウド資格情報を提供する必要があります。
df = pd.read_csv(
f"gs://{bucket_name}/{file_path}",
storage_options={
"token": credentials
}
)