Partilhar via


Trabalhar com módulos Python e R

Este artigo descreve como você pode usar caminhos relativos para importar módulos Python e R personalizados armazenados em arquivos de espaço de trabalho ao lado de seus blocos de anotações Databricks. Os arquivos de espaço de trabalho podem facilitar ciclos de vida de desenvolvimento mais rígidos, permitindo modularizar seu código, converter comandos %run para importar instruções e refatorar arquivos de roda Python para módulos com coversão. Você também pode usar o terminal da Web Databricks integrado para testar seu código.

Nota

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

Importar módulos 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 distribuídos automaticamente para todos os executores no cluster. No Databricks Runtime 12.2 LTS e inferior, as sys.path bibliotecas adicionadas ao devem ser explicitamente instaladas nos executores.

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

Para importar módulos de outro 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 espaço de trabalho da mesma forma que importaria de um módulo salvo como uma biblioteca de cluster ou biblioteca com escopo de bloco de anotações:

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. Consulte Precedência da biblioteca Python.

Autoreload para módulos Python

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

%load_ext autoreload
%autoreload 2

A autoreload extensão funciona apenas no processo de driver do Spark e não recarrega o código nos processos do executor do Spark. Como ele funciona apenas no nó do driver Spark e não em nós que executam o executor do Spark, você não deve usar autoreload ao desenvolver módulos que são 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 recarga direcionada 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 Python de um arquivo de espaço de trabalho, 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 carregamento automático do IPython.

Código de refatoração

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

Para refatorar o código do bloco de notas em ficheiros reutilizáveis:

  1. Crie um novo arquivo de código-fonte para seu código.
  2. Adicione instruções de importação Python ao bloco de anotações para disponibilizar o código em seu novo arquivo para o bloco de anotações.

Migrar a partir de %run comandos

Se você estiver usando %run comandos para disponibilizar funções Python ou R definidas em um bloco de anotações para outro bloco de anotações ou estiver instalando arquivos personalizados .whl em um cluster, considere incluir esses módulos personalizados como arquivos de espaço de trabalho. Desta forma, pode manter os seus blocos de notas e outros módulos de código sincronizados, garantindo que o seu bloco de notas utiliza sempre a versão correta.

%run Os comandos permitem incluir um bloco de anotações em outro e geralmente são usados para disponibilizar código Python ou R de suporte para um bloco de anotações. Neste exemplo, um bloco de anotações 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 disponibilizar funções definidas em power.py um bloco de anotações diferente com um %run comando:

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

Usando arquivos de espaço de trabalho, 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)

Refatore arquivos Python .whl para bibliotecas relativas

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

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

Usar o terminal Web do Azure Databricks para testes

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

  1. Abra o terminal web.
  2. Altere para o diretório: cd /Workspace/Users/<path-to-directory>/.
  3. Execute o arquivo Python ou R: python file_name.py ou Rscript file_name.r.