Qual é o diretório de trabalho atual padrão?

Este artigo descreve como o diretório de trabalho atual (CWD) default funciona para Notebook e execução de arquivos.

Observação

Use o Databricks Runtime 14.0+ e as configurações default workspace para obter mais consistência no comportamento (CWD) em todo o workspace.

Existem dois comportamentos CWD default para código executado localmente em Notebook e arquivos:

  1. CWD retorna o diretório que contém o Notebook ou script em execução.

  2. CWD retorna um diretório que representa o volume de armazenamento temporário anexado ao driver.

Esse comportamento do CWD afeta todo o código, incluindo %sh e código Python ou R que não usa Apache Spark. O comportamento é determinado pela linguagem de código, pela versão do 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 todas as outras linguagens:

  • No Databricks Runtime 14.0 e acima, o CWD é o diretório que contém o Notebook ou 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 se o código está em /Workspace/Repos:

  • Para código executado em um caminho fora de /Workspace/Repos, o CWD é o volume de armazenamento efêmero anexado ao driver

  • Para código executado em um caminho em /Workspace/Repos, o CWD depende da configuração do administrador e da versão do DBR clusters :

    • Para workspace 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 script que está sendo executado. Nas versões DBR abaixo de 8.4, é o volume de armazenamento efêmero anexado ao driver

    • Para workspace 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 script em execução. Nas versões DBR abaixo de 11.0, é o volume de armazenamento efêmero anexado ao driver

    • Para workspace com enableWorkspaceFilesystem definido como false, o CWD é o volume de armazenamento temporário 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:

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 localização dos arquivos:

  • No Databricks Runtime 13.3 LTS e versões anteriores, para 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 é excluído permanentemente quando os clusters são encerrados.

  • No Databricks Runtime 14.0 e acima, o comportamento default para essas operações cria arquivos workspace armazenados junto com o 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 comportamento legado

Você 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êmero anexados ao driver, você 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")