RStudio on Azure Databricks (RStudio no Azure Databricks)

Você pode usar o RStudio, um ambiente de desenvolvimento integrado (IDE) popular para R, para se conectar aos recursos de computação do Azure Databricks nos espaços de trabalho do Azure Databricks. Use o RStudio Desktop para se conectar a um cluster do Azure Databricks ou a um armazém SQL a partir de sua máquina de desenvolvimento local. Você também pode usar seu navegador da Web para entrar em seu espaço de trabalho do Azure Databricks e, em seguida, conectar-se a um cluster do Azure Databricks que tenha o Servidor RStudio instalado , dentro desse espaço de trabalho.

Ligar utilizando o RStudio Desktop

Use o RStudio Desktop para se conectar a um cluster remoto do Azure Databricks ou a um armazém SQL a partir de sua máquina de desenvolvimento local. Para se conectar nesse cenário, use uma conexão ODBC e chame funções de pacote ODBC para R, que são descritas nesta seção.

Nota

Não é possível 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 espaço de trabalho do Azure Databricks e, em seguida, conectar-se a um cluster do Azure Databricks que tenha o Servidor RStudio instalado nesse espaço de trabalho.

Para configurar o RStudio Desktop na sua máquina de desenvolvimento local:

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

(Opcional) Para criar um projeto 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 File New File > R Script>.
  2. Clique em Arquivo > Salvar como.
  3. Nomeie o arquivo e clique em Salvar.

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

  1. Obtenha os valores Nome do host do servidor, Porta e caminho HTTP para seu cluster remoto ou 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.

    Nota

    Como prática recomendada de segurança, quando você se autentica com ferramentas, sistemas, scripts e aplicativos automatizados, o Databricks recomenda que você use tokens de acesso pessoal pertencentes a entidades de serviço em vez de usuários do espaço de trabalho. Para criar tokens para entidades de serviço, consulte Gerenciar tokens para uma entidade de serviço.

  3. Instale e configure o driver ODBC Databricks para Windows, macOS ou Linux, com base no sistema operacional da sua máquina local.

  4. Configure um Nome da Fonte de Dados (DSN) ODBC para seu cluster remoto ou armazém SQL para Windows, macOS ou Linux, com base no sistema operacional da sua máquina local.

  5. A partir do console RStudio (View > Move Focus to 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 seu script R (View > Move Focus to Source), carregue o instalado odbc e DBI os pacotes:

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

    conn = dbConnect(
      drv = odbc(),
      dsn = "Databricks"
    )
    
  8. Chame uma operação através do DSN ODBC, por exemplo, uma SELECT instrução através da função dbGetQuery no DBI pacote, especificando o nome da variável de conexão e a SELECT instrução em si, por exemplo, a partir de uma tabela nomeada diamonds em um esquema (banco de dados) chamado 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 visualização de código-fonte, clique em Origem. Os resultados para o 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

Conecte-se usando o RStudio Server

Use seu navegador da Web para entrar em seu espaço de trabalho do Azure Databricks e, em seguida, conectar-se a um cluster do Azure Databricks que tenha o Servidor RStudio instalado , dentro desse espaço de trabalho.

Nota

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

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

O Databricks recomenda que você use o Databricks Runtime for 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 que está atualmente pré-instalada nas versões do Databricks Runtime ML.

Tempo de execução do Databricks para a versão ML Versão do Servidor RStudio
Databricks Runtime 9.1 LTS ML e 10.4 LTS ML 1.4

Arquitetura de integração RStudio

Quando você usa o Servidor RStudio no Azure Databricks, o Daemon do Servidor RStudio é executado no nó do driver de um cluster do Azure Databricks. A interface do usuário da Web do RStudio é intermediada por proxy por meio do aplicativo Web Azure Databricks, o que significa que você não precisa fazer alterações na configuração da rede do cluster. Este diagrama demonstra a arquitetura do componente de integração RStudio.

Arquitetura de RStudio em Databricks

Aviso

O Azure Databricks faz proxy do serviço Web RStudio da porta 8787 no driver Spark do cluster. Este proxy web destina-se a ser usado apenas com 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 quaisquer problemas resultantes da instalação de software não suportado num cluster.

Requisitos

  • O cluster deve ser um cluster polivalente.

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

  • O cluster não deve ter o controle de acesso à tabela, o encerramento automático ou a passagem de credenciais habilitados.

  • O cluster não deve usar o modo de acesso compartilhado.

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

  • Você deve ter uma licença RStudio Server flutuante Pro para usar a edição Pro.

Nota

Embora o cluster possa usar um modo de acesso que suporte o Unity Catalog, você não pode usar o RStudio Server desse cluster para acessar dados no Unity Catalog.

Introdução: RStudio Server OS Edition

O RStudio Server Open Source Edition está pré-instalado em clusters do Azure Databricks que usam o Databricks Runtime for 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 de Cluster

  3. Na guia Aplicativos, clique no botão Configurar RStudio. Isso gera uma senha única para você. Clique no link show para exibi-lo e copiar a senha.

    Senha única RStudio

  4. Clique no link Abrir RStudio para abrir a interface do usuário em uma nova guia. Introduza o seu nome de utilizador e palavra-passe no formulário de início de sessão e inicie sessão.

    Formulário de login RStudio

  5. A partir da interface do usuário do RStudio, você pode importar o SparkR pacote e configurar uma SparkR sessão para iniciar trabalhos do Spark em seu 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 RStudio Open Source Edition

  6. Você também pode anexar o pacote sparklyr e configurar uma conexão 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 RStudio Open Source Edition sparklyr

Primeiros passos: 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. Consulte as perguntas frequentes sobre a alteração do nome. Dependendo da sua licença, o RStudio Workbench pode incluir o RStudio Server Pro.

Configurar o servidor de licenças RStudio

Para usar o RStudio Workbench no Azure Databricks, você precisa converter sua Licença Pro em uma licença flutuante. Para obter assistência, entre em contato com help@rstudio.com. Quando sua licença é convertida, você deve configurar um servidor de licenças para o RStudio Workbench.

Para configurar um servidor de licenças:

  1. Inicie uma pequena instância na rede do seu provedor de nuvem; O daemon do servidor de licenças é muito leve.
  2. Transfira e instale a versão correspondente do RStudio License Server na sua instância e inicie o serviço. Para obter instruções detalhadas, consulte o Guia de administração do RStudio Workbench.
  3. Verifique se a porta do servidor de licenças está aberta para instâncias do Azure Databricks.

Instalar o RStudio Workbench

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

Nota

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

A seguir está um arquivo de exemplo .sh que você pode armazenar como um script de inicialização em um local, como em seu diretório pessoal como um arquivo de espaço de trabalho, em um volume do Catálogo Unity ou no armazenamento de objetos. Para obter mais informações, consulte Usar 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 com escopo de cluster no DBFS estão em fim de vida. O armazenamento de scripts de inicialização no DBFS existe em alguns espaços de trabalho para dar suporte a cargas de trabalho herdadas e não é recomendado. Todos os scripts init armazenados no DBFS devem ser migrados. Para obter instruções de migração, consulte Migrar scripts init 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 seu servidor de licenças flutuante.
  2. Armazene esse .sh arquivo como um script de inicialização em um local, como em seu diretório pessoal como um arquivo de espaço de trabalho, em um volume do Catálogo Unity ou no armazenamento de objetos. Para obter mais informações, consulte Usar scripts de inicialização com escopo de cluster.
  3. Antes de iniciar um cluster, adicione esse .sh arquivo como um script de inicialização do local associado. Para obter instruções, consulte Usar scripts de inicialização com escopo de cluster.
  4. Inicie 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 de Cluster

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

    Senha única RStudio

  4. Você não precisa da senha de uso único. Clique no link Abrir RStudio UI e ele abrirá uma sessão autenticada do RStudio Pro para você.

  5. Na interface do usuário do RStudio, você pode anexar o SparkR pacote e configurar uma SparkR sessão para iniciar trabalhos do Spark em seu 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 RStudio Pro

  6. Você também pode anexar o pacote sparklyr e configurar uma conexão 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 RStudio Pro sparklyr

Perguntas frequentes sobre o RStudio Server

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

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

Além disso, o RStudio Server Open Source Edition é distribuído sob a GNU Affero General Public License (AGPL), enquanto a versão Pro vem com uma licença comercial para organizações que não são capazes de usar o software AGPL.

Finalmente, o RStudio Workbench vem com suporte profissional e empresarial do RStudio, PBC, enquanto o RStudio Server Open Source Edition vem sem suporte.

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

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

Onde o RStudio Server é executado? Preciso de gerir serviços/servidores adicionais?

Como você pode ver no diagrama na arquitetura de integração do RStudio, o daemon do Servidor RStudio é executado no nó do driver (mestre) do cluster do Azure Databricks. Com o RStudio Server Open Source Edition, não é necessário executar servidores/serviços adicionais. No entanto, para o RStudio Workbench, você deve gerenciar uma instância separada que execute o RStudio License Server.

Posso utilizar o RStudio Server num cluster padrão?

Nota

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

Sim, pode.

Posso usar o RStudio Server em um cluster com terminação automática?

Não, não pode utilizar o RStudio quando a terminação automática está ativada. A terminação automática pode limpar scripts de usuário não salvos e dados dentro de uma sessão RStudio. Para proteger os usuários contra esse cenário de perda de dados não intencional, o RStudio é desativado nesses clusters por padrão.

Para clientes que precisam limpar recursos de cluster quando eles não são usados, o Databricks recomenda o uso de APIs de cluster para limpar clusters RStudio com base em uma programação.

Como devo manter o meu trabalho no RStudio?

Recomendamos vivamente que persista o seu trabalho utilizando um sistema de controlo de versão da RStudio. O RStudio tem um ótimo suporte para vários sistemas de controle de versão e permite que você faça check-in e gerencie seus projetos. Se você não persistir seu código por meio de um dos seguintes métodos, corre o risco de perder seu trabalho se um administrador de espaço de trabalho reiniciar ou encerrar o cluster.

Um método é salvar seus arquivos (código ou dados) no O que é o sistema de arquivos Databricks (DBFS)?. Por exemplo, se você salvar um arquivo sob /dbfs/ os arquivos não será excluído quando o cluster for encerrado ou reiniciado.

Outro método é salvar o bloco de anotações R em seu sistema de arquivos local exportando-o como Rmarkdowne, posteriormente, importando o arquivo para a instância do RStudio. O blog Sharing R Notebooks using RMarkdown descreve as etapas com mais detalhes.

Como posso iniciar uma SparkR sessão?

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

library(SparkR)

sparkR.session()

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

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

Como posso iniciar uma sparklyr sessão?

O sparklyr pacote deve ser instalado no cluster. Use um dos seguintes métodos para instalar o sparklyr pacote:

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

sc <- spark_connect(method = “databricks”)

Como é que o RStudio se integra nos blocos de notas do Azure Databricks R?

Você pode mover seu trabalho entre notebooks e RStudio através do controle de versão.

O que é o diretório de trabalho?

Quando você inicia um projeto no RStudio, você escolhe um diretório de trabalho. Por padrão, este é o diretório base no contêiner de driver (mestre) onde o RStudio Server está sendo executado. Você pode alterar esse diretório se desejar.

Posso iniciar Shiny Apps do RStudio em execução no Azure Databricks?

Sim, você pode desenvolver e visualizar aplicativos Shiny dentro do RStudio Server no Databricks.

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

Certifique-se de que desativou os websockets. No RStudio Server Open Source Edition, você pode fazer isso a partir da interface do usuário.

Sessão RStudio

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

Não vejo o separador Aplicações em detalhes do cluster.

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