Trabalhar com módulos Python e R

Este artigo descreve como o senhor pode usar caminhos relativos para importar módulos personalizados do Python e do R armazenados em arquivos workspace juntamente com o Notebook Databricks. workspace podem facilitar ciclos de vida de desenvolvimento mais rígidos, permitindo modularizar o código, converter %run comando em instruções de importação e refatorar arquivos Python wheel em módulos co-versionados. O senhor também pode usar o terminal web integrado Databricks para testar seu código.

Observação

No Databricks Runtime 14.0 e acima, o diretório de trabalho atual (CWD) default para o código executado localmente é o diretório que contém o Notebook ou script que está sendo executado. Esta é uma mudança de comportamento do Databricks Runtime 13.3 LTS e abaixo. Consulte Qual é o diretório de trabalho atual default ?.

Importar módulos Python e R

Importante

Em Databricks Runtime 13.3 LTS e acima, os diretórios adicionados ao Python sys.path, ou os diretórios que são estruturados como Python pacote, são automaticamente distribuídos para todos os executores no cluster. Em Databricks Runtime 12.2 LTS e abaixo, a biblioteca adicionada ao sys.path deve ser explicitamente instalada no executor.

Em Databricks Runtime 11.3 LTS e acima, o diretório de trabalho atual do seu Notebook é automaticamente adicionado ao caminho Python. Se o senhor estiver usando as pastas Git, o diretório raiz repo será adicionado.

Para importar módulos de outro diretório, você deve adicionar o diretório que contém o módulo a sys.path. Você pode especificar diretórios usando um caminho relativo, como no exemplo a seguir:

import sys
import os
sys.path.append(os.path.abspath('..'))

Você importa funções de um módulo armazenado em arquivos workspace da mesma forma que faria de um módulo salvo como uma biblioteca clusters ou biblioteca com escopo Notebook :

from sample import power
power.powerOfTwo(3)
source("sample.R")
power.powerOfTwo(3)

Importante

Quando você usa uma instrução import , o Databricks segue uma precedência definida se existirem várias bibliotecas com o mesmo nome. Consulte a precedência da biblioteca Python.

Recarregamento automático para módulos Python

Se você estiver editando vários arquivos durante o desenvolvimento do código Python, poderá usar o seguinte comando em qualquer célula Notebook ou arquivo python para forçar o recarregamento de todos os módulos:

%load_ext autoreload
%autoreload 2

Observe que o carregamento automático funciona apenas no driver e não recarrega o código no executor para UDFs.

Refatorar código

Uma prática recomendada para o desenvolvimento de código é modularizar o código para que possa ser facilmente reutilizado. Você pode criar arquivos Python personalizados com arquivos workspace e disponibilizar o código nesses arquivos para um Notebook usando a instrução import.

Para refatorar o código Notebook em arquivos reutilizáveis:

  1. Crie um novo arquivo de código-fonte para o seu código.

  2. Adicione instruções de importação do Python ao Notebook para disponibilizar o código em seu novo arquivo para o Notebook.

Migrar de comandos %run

Se você estiver usando comandos %run para disponibilizar funções Python ou R definidas em um Notebook para outro Notebook ou estiver instalando arquivos .whl personalizados em clusters, considere incluir esses módulos personalizados como arquivos workspace . Dessa forma, você pode manter seu Notebook e outros módulos de código sincronizados, garantindo que seu Notebook sempre use a versão correta.

%run Os comandos permitem incluir um Notebook dentro de outro e geralmente são usados para tornar o código Python ou R de suporte disponível para um Notebook. Neste exemplo, um Notebook chamado power.py inclui o código abaixo.

# This code is in a notebook named "power.py".
def n_to_mth(n,m):
  print(n, "to the", m, "th power is", n**m)

Você pode então tornar as funções definidas em power.py disponíveis para um Notebook diferente com um comando %run:

# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)

Usando arquivos workspace , você pode importar diretamente o módulo que contém o código Python e executar a função.

from power import n_to_mth
n_to_mth(3, 4)

Refatorar arquivos Python .whl para bibliotecas relativas

Você pode instalar arquivos .whl personalizados em clusters e depois importá-los para um Notebook anexado a esses clusters. Para códigos atualizados com frequência, esse processo pode ser complicado e sujeito a erros. workspace permite manter esses arquivos Python no mesmo diretório do Notebook que usa o código, garantindo que seu Notebook sempre use a versão correta.

Para obter mais informações sobre como empacotar projetos Python, consulte este tutorial.

Use o terminal da Web do Databricks para teste

Você pode usar o terminal da Web Databricks para testar modificações em seu código Python ou R sem precisar importar o arquivo para um Notebook e executar o Notebook.

  1. Abra o terminal web.

  2. Mude para o diretório: cd /Workspace/Users/<path-to-directory>/.

  3. execução do arquivo Python ou R: python file_name.py ou Rscript file_name.r.