Pular para o conteúdo principal

Desenvolvimento Remoto do Databricks

info

Beta

O desenvolvimento remoto está em versão beta.

Databricks Remote Development permite que você acesse seu workspace e execute cargas de trabalho interativamente no Databricks compute a partir de IDEs usando um túnel SSH. É fácil de configurar, elimina a necessidade de gerenciamento de ambiente e mantém todo o código e dados seguros dentro do seu workspace Databricks .

Requisitos

Para usar o Desenvolvimento Remoto, você precisa ter:

  • A versão 0.269 ou superior da CLI do Databricks deve estar instalada em sua máquina local e a autenticação deve estar configurada. Consulte a seção Instalar.
  • Um cluster dedicado (para um único usuário) executando Databricks Runtime 17.0 ou superior. Consulte a Visão geral compute dedicada. Além disso:
    • Unity Catalog precisa estar ativado.
    • Caso exista uma política compute , ela não deve proibir a execução de tarefas.

Configure a conexão SSH.

Primeiro, configure o túnel SSH usando o comando ` databricks ssh setup` . Substitua <connection-name> pelo nome da conexão, por exemplo, my-connection.

Bash
databricks ssh setup --name <connection-name>

A interface de linha de comando (CLI) solicita que você selecione um cluster. Você também pode especificar um diretamente com --cluster <cluster-id>:

Bash
databricks ssh setup --name <connection-name> --cluster <cluster-id>
nota

Para usuários do IntelliJ, a Databricks recomenda adicionar --auto-start-cluster=false ao comando de configuração e iniciar o cluster manualmente antes de conectar. Isso ocorre porque IDEs da JetBrains iniciam todos clusters configurados na inicialização, o que pode resultar em cobranças compute inesperadas.

Conecte-se ao Databricks

Em seguida, conecte-se ao Databricks usando uma IDE ou um terminal.

Conecte-se usando o Visual Studio Code ou o cursor.

  1. Para o Visual Studio Code, instale a extensão Remote SSH. O Cursor inclui uma extensão SSH remota por default.

  2. No menu principal da IDE, clique em Exibir > Paleta de comandos . Selecione SSH remoto: Configurações . Alternativamente, selecione Preferências: Abrir configurações do usuário (JSON) para modificar settings.json diretamente.

  3. Em Remote.SSH: extensões padrão (ou remote.SSH.defaultExtensions em settings.json), adicione ms-Python.Python e ms-toolsai.jupyter.

    Se você estiver modificando settings.json:

    JSON
    "remote.SSH.defaultExtensions": [
    "ms-Python.Python",
    "ms-toolsai.jupyter"
    ]
nota

Opcionalmente, aumente o valor de Remote.SSH: Connect Timeout (ou remote.SSH.connectTimeout em settings.json) para reduzir ainda mais a chance de erros de tempo limite. O tempo limite default é 360.

  1. Na paleta de comandos, selecione Remote-SSH: Conectar ao host .

  2. Na dropdown, selecione a conexão que você configurou na primeira etapa. O IDE inicia a conexão em uma nova janela.

Conecte-se usando o IntelliJ IDEs

  1. Siga o tutorial do servidor remoto para configurar tudo.
  2. Na tela de nova conexão, digite:
    • Nome de usuário : root
    • Hospedar : <connection-name>

Conecte-se usando o terminal

Bash
ssh <connection-name>

Projetos abertos

Após conectar, use Abrir Pasta na Paleta de comandos e navegue até /Workspace/Users/<your-username>.

nota

Os arquivos em /Workspace, /Volumes e /dbfs persistem após reinicializações do cluster. Os arquivos em /home, /root e outros caminhos locais são efêmeros e perdidos ao reiniciar.

código de execução (Visual Studio Code ou Cursor)

Para executar código usando o Desenvolvimento Remoto, você precisa garantir que o ambiente virtual Databricks esteja configurado. Este ambiente inclui toda a biblioteca DBR integrada e a biblioteca com escopo decompute.

  1. execução echo $DATABRICKS_VIRTUAL_ENV de um terminal dentro do IDE.

    Exemplo de saída: /local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python

  2. Abra a paleta de comandos e escolha Python: Selecione o interpretador . Cole o resultado obtido acima.

  3. Abra um novo terminal e o ambiente virtual deverá ser ativado automaticamente.

  4. Para executar um Jupyter Notebook, certifique-se de que o ambiente virtual esteja selecionado como kernel. Clique em Selecionar Kernel no canto superior direito do Notebook.

