Dela via


Självstudie: Köra Python-kod på serverlös beräkning

Anmärkning

Den här artikeln gäller för Databricks Connect 15.4 LTS och senare.

Den här artikeln beskriver hur du skapar ett projekt i din IDE, konfigurerar din virtuella miljö, installerar Databricks Connect för Python och kör kod på serverlös beräkning på din Databricks-arbetsyta.

I den här självstudien används Python 3.12 och Databricks Connect 16.4 LTS. Om du vill använda andra versioner av Python av Databricks Connect måste de vara kompatibla. Se versionsstödmatrisen.

Kravspecifikation

För att slutföra den här självstudien måste följande krav uppfyllas:

Steg 1: Konfigurera Databricks-autentisering

I den här självstudien används autentisering med Databricks OAuth från användare till dator (U2M) och en Databricks-konfigurationsprofil för autentisering till din Databricks-arbetsyta.

  1. Använd Databricks CLI för att initiera OAuth-tokenhantering lokalt genom att köra följande kommando för varje målarbetsyta. I följande kommando ersätter du <workspace-url> med instans-URL:en för Databricks-arbetsytan, till exempel https://dbc-a1b2345c-d6e7.cloud.databricks.com.

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI uppmanar dig att spara den information som du angav som en Databricks-konfigurationsprofil. Tryck Enter för att acceptera det föreslagna profilnamnet eller ange namnet på en ny eller befintlig profil. Databricks rekommenderar att du använder DEFAULT som ditt profilnamn.

  3. I webbläsaren slutför du anvisningarna på skärmen för att logga in på databricks-arbetsytan.

Steg 2: Skapa en ny virtuell Python-miljö

  1. Skapa projektmappen och öppna den i din IDE. I huvudmenyn i Visual Studio Code klickar du till exempel på>>

  2. Öppna ett terminalfönster i projektmappens rot. I huvudmenyn i Visual Studio Code klickar du till exempel på Visa>terminal.

  3. Skapa en virtuell miljö för projektet som anropas venv i projektmappens rot genom att köra följande kommando i terminalen:

    python3.12 -m venv .venv
    
  4. Aktivera din virtuella miljö:

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

Steg 3: Installera Databricks Connect

Installera Databricks Connect. Information om den senaste versionen av Databricks Connect 16.4 finns i Databricks Connect för Databricks Runtime 16.4.

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

Steg 4: Lägg till kod och kör

  1. Lägga till en ny Python-fil main.py i projektet

  2. Ange följande kod i filen, ersätt platshållaren <profile-name> med namnet på konfigurationsprofilen från steg 1 och spara sedan filen. Standardnamnet för konfigurationsprofilen är 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. Kör koden med följande kommando:

    python3 main.py
    

    Fem rader i tabellen returneras:

    +--------------------+---------------------+-------------+-----------+---------+-----------+
    |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|
    +--------------------+---------------------+-------------+-----------+----------+-----------+
    

Du har kört din första fråga på Databricks serverlös beräkning med Databricks Connect från din IDE.

Steg 5: Gör koden produktionsklar

För produktionsscenarier är det viktigt att undvika att använda beräkningsspecifikationer i Spark-sessionsverktyget. Om du till exempel distribuerar koden till ett klassiskt kluster: Standard eller Dedicated använder API:et .serverless() i Spark-sessionsverktyget skapas en ny serverlös Spark-session med det klassiska klustret som klient.

För att göra koden flexibel och redo för produktion bör Spark-sessionen inte innehålla några parametrar.

spark = DatabricksSession.builder.getOrCreate()

Men när den här koden körs på Databricks används standard globala Spark-sessionen för Databricks-beräkningen.

Om du vill aktivera serverlös beräkning i din IDE använder du standardkonfigurationsprofilen, som väljs av DatabricksSession.builder när inga parametrar har angetts:

  1. Skapa en konfigurationsprofil med namnet DEFAULT med hjälp av anvisningarna från steg 1.

  2. Använd en textredigerare för att öppna .databrickscfg filen, som finns i:

    • Användarens $HOME hemmapp i Unix, Linux eller macOS: ~/.databrickscfg, eller

    • Mappen %USERPROFILE% (ditt användarhem) i Windows. Till exempel för macOS:

      nano ~/.databrickscfg
      
  3. Lägg till serverless_compute_id = auto i profilen DEFAULT :

    [DEFAULT]
    host                  = https://my-workspace.cloud.databricks.com
    auth_type             = databricks-cli
    serverless_compute_id = auto
    
  4. Spara ändringarna och avsluta redigeringsprogrammet.

  5. Ändra koden så att den använder en allmän Spark-session och kör den:

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

Du har kört din produktionsklara kod på Databricks serverlös beräkning med hjälp av Databricks Connect från din IDE med hjälp av standardkonfigurationsprofilen.

Tips/Råd

Du kan också använda miljövariabler för att ställa in anslutningen till en specifik Databricks-beräkning:

  • Serverlös: DATABRICKS_SERVERLESS_COMPUTE_ID=auto
  • Klassisk: DATABRICKS_CLUSTER_ID=<your_cluster_id>