Desenvolvimento Remoto do Databricks
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.
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>:
databricks ssh setup --name <connection-name> --cluster <cluster-id>
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.
-
Para o Visual Studio Code, instale a extensão Remote SSH. O Cursor inclui uma extensão SSH remota por default.
-
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.jsondiretamente. -
Em Remote.SSH: extensões padrão (ou
remote.SSH.defaultExtensionsemsettings.json), adicionems-Python.Pythonems-toolsai.jupyter.Se você estiver modificando
settings.json:JSON"remote.SSH.defaultExtensions": [
"ms-Python.Python",
"ms-toolsai.jupyter"
]
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.
-
Na paleta de comandos, selecione Remote-SSH: Conectar ao host .
-
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
- Siga o tutorial do servidor remoto para configurar tudo.
- Na tela de nova conexão, digite:
- Nome de usuário :
root - Hospedar :
<connection-name>
- Nome de usuário :
Conecte-se usando o terminal
ssh <connection-name>
Projetos abertos
Após conectar, use Abrir Pasta na Paleta de comandos e navegue até /Workspace/Users/<your-username>.
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.
-
execução
echo $DATABRICKS_VIRTUAL_ENVde um terminal dentro do IDE.Exemplo de saída:
/local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python -
Abra a paleta de comandos e escolha Python: Selecione o interpretador . Cole o resultado obtido acima.
-
Abra um novo terminal e o ambiente virtual deverá ser ativado automaticamente.
-
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:
# 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.
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,/Volumese/dbfssã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
sparkoudbutils). Você deve importá-los explicitamente comfrom 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 %sqlcomando mágico para executar células SQL
- Valores globais do Databricks:
Para trabalhar com o código-fonte Python “Notebook”:
-
Procure por
jupyter.interactiveWindow.cellMarker.codeRegexe defina-o como:^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\]) -
Procure por
jupyter.interactiveWindow.cellMarker.defaulte 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-keyse reexecuçãodatabricks ssh setup. - Para erros de "identificação do host remoto alterada", verifique o arquivo
~/.ssh/known_hostse 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 MANAGEno cluster.
Meu código não funciona.
- Certifique-se de ter configurado o ambiente virtual Databricks . Consulte o código de execução (Visual Studio Code ou Cursor).
- Os notebooks ipynb e
*.pyDatabricks têm acesso aos globais Databricks , mas os arquivos Python*.pynão. Veja as diferenças entre os notebooksDatabricks.
Os arquivos desaparecem ou o ambiente é redefinido após a reinicialização cluster .
- Os arquivos nos pontos de montagem
/Workspace,/Volumese/dbfspersistem mesmo após reinicializações do cluster. Os arquivos em/home,/roote 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.
O desenvolvimento remoto é compatível com links privados?
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.