Os arquivos Python e .ipynb Notebook podem ser executados e depurados usando as extensões padrão Python e do Jupyter.

Gerenciar dependências Python

As dependências Python podem ser gerenciadas globalmente no nível cluster ou definidas para projetos individuais usando o Notebook.

biblioteca de clusters (recomendada)

Instale as dependências através da interface do usuário workspace em compute > biblioteca . Esses persistem após reinicializações do cluster e estão disponíveis em pythonEnv-xxx. Veja a biblioteca de clusters.

Configuração do Notebook específica do projeto

Para dependências no escopo do projeto, execute um Notebook contendo o comando %pip install no início de cada sessão:

Python
# Install from pyproject.toml
%pip install .

# Install from a requirements file
%pip install -r requirements.txt

# Install a wheel from Volumes or Workspace
%pip install /Volumes/catalog/schema/volume/your_library.whl

%pip O comando inclui as proteções específicas Databrickse propaga as dependências para os nós executor Spark . Isso permite funções definidas pelo usuário (UDFs) com dependências personalizadas.

Para mais exemplos, veja gerenciar biblioteca com %pip comando.

Não é necessário executar o Notebook novamente se a sessão se reconectar em até 10 minutos. Isso pode ser configurado usando -shutdown-delay na sua configuração SSH.

nota

Várias sessões SSH no mesmo cluster compartilham um ambiente virtual.

Limitações

O desenvolvimento remoto do Databricks apresenta as seguintes limitações:

  • clusters compartilhados com múltiplos usuários e serverless ainda não são suportados.
  • A extensão Databricks para Visual Studio Code e o Desenvolvimento Remoto ainda não são compatíveis e não devem ser usados em conjunto.
  • Os arquivos editados fora de /Workspace, /Volumes e /dbfs são perdidos na reinicialização do cluster.
  • É permitido um máximo de 10 conexões SSH por cluster.
  • Sessões inativas podem ser encerradas após 1 hora.

Diferenças entre NotebooksDatabricks

Existem algumas diferenças no Notebook ao usar o Desenvolvimento Remoto:

  • Os arquivos Python não definem nenhuma variável global do Databricks (como spark ou dbutils). Você deve importá-los explicitamente com from databricks.sdk.runtime import spark.
  • Para notebooks ipynb , estes recursos estão disponíveis:
    • Valores globais do Databricks: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql comando mágico para executar células SQL

Para trabalhar com o código-fonte Python “Notebook”:

  • Procure por jupyter.interactiveWindow.cellMarker.codeRegex e defina-o como:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
  • Procure por jupyter.interactiveWindow.cellMarker.default e defina-o como:

    # COMMAND ----------

Solução de problemas

Esta seção contém informações sobre como resolver problemas comuns.

A conexão SSH falha ou expira.

  • Verifique se o cluster está em execução na interface do usuário workspace .
  • Verifique se a porta de saída 22 está aberta e permitida em seu laptop, rede e VPN.
  • Aumente o tempo limite do SSH. Consulte Conectar usando o Visual Studio Code ou o Cursor.
  • Para erros de incompatibilidade key , exclua ~/.databricks/ssh-tunnel-keys e reexecução databricks ssh setup.
  • Para erros de "identificação do host remoto alterada", verifique o arquivo ~/.ssh/known_hosts e exclua as entradas relacionadas ao seu cluster.
  • As sessões SSH podem ser encerradas após 1 hora e não mais do que 10 conexões SSH podem ser feitas em um único cluster. Consulte as limitações.

erros de autenticação da CLI

  • Confirme se o seu perfil do Databricks CLI é válido usando databricks auth login.
  • Confirme se você tem permissões CAN MANAGE no cluster.

Meu código não funciona.

Os arquivos desaparecem ou o ambiente é redefinido após a reinicialização cluster .

  • Os arquivos nos pontos de montagem /Workspace, /Volumes e /dbfs persistem mesmo após reinicializações do cluster. Os arquivos em /home, /root e outros caminhos locais são efêmeros e perdidos ao reiniciar.
  • Utilize o gerenciamento de bibliotecas cluster para dependências persistentes. Automatize reinstalações usando um script de inicialização, se necessário. Veja O que são scripts de inicialização?

