Share via


RStudio no Azure Databricks

Você pode usar o RStudio, um IDE (ambiente de desenvolvimento integrado) popular para R, para se conectar aos recursos de computação do Azure Databricks nos workspaces do Azure Databricks. Use o RStudio Desktop para se conectar a um cluster do Azure Databricks ou a um Warehouse SQL por meio do seu computador de desenvolvimento local. Você também pode usar seu navegador da Web para entrar no workspace do Azure Databricks e, em seguida, conectar-se a um cluster do Azure Databricks que tenha o RStudio Server instalado nesse workspace.

Conectar-se usando o RStudio Desktop

Use o RStudio Desktop para se conectar a um cluster remoto do Azure Databricks ou a um Warehouse SQL por meio do seu computador de desenvolvimento local. Para se conectar nesse cenário, use uma conexão ODBC e chame funções de pacote do ODBC para R, que estão descritas nesta seção.

Observação

Você não pode usar pacotes como SparkR ou sparklyr neste cenário do RStudio Desktop, a menos que você também use o Databricks Connect. Como alternativa ao uso do RStudio Desktop, você pode usar seu navegador da Web para entrar no workspace do Azure Databricks e, em seguida, conectar-se a um cluster do Azure Databricks que tenha o RStudio Server instalado nesse workspace.

Para configurar o RStudio Desktop em seu computador de desenvolvimento local:

  1. Baixe e instale o R 3.3.0 ou superior.
  2. Baixe e instale o RStudio Desktop.
  3. Inicie o RStudio Desktop.

(Opcional) Para criar um projeto do RStudio:

  1. Inicie o RStudio Desktop.
  2. Clique em Arquivo > Novo projeto.
  3. Selecione Novo diretório > Novo projeto.
  4. Escolha um novo diretório para o projeto e clique em Criar projeto.

Para criar um script R:

  1. Com o projeto aberto, clique em Arquivo > Novo arquivo > Script R.
  2. Clique em Arquivo > Salvar como.
  3. Nomeie o arquivo e, em seguida, clique em Salvar.

Para se conectar ao cluster remoto do Azure Databricks ou ao SQL Warehouse por meio do ODBC para R:

  1. Obtenha os valores do Nome do host do servidor, da Porta e do caminho HTTP para o cluster remoto ou o SQL Warehouse. Para um cluster, esses valores estão na guia JDBC/ODBC de Opções avançadas. Para um SQL Warehouse, esses valores estão na guia Detalhes da conexão.

  2. Obtenha um token de acesso pessoal do Azure Databricks.

    Observação

    Como melhor prática de segurança, ao autenticar com ferramentas, sistemas, scripts e aplicativos automatizados, o Databricks recomenda que você use tokens de acesso pertencentes às entidades de serviço e não aos usuários do workspace. Para criar tokens para entidades de serviço, consulte Gerenciar tokens para uma entidade de serviço.

  3. Instale e configure o driver ODBC do Databricks para Windows, macOS ou Linux, com base no sistema operacional do computador local.

  4. Configure um DSN (Nome da Fonte de Dados) do ODBC para o cluster remoto ou o SQL Warehouse para Windows, macOS ou Linux, com base no sistema operacional do computador local.

  5. No console do RStudio (Exibir > Mover Foco para o Console), instale os pacotes odbc e DBI do CRAN:

    require(devtools)
    
    install_version(
      package = "odbc",
      repos   = "http://cran.us.r-project.org"
    )
    
    install_version(
      package = "DBI",
      repos   = "http://cran.us.r-project.org"
    )
    
  6. De volta ao script R (Exibir > Mover o foco para a origem), carregue os pacotes odbc e DBI instalados:

    library(odbc)
    library(DBI)
    
  7. Chame a versão ODBC da função dbConnect no pacote DBI, especificando o driver odbc no pacote odbc, bem como o DSN do ODBC criado, por exemplo, um DSN do ODBC de Databricks.

    conn = dbConnect(
      drv = odbc(),
      dsn = "Databricks"
    )
    
  8. Chame uma operação por meio do DSN do ODBC, por exemplo, uma instrução SELECT por meio da função dbGetQuery no pacote DBI, especificando o nome da variável de conexão e a própria instrução SELECT, por exemplo, de uma tabela denominada diamonds em um esquema (banco de dados) chamado de default:

    print(dbGetQuery(conn, "SELECT * FROM default.diamonds LIMIT 2"))
    

