次の方法で共有


チュートリアル: サーバーレス コンピューティングで Python コードを実行する

この記事は、Databricks Connect 15.4 LTS 以降に適用されます。

この記事では、IDE でプロジェクトを作成し、仮想環境をセットアップし、Databricks Connect for Python をインストールし、Databricks ワークスペースのサーバーレス コンピューティングでコードを実行する方法について説明します。

このチュートリアルでは、Python 3.12 と Databricks Connect 16.4 LTS を使用します。 Databricks Connect の他のバージョンの Python を使用するには、互換性がある必要があります。 バージョン サポート マトリックスを参照してください。

要求事項

このチュートリアルを完了するには、次の要件を満たす必要があります。

手順 1: Databricks 認証を構成する

このチュートリアルでは、Databricks OAuth ユーザー対マシン (U2M) 認証 と Databricks 構成プロファイル を使用して、Databricks ワークスペースに対する認証を行います。

  1. Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。 次のコマンドで、 <workspace-url> を Databricks ワークスペース インスタンスの URL (たとえば、 https://dbc-a1b2345c-d6e7.cloud.databricks.com) に置き換えます。

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI では、Databricks 構成プロファイルとして入力した情報を保存するように求められます。 Enter キーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイル名を入力します。 Databricks では、プロファイル名として DEFAULT を使用することをお勧めします。

  3. Web ブラウザーで、画面の指示に従って Databricks ワークスペースにログインします。

手順 2: 新しい Python 仮想環境を作成する

  1. プロジェクト フォルダーを作成し、IDE で開きます。 たとえば、Visual Studio Code のメイン メニューで、[ファイル]、[フォルダーの開く>開く>開く] の順にクリックします。

  2. プロジェクト フォルダーのルートにあるターミナル ウィンドウを開きます。 たとえば、Visual Studio Code のメイン メニューで、[表示]、[>] の順にクリックします。

  3. ターミナルで次のコマンドを実行して、プロジェクト フォルダーのルートに venv という名前のプロジェクトの仮想環境を作成します。

    python3.12 -m venv .venv
    
  4. 仮想環境をアクティブ化します。

    # Linux/Mac
    source .venv/bin/activate
    
    # Windows
    .venv\Scripts\activate
    

手順 3: Databricks Connect をインストールする

Databricks Connect をインストールします。 Databricks Connect 16.4 の最新リリース バージョンについては、「 Databricks Connect for Databricks Runtime 16.4」を参照してください。

pip install "databricks-connect==16.4.*"

手順 4: コードを追加して実行する

  1. プロジェクトに新しい Python ファイル main.py を追加する

  2. 次のコードをファイルに入力し、プレースホルダー <profile-name> を手順 1 の構成プロファイルの名前に置き換えてから、ファイルを保存します。 既定の構成プロファイル名は DEFAULT

    from databricks.connect import DatabricksSession
    
    spark = DatabricksSession.builder.serverless().profile("<profile-name>").getOrCreate()
    
    df = spark.read.table("samples.nyctaxi.trips")
    df.show(5)
    
  3. 次のコマンドを使用してコードを実行します。

    python3 main.py
    

    テーブルの 5 行が返されます。

    +--------------------+---------------------+-------------+-----------+---------+-----------+
    |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 セッション ビルダーで StandardDedicated API を使用してコードをクラシック クラスター (.またはserverless()) にデプロイすると、クラシック クラスターをクライアントとして使用して新しいサーバーレス Spark セッションが作成されます。

コードを柔軟に運用できるように、Spark セッションにパラメーターを含めないようにする必要があります。

spark = DatabricksSession.builder.getOrCreate()

ただし、このコードを Databricks で実行すると、Databricks コンピューティングの既定のグローバル Spark セッションが使用されます。

IDE でサーバーレス コンピューティングを有効にするには、パラメーターが指定されていない場合に DatabricksSession.builder によって選択される DEFAULT 構成プロファイルを使用します。

  1. DEFAULT の手順に従って、という名前の構成プロファイルを作成します。

  2. テキスト エディターを使用して、 .databrickscfg ファイルを開きます。このファイルは次の場所にあります。

    • Unix、Linux、または macOS 上の $HOME ユーザーのホーム フォルダー: ~/.databrickscfg、または

    • Windows 上の %USERPROFILE% (ユーザー ホーム) フォルダー。 たとえば、macOS の場合:

      nano ~/.databrickscfg
      
  3. serverless_compute_id = auto プロファイルにDEFAULTを追加します。

    [DEFAULT]
    host                  = https://my-workspace.cloud.databricks.com
    auth_type             = databricks-cli
    serverless_compute_id = auto
    
  4. 変更を保存し、エディターを終了します。

  5. 一般的な Spark セッションを使用するようにコードを変更し、実行します。

    from databricks.connect import DatabricksSession
    
    spark = DatabricksSession.builder.getOrCreate()
    
    df = spark.read.table("samples.nyctaxi.trips")
    df.show(5)
    
    python3 main.py
    

DEFAULT 構成プロファイルを使用して、IDE から Databricks Connect を使用して、Databricks サーバーレス コンピューティングで運用対応コードを正常に実行しました。

ヒント

環境変数を使用して、特定の Databricks コンピューティングへの接続を設定することもできます。

  • サーバーレス: DATABRICKS_SERVERLESS_COMPUTE_ID=auto
  • クラシック: DATABRICKS_CLUSTER_ID=<your_cluster_id>