Qual é o diretório de trabalho atual do default?
Este artigo descreve como o diretório de trabalho atual (CWD) do default funciona para o Notebook e para a execução de arquivos.
Use as configurações Databricks Runtime 14.0+ e default workspace para obter mais consistência no comportamento (CWD) em todo o site workspace.
Há dois comportamentos default CWD para o código executado localmente no Notebook e nos arquivos:
- O CWD retorna o diretório que contém o Notebook ou o script que está sendo executado.
- O CWD retorna um diretório representando o volume de armazenamento efêmero conectado ao driver.
Esse comportamento CWD afeta todos os códigos, inclusive %sh
e códigos Python ou R que não usam o Apache Spark. O comportamento é determinado pelo idioma do código, pela versão Databricks Runtime, pelo caminho workspace e pela configuração do administrador workspace.
Para o código Scala, o CWD é o armazenamento efêmero anexado ao driver .
Para código em todos os outros idiomas:
- Em Databricks Runtime 14.0 e acima, o CWD é o diretório que contém o Notebook ou o script que está sendo executado . Isso é verdade independentemente de o código estar em
/Workspace/Repos
. - Para Notebook executando Databricks Runtime 13.3 LTS e abaixo, o CWD depende do fato de o código estar em
/Workspace/Repos
: - Para código executado em um caminho fora de
/Workspace/Repos
, o CWD é o volume de armazenamento efêmero conectado ao driver - Para o código executado em um caminho em
/Workspace/Repos
, o CWD depende da definição da configuração do administrador e da versão do DBR do clustering:- Para o espaço de trabalho com
enableWorkspaceFilesystem
definido comodbr8.4+
outrue
, nas versões 8.4 e superiores do 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 o espaço de trabalho com
enableWorkspaceFilesystem
definido comodbr11.0+
, nas versões 11.0 e superiores do 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 11.0, é o volume de armazenamento efêmero anexado ao driver - Para o espaço de trabalho com
enableWorkspaceFilesystem
definido comofalse
, o CWD é o volume de armazenamento efêmero anexado ao driver
- Para o espaço de trabalho com
Obtenha o CWD em seu código
Para obter o workspace CWD para seu pipeline Notebook, ligue para os.getcwd()
. O senhor deve importar o módulo os
(o módulo de interação do sistema de arquivos default Python ) no início do seu Notebook com import os
. Por exemplo:
import os
...
cwd = os.getcwd()
O senhor também pode definir o CWD chamando os.chdir('/path/to/dir')
no início do seu notebook pipeline. O senhor só pode definir o CWD quando estiver executando um Notebook no site workspace com o WSFS ativado.
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 dos arquivos:
- Em Databricks Runtime 13.3 LTS e abaixo, para o código executado em um caminho fora de
/Workspace/Repos
, muitos trechos de código armazenam dados em um local default em um volume de armazenamento efêmero que é permanentemente excluído quando o clustering é encerrado. - No Databricks Runtime 14.0 e acima, o comportamento do default para essas operações cria arquivos workspace armazenados ao lado do Notebook em execução que persistem até serem explicitamente excluídos.
Para obter notas sobre as diferenças de desempenho e outras limitações inerentes aos arquivos workspace, consulte Trabalhar com arquivos workspace.
Reverter para o comportamento legado
O senhor pode alterar o diretório de trabalho atual de qualquer Notebook usando o método Python os.chdir()
. Se quiser garantir que cada Notebook use um CWD nos volumes de armazenamento efêmeros anexados ao driver, o senhor pode adicionar o seguinte comando à primeira célula de cada Notebook e executá-lo antes de qualquer outro código:
import os
os.chdir("/tmp")