O script R completo é o seguinte:

library(odbc)
library(DBI)

conn = dbConnect(
  drv = odbc(),
  dsn = "Databricks"
)

print(dbGetQuery(conn, "SELECT * FROM default.diamonds LIMIT 2"))

Para executar o script na exibição de origem, clique em Origem. Os resultados do script R anterior são os seguintes:

  _c0 carat     cut color clarity depth table price    x    y    z
1   1  0.23   Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2   2  0.21 Premium     E     SI1  59.8    61   326 3.89 3.84 2.31

Conectar-se usando o RStudio Server

Use seu navegador da Web para entrar no workspace do Azure Databricks e conecte-se a um cluster do Azure Databricks que tenha o RStudio Server instalado no workspace.

Observação

Como alternativa ao RStudio Server, é possível usar o RStudio Desktop para se conectar a um cluster do Azure Databricks ou a um Warehouse SQL por meio do seu computador de desenvolvimento local usando uma conexão ODBC e chamando funções de pacote ODBC para R. Não é possível usar pacotes como SparkR ou sparklyr no cenário do RStudio Desktop, a menos que você também use o Databricks Connect.

Para o RStudio Server, você pode usar o Open Source Edition ou RStudio Workbench (anteriormente RStudio Server Pro) no Azure Databricks. Para usar o RStudio Workbench/RStudio Server Pro, transfira sua licença existente do RStudio Workbench/RStudio Server Pro para o Azure Databricks (confira Introdução: RStudio Workbench).

O Databricks recomenda o uso do Databricks Runtime para Machine Learning (Databricks Runtime ML) em clusters do Azure Databricks com o RStudio Server para reduzir os tempos de início do cluster. O Databricks Runtime ML inclui uma versão não modificada do pacote RStudio Server Open Source Edition, para o qual o código-fonte pode ser encontrado no GitHub. A tabela a seguir lista a versão do RStudio Server Open Source Edition atualmente pré-instalada em versões do Databricks Runtime ML.

Versão do Databricks Runtime para ML Versão do RStudio Server
Databricks Runtime 9.1 LTS ML e 10.4 LTS ML 1.4

Arquitetura de integração do RStudio

Quando você usa o servidor RStudio no Azure Databricks, o daemon do RStudio Server é executado no nó de driver de um cluster do Azure Databricks. A interface do usuário da Web do RStudio é transmitida por proxy no aplicativo web do Azure Databricks, o que significa que você não precisa fazer nenhuma alteração na configuração de rede do cluster. Este diagrama demonstra a arquitetura do componente de integração do RStudio.

Arquitetura do RStudio no Databricks

Aviso

O Azure Databricks executa proxy do serviço web do RStudio a partir da porta 8787 no driver do Spark do cluster. Esse proxy Web destina-se a uso exclusivo com o RStudio. Se você iniciar outros serviços Web na porta 8787, poderá expor seus usuários a possíveis explorações de segurança. Nem a Databricks nem a Microsoft são responsáveis por qualquer problema resultante da instalação de software sem suporte em um cluster.

Requisitos

  • O cluster deve ser um cluster para todas as finalidades.

  • Você deve ter permissão PODE ANEXAR A para esse cluster. O administrador do cluster pode conceder essa permissão. Consulte Permissões de computação.

  • O cluster não deve ter controle de acesso de tabela, terminação automática ou passagem de credencial habilitados.

  • O cluster não deve usar o modo de acessoCompartilhado.

  • O cluster não deve ter a configuração spark.databricks.pyspark.enableProcessIsolation do Spark definida como true.

  • Para usar a edição Pro, você deve ter uma licença flutuante do RStudio Server Pro.

Observação

Embora o cluster possa usar um modo de acesso que forneça suporte ao Catálogo do Unity, você não pode usar o RStudio Server desse cluster para acessar dados no Catálogo do Unity.

Introdução: RStudio Server OS Edition

O RStudio Server Open Source Edition é pré-instalado em clusters do Azure Databricks que usam o Databricks Runtime para Machine Learning (Databricks Runtime ML).

