Pular para o conteúdo principal

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.

nota

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:

  1. O CWD retorna o diretório que contém o Notebook ou o script que está sendo executado.
  2. 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 como dbr8.4+ ou true, 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 como dbr11.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 como false, o CWD é o volume de armazenamento efêmero anexado ao driver

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:

Python
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:

Python
import os

os.chdir("/tmp")