Qual é o diretório de trabalho atual padrão?
Este artigo descreve como o diretório de trabalho atual padrão (CWD) funciona para execução de arquivos notebooks.
Observação
Use o Databricks Runtime 14.0+ e configurações de workspace padrão para obter mais consistência no comportamento (CWD) em todo o workspace.
Há dois comportamentos CWD padrão para código executado localmente em notebooks e arquivos:
- CWD retorna o diretório que contém o notebook ou o script que está sendo executado.
- CWD retorna um diretório que representa o volume de armazenamento efêmero anexado ao driver.
Esse comportamento CWD afeta todo o código, incluindo o código %sh
e Python ou R que não usa o Apache Spark. O comportamento é determinado pela linguagem de código, versão do Databricks Runtime, caminho do workspace e configuração de administrador do workspace.
Para o código Scala, o CWD é o armazenamento efêmero anexado ao driver.
Para código em todos os outros idiomas:
- No Databricks Runtime 14.0 e posteriores, o CWD é o diretório que contém o notebook ou o script que está sendo executado. Isso é verdadeiro independentemente se o código está em
/Workspace/Repos
. - Para notebooks que executam o Databricks Runtime 13.3 LTS e abaixo, o CWD depende se o código está em
/Workspace/Repos
: - Para o código executado em um caminho fora de
/Workspace/Repos
, o CWD é o volume de armazenamento efêmero anexado ao driver - Para o código executado em um caminho em
/Workspace/Repos
, o CWD depende da configuração do administrador e da versão DBR do cluster:- Para workspaces com
enableWorkspaceFilesystem
definido comodbr8.4+
outrue
, nas versões 8.4 e superiores da DBR, o CWD é o diretório que contém o notebook ou o script que está sendo executado. Nas versões do DBR abaixo da 8.4, é o volume de armazenamento efêmero anexado ao driver - Para workspaces com
enableWorkspaceFilesystem
definido comodbr11.0+
, nas versões 11.0 e superiores da DBR, o CWD é o diretório que contém o notebook ou o script que está sendo executado. Em versões de DBR abaixo da 11.0, é o volume de armazenamento efêmero anexado ao driver - Para workspaces com
enableWorkspaceFilesystem
definido comofalse
, o CWD é o volume de armazenamento efêmero anexado ao driver
- Para workspaces com
Obtenha o CWD em seu código
Para obter o CWD do workspace para seu notebook de pipeline, chame os.getcwd()
. Você deve importar o os
módulo (o módulo de interação do sistema de arquivos Python padrão) no início do seu notebook com import os
. Por exemplo:
import os
...
cwd = os.getcwd()
Você também pode definir o CWD chamando os.chdir('/path/to/dir')
no início do notebook de pipeline. Você só pode definir o CWD quando estiver executando um notebook em seu workspace com o WSFS habilitado.
Como isso afeta as cargas de trabalho?
Os maiores impactos nas cargas de trabalho têm a ver com a persistência e a localização do arquivo:
- No Databricks Runtime 13.3 LTS e abaixo, para o código executado em um caminho fora de
/Workspace/Repos
, muitos snippets de código armazenam dados em um local padrão em um volume de armazenamento efêmero que é excluído permanentemente quando o cluster é encerrado. - No Databricks Runtime 14.0 e superior, o comportamento padrão dessas operações cria arquivos de workspace armazenados junto com o notebook em execução que persistem até serem excluídos explicitamente.
Para ver observações sobre diferenças de desempenho e outras limitações inerentes aos arquivos de workspace, confira Trabalhar com arquivos de workspace.
Reverter para o comportamento herdado
Você pode alterar o diretório de trabalho atual para qualquer notebook usando o método Python os.chdir()
. Se você quiser garantir que cada notebook use um CWD nos volumes de armazenamento efêmeros anexados ao driver, adicione o seguinte comando à primeira célula de cada notebook e execute-o antes de qualquer outro código:
import os
os.chdir("/tmp")