Compartilhar via


Trabalhar com módulos do Python e R

Este artigo descreve como você pode usar caminhos relativos para importar módulos personalizados do Python e R armazenados em arquivos de workspace junto com seus notebooks do Databricks. Os arquivos de workspace podem facilitar ciclos de vida de desenvolvimento mais rígidos, permitindo que você modularize seu código, converta comandos %run para importar instruções e refatore os arquivos wheel do Python para módulos com controle de versão. Você também pode usar o terminal da Web interno para testar seu código do Databricks.

Observação

No Databricks Runtime 14.0 e superior, o CWD (diretório de trabalho atual) padrão para o código executado localmente é o diretório que contém o notebook ou o script que está sendo executado. Essa é uma alteração no comportamento do Databricks Runtime 13.3 LTS e inferior. Consulte Qual é o diretório de trabalho padrão atual?.

Importar módulos do Python e R

Importante

No Databricks Runtime 13.3 LTS e superior, os diretórios adicionados ao Python sys.path, ou diretórios estruturados como pacotes Python, são automaticamente distribuídos a todos os executores no cluster. No Databricks Runtime 12.2 LTS e abaixo, as bibliotecas adicionadas ao sys.path devem ser instaladas explicitamente em executores.

No Databricks Runtime 11.3 LTS e superior, o diretório de trabalho atual do seu notebook é automaticamente adicionado ao caminho do Python. Se você estiver usando pastas do Git, o diretório de repositório raiz será adicionado.

Para importar módulos de outro repositório ou diretório, você deve adicionar o diretório que contém o módulo ao 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 de workspace da mesma forma que faria com um módulo salvo como uma biblioteca de cluster ou biblioteca no escopo do notebook:

Python

from sample import power
power.powerOfTwo(3)

R

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

Importante

Quando você usa uma import instrução e existem várias bibliotecas com o mesmo nome, o Databricks usa regras de precedência para determinar qual biblioteca carregar. Confira Precedência da biblioteca Python.

Atualização automática para módulos do Python

Se você estiver editando vários arquivos durante o desenvolvimento do código Python, poderá habilitar a extensão para recarregar todos os módulos importados automaticamente para que as autoreload execuções de comando selecionem essas edições. Use os seguintes comandos em qualquer célula de notebook ou arquivo Python para habilitar a autoreload extensão:

%load_ext autoreload
%autoreload 2

A autoreload extensão funciona apenas no processo do driver do Spark e não recarrega o código nos processos do executor do Spark. Como ele funciona apenas no nó do driver do Spark e não nos nós que executam o executor do Spark, você não deve usar autoreload ao desenvolver módulos executados em nós de trabalho (por exemplo, UDFs).

No Databricks Runtime 16.0 e superior, a autoreload extensão no Databricks adiciona os seguintes recursos:

  • Suporte para recarregamento direcionado de módulos para modificações internas às funções. Recarregar apenas a parte alterada de um módulo sempre que possível garante que haja apenas uma instância visível externamente de cada objeto, o que é mais seguro e confiável.
  • Quando você importa um módulo do Python de um arquivo de workspace, o Databricks sugere automaticamente o uso autoreload se o módulo tiver sido alterado desde sua última importação.

Para saber mais sobre a autoreload extensão, consulte a documentação de recarregamento automático do IPython.

Refatorar código

Uma melhor prática para o desenvolvimento de código é modularizar o código para que ele possa ser facilmente reutilizado. É possível criar arquivos Python personalizados com arquivos de workspace e tornar o código nesses arquivos disponível para um notebook usando a instrução import.

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

  1. Crie um novo arquivo de código-fonte para 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 dos comandos %run

Se você estiver usando os comandos %run para tornar as funções do Python ou R definidas em um notebook disponíveis para outro notebook ou estiver instalando arquivos .whl personalizados em um cluster, considere a inclusão desses módulos personalizados como arquivos do workspace. Dessa forma, você pode manter seus notebooks e outros módulos de código sincronizados, garantindo que seu notebook sempre use a versão correta.

%run permitem incluir um notebook em outro e geralmente são usados para disponibilizar o código Python ou R de suporte 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)

Em seguida, você pode 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)

Ao usar os arquivos do 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 .whl Python para bibliotecas relativas

Você pode instalar arquivos personalizados .whl em um cluster e, em seguida, importá-los para um notebook anexado a esse cluster. No entanto, esse processo pode ser complicado e propenso a erros para código atualizado com frequência. Os arquivos de espaço de trabalho permitem que você mantenha esses arquivos Python no mesmo diretório que os notebooks que usam o código, garantindo que seu notebook sempre use a versão correta.

Para obter mais informações sobre o empacotamento de projetos do Python, consulte este tutorial.

Usar o terminal da Web para teste do Azure Databricks

Você pode usar o terminal Web do Azure Databricks para testar modificações no código Python ou R sem usar um notebook para importar e executar o arquivo.

  1. Open o Terminal da Web.
  2. Altere para o diretório: cd /Workspace/Users/<path-to-directory>/.
  3. Execute o arquivo do Python ou R: python file_name.py ou Rscript file_name.r.