Para abrir o RStudio Server OS Edition em um cluster, faça o seguinte:

  1. Abra a página de detalhes do cluster.

  2. Inicie o cluster e clique na guia Aplicativos:

    Guia Aplicativos do cluster

  3. Na guia Aplicativos, clique no botão Configurar RStudio. Isso gera uma senha de uso único para você. Clique no link Mostrar para exibi-la e copie a senha.

    Senha de uso único do RStudio

  4. Clique no link Abrir RStudio para abrir a interface do usuário em uma nova guia. Insira seu nome de usuário e senha no formulário de logon e entre.

    Formulário de logon do RStudio

  5. Na interface do usuário do RStudio, você pode importar o pacote SparkR e configurar uma sessão SparkR para iniciar trabalhos do Spark no cluster.

    library(SparkR)
    
    sparkR.session()
    
    # Query the first two rows of a table named "diamonds" in a
    # schema (database) named "default" and display the query result.
    df <- SparkR::sql("SELECT * FROM default.diamonds LIMIT 2")
    showDF(df)
    

    Sessão do RStudio Open Source Edition

  6. Você também pode anexar o pacote sparklyr e configurar uma conexão do Spark.

    library(sparklyr)
    
    sc <- spark_connect(method = "databricks")
    
    # Query a table named "diamonds" and display the first two rows.
    df <- spark_read_table(sc = sc, name = "diamonds")
    print(x = df, n = 2)
    

    Conexão sparklyr do RStudio Open Source Edition

Introdução: RStudio Workbench

Esta seção mostra como configurar e começar a usar o RStudio Workbench (anteriormente RStudio Server Pro) em um cluster do Azure Databricks. Confira uma Pergunta frequente sobre a alteração de nome. Dependendo de sua licença, RStudio Workbench pode incluir o RStudio Server Pro.

Configurar o servidor de licença do RStudio

Para usar o RStudio Workbench no Azure Databricks, você precisa converter sua licença do Pro em uma licença flutuante. Para obter assistência, entre em contato com help@rstudio.com. Depois que sua licença for convertida, você deverá configurar um servidor de licença para o RStudio Workbench.

Para configurar um servidor de licença:

  1. Inicie uma instância pequena em sua rede do provedor de nuvem; o daemon do servidor de licenças é bem leve.
  2. Baixe e instale a versão correspondente do servidor de licença do RStudio em sua instância e inicie o serviço. Para obter instruções detalhadas, confira o Guia de Administração do RStudio Workbench.
  3. Verifique se a porta do servidor de licença está aberta para as instâncias do Azure Databricks.

Instalar o RStudio Workbench

Para configurar o RStudio Workbench em um cluster do Azure Databricks, você precisa criar um script de inicialização para instalar o pacote binário do RStudio Workbench e configurá-lo para usar o seu servidor de licença para concessão da licença.

Observação

Se você planeja instalar o RStudio Workbench em uma versão do Databricks Runtime que já inclui o pacote do RStudio Server Open Source Edition, primeiro você precisa desinstalar o pacote para que a instalação tenha sucesso.

Veja a seguir um arquivo .sh de exemplo que você pode armazenar como um script de inicialização em um local, como em seu diretório inicial como um arquivo de workspace, em um volume do Unity Catalog ou no armazenamento de objetos. Para obter mais informações, consulte Scripts de inicialização com escopo de cluster. O script também executa configurações de autenticação adicionais que simplificam a integração com o Azure Databricks.

Aviso

Os scripts de inicialização no escopo do cluster no DBFS atingiram o fim do ciclo de vida. O armazenamento de scripts de inicialização no DBFS existe em alguns workspaces para dar suporte a cargas de trabalho herdadas e não é recomendado. Todos os scripts de inicialização armazenados no DBFS devem ser migrados. Para obter instruções de migração, consulte Migrar scripts de inicialização do DBFS.

#!/bin/bash

set -euxo pipefail

