Compartir vía


¿Cuál es el directorio de trabajo actual predeterminado?

En este artículo se describe cómo funciona el directorio de trabajo actual predeterminado (CWD) para la ejecución de cuadernos y archivos.

Nota:

Use Databricks Runtime 14.0+ y las configuraciones predeterminadas del área de trabajo para obtener más coherencia en el comportamiento de (CWD) en todo el área de trabajo.

Hay dos comportamientos de CWD predeterminados para el código ejecutado localmente en cuadernos y archivos de :

  1. CWD devuelve el directorio que contiene el cuaderno o el script que se está ejecutando.
  2. CWD devuelve un directorio que representa el volumen de almacenamiento efímero asociado al controlador.

Este comportamiento de CWD afecta a todo el código, incluidos %sh y código de Python o R que no usa Apache Spark. El comportamiento viene determinado por el lenguaje de código, la versión de Databricks Runtime, la ruta de acceso del área de trabajo y la configuración del administrador del área de trabajo.

En el caso del código Scala, el CWD es el almacenamiento efímero asociado al controlador.

Para el código de todos los demás lenguajes:

  • En Databricks Runtime 14.0 y versiones posteriores, el CWD es el directorio que contiene el cuaderno o script que se ejecuta. Esto es cierto independientemente de si el código está en /Workspace/Repos.
  • En el caso de los cuadernos que ejecutan Databricks Runtime 13.3 LTS y versiones posteriores, el CWD depende de si el código está en /Workspace/Repos:
  • Para el código ejecutado en una ruta de acceso fuera de /Workspace/Repos, el CWD es el volumen de almacenamiento efímero asociado al controlador
  • Para el código ejecutado en una ruta de acceso de /Workspace/Repos, el CWD depende de la configuración de administración y la versión de DBR del clúster:
    • En el caso de las áreas de trabajo con enableWorkspaceFilesystem establecida en dbr8.4+ o true, en las versiones 8.4 y posteriores de DBR, el CWD es el directorio que contiene el cuaderno o script que se está ejecutando. En las versiones de DBR inferiores a la 8.4, es el volumen de almacenamiento efímero asociado al controlador
    • En el caso de las áreas de trabajo con enableWorkspaceFilesystem establecida en dbr11.0+, en las versiones 11.0 y posteriores de DBR, el CWD es el directorio que contiene el cuaderno o el script que se está ejecutando. En las versiones de DBR inferiores a la 11.0, es el volumen de almacenamiento efímero asociado al controlador
    • En el caso de las áreas de trabajo con enableWorkspaceFilesystem establecida en false, el CWD es el volumen de almacenamiento efímero asociado al controlador

Obtener el CWD en el código

Para obtener el CWD del área de trabajo del cuaderno de canalización, llame a os.getcwd(). Debe importar el os módulo (el módulo de interacción predeterminado del sistema de archivos de Python) al principio del cuaderno con import os. Por ejemplo:

import os
...
cwd = os.getcwd()

También puede establecer el CWD llamando os.chdir('/path/to/dir') al principio del cuaderno de canalización. Solo puede establecer el CWD cuando ejecute un cuaderno desde el área de trabajo con WSFS habilitado.

¿Cómo afecta esto a las cargas de trabajo?

Los mayores impactos en las cargas de trabajo tienen que ver con la conservación y la ubicación de los archivos:

  • En Databricks Runtime 13.3 LTS y a continuación, para el código ejecutado en una ruta de acceso fuera de /Workspace/Repos, muchos fragmentos de código almacenan datos en una ubicación predeterminada en un volumen de almacenamiento efímero que se elimina permanentemente cuando finaliza el clúster.
  • En Databricks Runtime 14.0 y versiones posteriores, el comportamiento predeterminado de estas operaciones crea archivos del área de trabajo almacenados junto con el cuaderno en ejecución que se conserva hasta que se elimina explícitamente.

Para obtener notas sobre las diferencias de rendimiento y otras limitaciones inherentes a los archivos del área de trabajo, vea Trabajar con archivos de área de trabajo.

Revertir al comportamiento heredado

Puede cambiar el directorio de trabajo actual de cualquier cuaderno mediante el método Python os.chdir(). Si desea asegurarse de que cada cuaderno usa un CWD en los volúmenes de almacenamiento efímeros conectados al controlador, puede agregar el siguiente comando a la primera celda de cada cuaderno y ejecutarlo antes de cualquier otro código:

import os

os.chdir("/tmp")