Compartir a través de


Tutorial: Ejecución de código de Python en proceso sin servidor

Nota:

Este artículo se aplica a Databricks Connect 15.4 LTS y versiones posteriores.

En este artículo se describe cómo crear un proyecto en el IDE, configurar el entorno virtual, instalar Databricks Connect para Python y ejecutar código en el proceso sin servidor en el área de trabajo de Databricks.

En este tutorial se usa Python 3.12 y Databricks Connect 16.4 LTS. Para usar otras versiones de Python de Databricks Connect, deben ser compatibles. Consulte la matriz de compatibilidad de versiones.

Requisitos

Para completar este tutorial, se deben cumplir los siguientes requisitos:

Paso 1: Configuración de la autenticación de Databricks

En este tutorial se usa la autenticación de usuario a máquina (U2M) de Databricks OAuth y un perfil de configuración de Databricks para autenticarse en el área de trabajo de Databricks.

  1. Use el CLI de Databricks para iniciar la administración de tokens de OAuth localmente mediante la ejecución del siguiente comando para cada área de trabajo de destino. En el comando siguiente, reemplace por <workspace-url> la dirección URL de la instancia del área de trabajo de Databricks, por ejemplo https://dbc-a1b2345c-d6e7.cloud.databricks.com.

    databricks auth login --host <workspace-url>
    
  2. La CLI de Databricks le pide que guarde la información que especificó como perfil de configuración de Databricks. Presione Enter para aceptar el nombre del perfil sugerido o escriba el nombre de un perfil nuevo o existente. Databricks recomienda usar DEFAULT como nombre de perfil.

  3. En el explorador web, complete las instrucciones en pantalla para iniciar sesión en el área de trabajo de Databricks.

Paso 2: Creación de un nuevo entorno virtual de Python

  1. Cree la carpeta del proyecto y ábrala en el IDE. Por ejemplo, en el menú principal de Visual Studio Code, haga clic enAbrir carpeta abrir archivo>>.

  2. Abra una ventana de terminal en la raíz de la carpeta del proyecto. Por ejemplo, en el menú principal de Visual Studio Code, haga clic en Ver>terminal.

  3. Cree un entorno virtual para el proyecto llamado venv en la raíz de la carpeta del proyecto ejecutando el comando siguiente en el terminal:

    python3.12 -m venv .venv
    
  4. Active el entorno virtual:

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

Paso 3: Instalación de Databricks Connect

Instale Databricks Connect. Para obtener información sobre la versión más reciente publicada de Databricks Connect 16.4, consulte Databricks Connect for Databricks Runtime 16.4.

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

Paso 4: Agregar código y ejecutar

  1. Adición de un nuevo archivo main.py de Python al proyecto

  2. Escriba el código siguiente en el archivo, reemplazando el marcador de posición <profile-name> por el nombre del perfil de configuración del paso 1 y, a continuación, guarde el archivo. El nombre del perfil de configuración predeterminado es 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. Ejecute el código con el siguiente comando:

    python3 main.py
    

    Se devuelven cinco filas de la tabla:

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

Ha ejecutado correctamente la primera consulta en el proceso sin servidor de Databricks mediante Databricks Connect desde el IDE.

Paso 5: Preparar el código

En escenarios de producción, es importante evitar el uso de especificaciones de proceso en el generador de sesiones de Spark. Por ejemplo, si implementa el código en un clúster clásico: Standard o Dedicated usa la API en el .serverless() generador de sesiones de Spark, se crea una nueva sesión de Spark sin servidor mediante el clúster clásico como cliente.

Para que el código sea flexible y listo para producción, la sesión de Spark no debe contener ningún parámetro.

spark = DatabricksSession.builder.getOrCreate()

Sin embargo, cuando este código se ejecuta en Databricks, se usa la sesión global predeterminada de Spark del proceso de Databricks.

Para habilitar el proceso sin servidor en el IDE, use el perfil de configuración DEFAULT, seleccionado por cuando DatabricksSession.builder no se especifica ningún parámetro:

  1. Cree un perfil de configuración denominado DEFAULT con las instrucciones del paso 1.

  2. Use un editor de texto para abrir el .databrickscfg archivo, que se encuentra en:

    • La $HOME carpeta principal del usuario en Unix, Linux o macOS: ~/.databrickscfg, o

    • La %USERPROFILE% carpeta (inicio del usuario) en Windows. Por ejemplo, para macOS:

      nano ~/.databrickscfg
      
  3. Agregue serverless_compute_id = auto al DEFAULT perfil:

    [DEFAULT]
    host                  = https://my-workspace.cloud.databricks.com
    auth_type             = databricks-cli
    serverless_compute_id = auto
    
  4. Guarde los cambios y salga del editor.

  5. Modifique el código para usar una sesión general de Spark y ejecútelo:

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

Ha ejecutado correctamente el código listo para producción en el proceso sin servidor de Databricks mediante Databricks Connect desde el IDE mediante el perfil de configuración DEFAULT.

Sugerencia

También puede usar variables de entorno para establecer la conexión a un proceso específico de Databricks:

  • Sin servidor: DATABRICKS_SERVERLESS_COMPUTE_ID=auto
  • Clásico: DATABRICKS_CLUSTER_ID=<your_cluster_id>