チュートリアル: サーバレス コンピュートによるコードの実行
この記事は、Databricks Connect 15.4 LTS 以降に適用されます。
この記事では、IDE でプロジェクトを作成し、仮想環境をセットアップし、 Databricks Connect for Pythonをインストールし、 Databricks ワークスペースでサーバレス コンピュートでコードを実行する方法について説明します。
このチュートリアルでは、Python 3.12 と Databricks Connect 16.4 LTS を使用します。Databricks Connect の他のバージョンの Python を使用するには、互換性が必要です。バージョンサポートマトリックスを参照してください。
必要条件
このチュートリアルを完了するには、次の要件を満たす必要があります。
- Python 3.12 がローカルマシンにインストールされています。
- 対象のDatabricksワークスペースでは、Unity Catalogが有効になっている必要があります。
- Visual Studio Code などの IDE がインストールされている。
- ローカル環境とコンピュートが、Databricks Connect for Pythonのインストール バージョンの要件を満たしていること。
- サーバレス コンピュートがワークスペースで有効になっている。 サーバレス コンピュートに接続を参照してください。
- ローカル コンピューターに Databricks CLI がインストールされている。Databricks CLI のインストールまたは更新を参照してください。
手順 1: Databricks 認証を構成する
このチュートリアルでは、Databricks OAuth ユーザー間 (U2M) 認証 と Databricks 構成プロファイル を使用して、Databricks ワークスペースを認証します。
-
Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、ローカルで OAuth トークン管理を開始します。次のコマンドで、
<workspace-url>
を Databricks ワークスペース インスタンスの URL に置き換えます (例:https://dbc-a1b2345c-d6e7.cloud.databricks.com
)。Bashdatabricks auth login --host <workspace-url>
-
Databricks CLI では、入力した情報を Databricks 構成プロファイルとして保存するように求められます。
Enter
を押して、提案されたプロファイル名を受け入れるか、新規または既存のプロファイルの名前を入力します。Databricks では、プロファイル名としてDEFAULT
を使用することをお勧めします。 -
Webブラウザで、画面の指示に従ってDatabricksワークスペースにログインします。
ステップ 2: 新しい Python 仮想環境を作成する
-
プロジェクトフォルダを作成し、IDE で開きます。たとえば、Visual Studio Code のメインメニューで、 ファイル > フォルダを開く > 開く をクリックします
-
プロジェクトフォルダのルートでターミナルウィンドウを開きます。たとえば、Visual Studio Code のメインメニューで、 ターミナル > 表示 をクリックします。
-
ターミナルで次のコマンドを実行して、プロジェクト フォルダーのルートに
venv
というプロジェクトの仮想環境を作成します。Bashpython3.12 -m venv .venv
-
仮想環境をアクティブ化します。
Bash# Linux/Mac
source .venv/bin/activateBash# Windows
.venv\Scripts\activate
手順 3: Databricks Connect をインストールする
Databricks Connect をインストールします。情報 Databricks Connect 16.4の最新リリースバージョンについては、Databricks Runtime 16.4のDatabricks Connectを参照してください。
pip install "databricks-connect==16.4.*"
手順 4: コードを追加して実行する
-
新しい Python ファイル
main.py
をプロジェクトに追加する -
次のコードをファイルに入力し、プレースホルダ
<profile-name>
を手順 1 の構成プロファイルの名前に置き換えて、ファイルを保存します。デフォルトの構成プロファイル名はDEFAULT
です。Pythonfrom databricks.connect import DatabricksSession
spark = DatabricksSession.builder.serverless().profile("<profile-name>").getOrCreate()
df = spark.read.table("samples.nyctaxi.trips")
df.show(5) -
次のコマンドを使用してコードを実行します。
Bashpython3 main.py
テーブルの 5 行が返されます。
Output+--------------------+---------------------+-------------+-----------+---------+-----------+
|tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip|
+--------------------+---------------------+-------------+-----------+----------+-----------+
| 2016-02-16 22:40:45| 2016-02-16 22:59:25| 5.35| 18.5| 10003| 11238|
| 2016-02-05 16:06:44| 2016-02-05 16:26:03| 6.5| 21.5| 10282| 10001|
| 2016-02-08 07:39:25| 2016-02-08 07:44:14| 0.9| 5.5| 10119| 10003|
| 2016-02-29 22:25:33| 2016-02-29 22:38:09| 3.5| 13.5| 10001| 11222|
| 2016-02-03 17:21:02| 2016-02-03 17:23:24| 0.3| 3.5| 10028| 10028|
+--------------------+---------------------+-------------+-----------+----------+-----------+
IDE から Databricks Connect を使用して、Databricks サーバレス コンピュートで最初のクエリを実行することに成功しました。
ステップ 5: コードを本番運用準備完了にする
本番運用シナリオでは、 Spark セッションビルダーでコンピュート仕様を使用しないことが重要です。 たとえば、Spark セッションビルダーの.
serverless()
APIを使用してクラシック クラスタリング Standard
または Dedicated
にコードをデプロイすると、クラシック クラスタリングをクライアントとして使用して新しいサーバレス Spark セッションが作成されます。
コードを柔軟にして本番運用に備えるには、 Spark セッションにパラメーターを含めないでください。
spark = DatabricksSession.builder.getOrCreate()
ただし、このコードが Databricksで実行されると、DatabricksコンピュートのデフォルトグローバルSparkセッションが使用されます。
IDE でサーバレス コンピュートを有効にするには、パラメータが指定されていない場合に DatabricksSession.builder
によって選択されるデフォルト設定プロファイルを使用します。
-
手順 1 の手順を使用して、
DEFAULT
という名前の構成プロファイルを作成します。 -
テキスト エディタを使用して、次の場所にある
.databrickscfg
ファイルを開きます。-
Unix、Linux、またはmacOSの
$HOME
ユーザーのホームフォルダー:~/.databrickscfg
、または -
%USERPROFILE%
(Windowsのユーザーホームフォルダー .たとえば、macOS の場合:Bashnano ~/.databrickscfg
-
-
DEFAULT
プロファイルにserverless_compute_id = auto
を追加します。[DEFAULT]
host = https://my-workspace.cloud.databricks.com
auth_type = databricks-cli
serverless_compute_id = auto -
変更を保存して、エディターを終了します。
-
一般的な Spark セッションを使用するようにコードを変更し、実行します。
Pythonfrom databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
df = spark.read.table("samples.nyctaxi.trips")
df.show(5)Bashpython3 main.py
本番運用対応コードを サーバレス コンピュート Databricks で正常に実行し、デフォルト設定プロファイルを使用して IDE から Databricks Connect を使用して、本番運用対応コードを正常に実行しました。
環境変数を使用して、特定の Databricks コンピュートへの接続を設定することもできます。
- サーバレス:
DATABRICKS_SERVERLESS_COMPUTE_ID=auto
- クラシック:
DATABRICKS_CLUSTER_ID=<your_cluster_id>