if [[ $DB_IS_DRIVER = "TRUE" ]]; then
  sudo apt-get update
  sudo dpkg --purge rstudio-server # in case open source version is installed.
  sudo apt-get install -y gdebi-core alien

  ## Installing RStudio Workbench
  cd /tmp

  # You can find new releases at https://rstudio.com/products/rstudio/download-commercial/debian-ubuntu/.
  wget https://download2.rstudio.org/server/bionic/amd64/rstudio-workbench-2022.02.1-461.pro1-amd64.deb -O rstudio-workbench.deb
  sudo gdebi -n rstudio-workbench.deb

  ## Configuring authentication
  sudo echo 'auth-proxy=1' >> /etc/rstudio/rserver.conf
  sudo echo 'auth-proxy-user-header-rewrite=^(.*)$ $1' >> /etc/rstudio/rserver.conf
  sudo echo 'auth-proxy-sign-in-url=<domain>/login.html' >> /etc/rstudio/rserver.conf
  sudo echo 'admin-enabled=1' >> /etc/rstudio/rserver.conf
  sudo echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> /etc/rstudio/rsession-profile

  # Enabling floating license
  sudo echo 'server-license-type=remote' >> /etc/rstudio/rserver.conf

  # Session configurations
  sudo echo 'session-rprofile-on-resume-default=1' >> /etc/rstudio/rsession.conf
  sudo echo 'allow-terminal-websockets=0' >> /etc/rstudio/rsession.conf

  sudo rstudio-server license-manager license-server <license-server-url>
  sudo rstudio-server restart || true
fi
  1. Substitua <domain> pela URL do Azure Databricks e <license-server-url> pela URL do servidor de licença flutuante.
  2. Armazene esse arquivo .sh como um script de inicialização em um local, como em seu diretório inicial como um arquivo de workspace, em um volume do Unity Catalog ou no armazenamento de objetos. Para obter mais informações, consulte Scripts de inicialização com escopo de cluster.
  3. Antes de iniciar um cluster, adicione esse arquivo .sh como um script de inicialização do local associado. Para obter instruções, consulte Usar scripts de inicialização com escopo de cluster.
  4. Inicialize o cluster.

Usar o RStudio Server Pro

  1. Abra a página de detalhes do cluster.

  2. Inicie o cluster e clique na guia Aplicativos:

    Guia Aplicativos do cluster

  3. Na guia Aplicativos, clique no botão Configurar RStudio.

    Senha de uso único do RStudio

  4. Você não precisa da senha de uso único. Clique no link Abrir interface do usuário do RStudio e será aberta uma sessão autenticada do RStudio Pro para você.

  5. Na interface do usuário do RStudio, você pode importar o pacote SparkR e configurar uma sessão SparkR para iniciar trabalhos do Spark no cluster.

    library(SparkR)
    
    sparkR.session()
    
    # Query the first two rows of a table named "diamonds" in a
    # schema (database) named "default" and display the query result.
    df <- SparkR::sql("SELECT * FROM default.diamonds LIMIT 2")
    showDF(df)
    

    Sessão do RStudio Pro

  6. Você também pode anexar o pacote sparklyr e configurar uma conexão do Spark.

    library(sparklyr)
    
    sc <- spark_connect(method = "databricks")
    
    # Query a table named "diamonds" and display the first two rows.
    df <- spark_read_table(sc = sc, name = "diamonds")
    print(x = df, n = 2)
    

    Conexão sparklyr do RStudio Pro

Perguntas frequentes sobre o RStudio Server

Qual é a diferença entre o RStudio Server Open Source Edition e o RStudio Workbench?

O RStudio Workbench dá suporte a uma ampla gama de recursos corporativos que não estão disponíveis no Open Source Edition. Você pode ver uma comparação de recursos no site da RStudio.

Além disso, o RStudio Server Open Source Edition é distribuído na AGPL (licença pública geral) do GNU Affero, enquanto a versão Pro vem com uma licença comercial para organizações que não podem usar software AGPL.

Por fim, o RStudio Workbench tem suporte profissional e empresarial da RStudio, PBC, enquanto o RStudio Server Open Source Edition é fornecido sem suporte.

Posso usar minha licença do RStudio Workbench/RStudio Server Pro no Azure Databricks?

Sim, se você já tiver uma licença Pro ou empresarial do RStudio Server, você poderá usar essa licença no Azure Databricks. Confira Introdução: RStudio Workbench para saber como configurar o RStudio Workbench no Azure Databricks.

Onde o RStudio Server é executado? Preciso gerenciar algum serviço/servidor adicional?

Como você pode ver no diagrama na Arquitetura de integração do RStudio, o daemon do RStudio Server é executado no nó do driver (mestre) do cluster do Azure Databricks. Com o RStudio Server Open Source Edition, você não precisa executar nenhum servidor/serviço adicional. No entanto, no caso do RStudio Workbench, você precisa gerenciar uma instância separada que executa o servidor de licença do RStudio.