A configuração SSH falha no Windows (WSL)

execução databricks ssh setup diretamente no Windows, não dentro do WSL. A instância do VS Code no Windows não consegue encontrar as configurações SSH criadas no lado do WSL.

Perguntas frequentes

Qual a diferença entre o desenvolvimento remoto e o Databricks Connect?

Databricks Connect permite que você escreva código usando APIs Spark e o execute remotamente no compute Databricks , em vez de na sessão local Spark . A extensão Databricks para Visual Studio Code utiliza o Databricks Connect para fornecer depuração integrada do código do usuário no Databricks.

O Desenvolvimento Remoto permite que você acesse o workspace a partir do seu IDE e mova todo o seu ambiente de desenvolvimento para o cluster — Python, kernel e toda a execução no Databricks com acesso total aos recursos cluster .

Como meu código e meus dados são protegidos?

Toda a execução de código ocorre dentro da sua VPC cloud Databricks . Nenhum dado ou código sai do seu ambiente seguro. O tráfego SSH é totalmente criptografado.

Quais IDEs são suportadas?

O Visual Studio Code e o Cursor são oficialmente suportados. Qualquer IDE com recursos SSH é compatível, mas apenas o VS Code e o Cursor foram testados.

Todos os recursos Databricks Notebook estão disponíveis no IDE?

Alguns recursos como display(), dbutils e %sql estão disponíveis com limitações ou configuração manual. Veja as diferenças entre os notebooksDatabricks.

Meu cluster iniciará automaticamente quando eu me conectar usando o túnel SSH?

Sim, mas se a inicialização do cluster demorar mais do que o tempo limite de conexão, a tentativa de conexão falhará. Para evitar isso, aumente o valor de Remote.SSH: Connect Timeout na paleta de comandos (ou remote.SSH.connectTimeout em settings.json) para reduzir ainda mais a chance de erros de tempo limite.

Como posso saber se meu cluster está em execução?

Navegue até "Compution" na interface do usuário workspace Databricks e verifique o status do cluster. O cluster precisa mostrar "Em execução" para que a conexão SSH funcione.

Como faço para desconectar minha sessão SSH/IDE?

Você pode desconectar uma sessão fechando a janela do seu IDE, usando a opção Desconectar no seu IDE, fechando o terminal SSH ou executando o comando exit no terminal.

Como faço para desligar o cluster e evitar cobranças quando não estou trabalhando?

Para interromper imediatamente, encerre o cluster na interface do usuário workspace . Navegue até "Compution" na interface do usuário workspace Databricks , encontre seu cluster e clique em "Terminate " ou "Stop" .

Configure uma política de encerramento automático de curta duração no seu cluster a partir da interface do usuário workspace . Após a desconexão, o servidor SSH aguarda o período shutdown-delay (default: 10 minutos), então o tempo limite do parado do cluster é aplicado.

Como devo lidar com dependências persistentes?

As dependências instaladas durante uma sessão são perdidas após a reinicialização do cluster. Use armazenamento persistente (/Workspace/Users/<your-username>) para requisitos e scripts de configuração. Utilize a biblioteca cluster ou o script de inicialização para automação.

Quais métodos de autenticação são suportados?

A autenticação usa a CLI do Databricks e seu arquivo de perfis ~/.databrickscfg . As chaves SSH são gerenciadas pelo Databrick Remote Development.

Posso me conectar a bancos de dados ou serviços externos a partir do cluster?

Sim, desde que a sua rede cluster permita conexões de saída e você tenha a biblioteca necessária.

Posso usar extensões adicionais da IDE?

A maioria das extensões funciona quando instalada em sua sessão SSH remota, dependendo do seu IDE e cluster. Por default o Visual Studio Code não instala extensões locais em hosts remotos. Você pode instalá-las manualmente abrindo o painel de extensões e ativando suas extensões locais no host remoto. Você também pode configurar o Visual Studio Code para sempre instalar determinadas extensões remotamente. Consulte Conectar-se ao Databricks.

Sim, porém os administradores workspace devem adicionar à lista de permissões os URLs do VS Code e da loja de extensões Cursor. Os computadores locais dos usuários também devem ter a capacidade de acessar a internet.