Posso usar o RStudio Server em um cluster padrão?

Observação

Este artigo descreve a interface do usuário dos clusters herdados. Para obter informações sobre a nova interface do usuário dos clusters (em versão prévia), incluindo alterações na terminologia para os modos de acesso ao cluster, confira Referência de configuração de computação. Para obter uma comparação dos tipos de cluster novos e herdados, consulte Alterações na interface do usuário dos clusters e modos de acesso do cluster.

Sim, pode.

Posso usar o RStudio Server em um cluster com encerramento automático?

Não, você não pode usar o RStudio quando o encerramento automático estiver habilitado. O encerramento automático pode limpar scripts e dados de usuário não salvos em uma sessão do RStudio. Para proteger os usuários contra esse cenário de perda de dados não intencional, o RStudio é desabilitado nesses clusters por padrão.

Para clientes que exigem a limpeza de recursos de cluster quando não são usados, o Databricks recomenda o uso de APIs de cluster para limpar clusters RStudio com base em agendamentos.

Como devo persistir meu trabalho no RStudio?

É fortemente recomendável que você persista seu trabalho usando um sistema de controle de versão do RStudio. O RStudio tem excelente suporte para vários sistemas de controle de versão e permite que você verifique e gerencie seus projetos. Se você não persistir seu código por meio de um dos métodos a seguir, correrá o risco de perder seu trabalho se um administrador de workspace reiniciar ou encerrar o cluster.

Um método é salvar seus arquivos (códigos ou dados) no O que é o DBFS (Databricks File System)?. Por exemplo, se você salvar um arquivo em /dbfs/, os arquivos não serão excluídos quando o cluster for encerrado ou reiniciado.

Outro método é salvar o notebook R em seu sistema de arquivos local exportando-o como Rmarkdown e, em seguida, importar o arquivo para a instância do RStudio. A postagem de blog Compartilhamento de notebooks R usando RMarkdown descreve as etapas mais detalhadamente.

Como iniciar uma sessão SparkR?

SparkR está contido no Databricks Runtime, mas você deve carregá-lo no RStudio. Execute o código a seguir no RStudio para inicializar uma sessão SparkR.

library(SparkR)

sparkR.session()

Se houver um erro ao importar o pacote SparkR, execute .libPaths() e verifique se /home/ubuntu/databricks/spark/R/lib está incluído no resultado.

Se ele não estiver incluído, verifique o conteúdo de /usr/lib/R/etc/Rprofile.site. Liste /home/ubuntu/databricks/spark/R/lib/SparkR no driver para verificar se o pacote SparkR está instalado.

Como iniciar uma sessão sparklyr?

O pacote sparklyr deve estar instalado no cluster. Use um dos métodos a seguir para instalar o pacote sparklyr:

  • Como biblioteca do Azure Databricks
  • Comando install.packages()
  • Interface do usuário de gerenciamento de pacotes RStudio
library(sparklyr)

sc <- spark_connect(method = “databricks”)

Como o RStudio se integra aos notebooks R do Azure Databricks?

Você pode mover seu trabalho entre os notebooks e o RStudio por meio do controle de versão.

O que é o diretório de trabalho?

Ao iniciar um projeto no RStudio, você escolhe um diretório de trabalho. Por padrão, esse é o diretório base no contêiner do driver (mestre) onde o RStudio Server está em execução. Você pode alterar esse diretório se desejar.

Posso iniciar os Aplicativos Shiny a partir do RStudio em execução no Azure Databricks?

Sim, você pode desenvolver e exibir Aplicativos Shiny dentro do RStudio Server no Databricks.

Não consigo usar o terminal nem o git dentro do RStudio no Azure Databricks. Como corrigir isso?

Certifique-se de ter desabilitado websockets. No RStudio Server Open Source Edition, você pode fazer isso na interface do usuário.

Sessão do RStudio

No RStudio Server Pro, você pode adicionar allow-terminal-websockets=0 a /etc/rstudio/rsession.conf para desabilitar websockets para todos os usuários.

Não vejo a guia Aplicativos nos detalhes do cluster.

Esse recurso não está disponível para todos os clientes. Você precisa estar no plano Premium.