RStudio in Azure Databricks

È possibile usare RStudio, un ambiente di sviluppo integrato (IDE) diffuso per R, per connettersi alle risorse di calcolo di Azure Databricks all'interno delle aree di lavoro di Azure Databricks. È possibile usare RStudio Desktop per connettersi a un cluster Azure Databricks o a un sql warehouse dal computer di sviluppo locale. È anche possibile usare il Web browser per accedere all'area di lavoro di Azure Databricks e quindi connettersi a un cluster Azure Databricks in cui È installato RStudio Server , all'interno di tale area di lavoro.

RStudio Desktop

È possibile usare RStudio Desktop per connettersi a un cluster Azure Databricks remoto o a SQL Warehouse dal computer di sviluppo locale. Per connettersi in questo scenario, è possibile usare una connessione ODBC e chiamare le funzioni del pacchetto ODBC per R, descritte in questa sezione.

Nota

Non è possibile usare pacchetti come SparkR o sparklyr in questo scenario di RStudio Desktop, a meno che non si usi anche Databricks Connect. In alternativa all'uso di RStudio Desktop, è possibile usare il Web browser per accedere all'area di lavoro di Azure Databricks e quindi connettersi a un cluster Azure Databricks in cui È installato RStudio Server in tale area di lavoro.

Per configurare RStudio Desktop nel computer di sviluppo locale:

  1. Scaricare e installare R 3.3.0 o versione successiva.
  2. Scaricare e installare RStudio Desktop.
  3. Avviare RStudio Desktop.

(Facoltativo) Per creare un progetto RStudio:

  1. Avviare RStudio Desktop.
  2. Fare clic su File > Nuovo progetto.
  3. Selezionare Nuova directory > Nuovo progetto.
  4. Scegliere una nuova directory per il progetto e quindi fare clic su Crea progetto.

Per creare uno script R:

  1. Con il progetto aperto, fare clic su File > Nuovo script R file>.
  2. Fare clic su Salva > file con nome.
  3. Denominare il file e quindi fare clic su Salva.

Per connettersi al cluster Azure Databricks remoto o a SQL Warehouse tramite ODBC per R:

  1. Ottenere i valori nome host del server, porta e percorso HTTP per il cluster remoto o SQL Warehouse. Per un cluster, questi valori si trovano nella scheda JDBC/ODBC di Opzioni avanzate. Per un'istanza di SQL Warehouse, questi valori si trovano nella scheda Dettagli connessione .

  2. Ottenere un token di accesso personale di Azure Databricks.

    Nota

    Come procedura consigliata per la sicurezza, quando si esegue l'autenticazione con strumenti automatizzati, sistemi, script e app, Databricks consiglia di usare i token di accesso appartenenti alle entità servizio anziché agli utenti dell'area di lavoro. Per altre informazioni, vedere Entità servizio per l'automazione di Azure Databricks.

  3. Installare e configurare il driver ODBC di Databricks per Windows, macOS o Linux, in base al sistema operativo del computer locale.

  4. Configurare un nome origine dati ODBC (DSN) nel cluster remoto o in SQL Warehouse per Windows, macOS o Linux, in base al sistema operativo del computer locale.

  5. Dalla console di RStudio (Visualizza > Sposta stato attivo nella console), installare i pacchetti odbc e DBI da CRAN. Nell'esempio seguente viene utilizzato lo snapshot CRAN datato 2022-02-24:

    install.packages(c("odbc", "DBI"), repos = "https://cran.microsoft.com/snapshot/2022-02-24/")
    
  6. Tornare allo script R (Visualizza > Sposta stato attivo sull'origine), caricare i pacchetti e installati odbcDBI :

    library(odbc)
    library(DBI)
    
  7. Chiamare la versione ODBC della funzione dbConnect nel DBI pacchetto, specificando il odbc driver nel odbc pacchetto e il DSN ODBC creato, ad esempio un DSN ODBC di Databricks.

    conn = dbConnect(
      drv = odbc(),
      dsn = "Databricks"
    )
    
  8. Chiamare un'operazione tramite il DSN ODBC, ad esempio un'istruzione SELECT tramite la funzione dbGetQuery nel DBI pacchetto, specificando il nome della variabile di connessione e l'istruzione SELECT stessa, ad esempio da una tabella denominata diamonds in uno schema (database) denominato default:

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

Lo script R completo è il seguente:

library(odbc)
library(DBI)

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

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

Per eseguire lo script, nella visualizzazione origine fare clic su Origine. I risultati dello script R precedente sono i seguenti:

  _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

RStudio Server

È possibile usare il Web browser per accedere all'area di lavoro di Azure Databricks e quindi connettersi a un cluster Azure Databricks in cui È installato RStudio Server all'interno dell'area di lavoro.

Nota

In alternativa a RStudio Server, è possibile usare RStudio Desktop per connettersi a un cluster Azure Databricks o a SQL Warehouse dal computer di sviluppo locale tramite una connessione ODBC e chiamare le funzioni del pacchetto ODBC per R. Non è possibile usare pacchetti come SparkR o sparklyr nello scenario RStudio Desktop, a meno che non si usi anche Databricks Connect.

Per RStudio Server, è possibile usare l'edizione Open Source o RStudio Workbench (in precedenza RStudio Server Pro) in Azure Databricks. Se si vuole usare RStudio Workbench/RStudio Server Pro, è necessario trasferire la licenza RStudio Workbench/RStudio Server Pro esistente ad Azure Databricks (vedere Introduzione a RStudio Workbench (in precedenza RStudio Server Pro)).

Databricks consiglia di usare Databricks Runtime per Machine Learning (Databricks Runtime ML) nei cluster Azure Databricks con RStudio Server, per ridurre i tempi di avvio del cluster. Databricks Runtime ML include una versione non modificata del pacchetto RStudio Server Open Source Edition per cui il codice sorgente è disponibile in GitHub. La tabella seguente elenca la versione di RStudio Server Open Source Edition attualmente preinstallata nelle versioni di Databricks Runtime ML.

Versione di Databricks Runtime per ML Versione di RStudio Server
Databricks Runtime 7.3 LTS ML 1.2
Databricks Runtime 9.1 LTS ML e 10.4 LTS ML 1.4

Architettura di integrazione di RStudio

Quando si usa RStudio Server in Azure Databricks, il daemon RStudio Server viene eseguito nel nodo driver di un cluster Azure Databricks. L'interfaccia utente Web di RStudio viene inoltrata tramite proxy tramite l'app Web di Azure Databricks, il che significa che non è necessario apportare modifiche alla configurazione di rete del cluster. Questo diagramma illustra l'architettura del componente di integrazione RStudio.

Architettura di RStudio in Databricks

Avviso

Azure Databricks esegue il proxy del servizio Web RStudio dalla porta 8787 nel driver Spark del cluster. Questo proxy Web è destinato all'uso solo con RStudio. Se si avviano altri servizi Web sulla porta 8787, è possibile esporre gli utenti a potenziali exploit di sicurezza. Né Databricks né Microsoft sono responsabili di eventuali problemi derivanti dall'installazione di software non supportato in un cluster.

Requisiti

Introduzione a RStudio Server Open Source Edition

Importante

Se si usa Databricks Runtime 7.0 ML o versione successiva, RStudio Server Open Source Edition è già installato. È possibile ignorare la sezione sull'installazione di RStudio Server e passare direttamente a Usare RStudio Server Open Source Edition.

Per iniziare a usare RStudio Server Open Source Edition in Azure Databricks, è necessario installare RStudio in un cluster Azure Databricks. È necessario eseguire questa installazione una sola volta. L'installazione viene in genere eseguita da un amministratore.

Installare RStudio Server Open Source Edition

Per configurare RStudio Server Open Source Edition in un cluster di Azure Databricks che usa Databricks Runtime 6.6 ML o versione successiva, è necessario creare uno script init per installare il pacchetto binario RStudio Server Open Source Edition. Per altre informazioni, vedere Script init con ambito cluster. Di seguito è riportato un esempio di cella del notebook che installa uno script init in un percorso in DBFS.

Importante

  • Tutti gli utenti hanno accesso in lettura e scrittura a DBFS, in modo che lo script init possa essere modificato da qualsiasi utente. Se si tratta di un potenziale problema, Databricks consiglia di inserire lo script init in Azure Data Lake Storage Gen2 e limitare le autorizzazioni.

  • Potrebbe essere necessario modificare l'URL del pacchetto in base alla versione Ubuntu del runtime, disponibile nelle note sulla versione.

script = """#!/bin/bash

set -euxo pipefail
RSTUDIO_BIN="/usr/sbin/rstudio-server"

if [[ ! -f "$RSTUDIO_BIN" && $DB_IS_DRIVER = "TRUE" ]]; then
  apt-get update
  apt-get install -y gdebi-core
  cd /tmp
  # You can find new releases at https://rstudio.com/products/rstudio/download-server/debian-ubuntu/.
  wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-2022.02.1-461-amd64.deb -O rstudio-server.deb
  sudo gdebi -n rstudio-server.deb
  rstudio-server restart || true
fi
"""

dbutils.fs.mkdirs("/databricks/rstudio")
dbutils.fs.put("/databricks/rstudio/rstudio-install.sh", script, True)
  1. Eseguire il codice in un notebook per installare lo script in dbfs:/databricks/rstudio/rstudio-install.sh
  2. Prima di avviare un cluster, aggiungere dbfs:/databricks/rstudio/rstudio-install.sh come script init. Per informazioni dettagliate, vedere Script init con ambito cluster .
  3. Avviare il cluster.

Usare RStudio Server Open Source Edition

  1. Visualizzare i dettagli del cluster in cui è installato RStudio Server Open Source e quindi fare clic sulla scheda App :

    Scheda App cluster

  2. Nella scheda App fare clic sul pulsante Configura RStudio . Verrà generata automaticamente una password monouso. Fare clic sul collegamento show per visualizzarlo e copiare la password.

    Password monouso di RStudio

  3. Fare clic sul collegamento Apri RStudio per aprire l'interfaccia utente in una nuova scheda. Immettere il nome utente e la password nel modulo di accesso e accedere.

    Modulo di accesso di RStudio

  4. Dall'interfaccia utente di RStudio è possibile importare il SparkR pacchetto e configurare una SparkR sessione per avviare processi Spark nel 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)
    

    Sessione RStudio Open Source Edition

  5. È anche possibile collegare il pacchetto sparklyr e configurare una connessione 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)
    

    Connessione sparklyr di RStudio Open Source Edition

Introduzione a RStudio Workbench (in precedenza RStudio Server Pro)

Nel febbraio 2022 RStudio Server Pro è stato rinominato RStudio Workbench (domande frequenti sulla modifica del nome). A seconda della licenza, RStudio Workbench può includere RStudio Server Pro.

Configurare il server licenze RStudio

Per usare RStudio Workbench in Azure Databricks, è necessario convertire la licenza Pro in una licenza mobile. Per assistenza, contattare help@rstudio.com. Quando la licenza viene convertita, è necessario configurare un server licenze per RStudio Workbench.

Per configurare un server licenze:

  1. Avviare una piccola istanza nella rete del provider di servizi cloud; il daemon del server licenze è molto leggero.
  2. Scaricare e installare la versione corrispondente di RStudio License Server nell'istanza e avviare il servizio. Per istruzioni dettagliate, vedere RStudio Workbench Amministrazione Guide (Guida all'Amministrazione di RStudio Workbench).
  3. Assicurarsi che la porta del server licenze sia aperta alle istanze di Azure Databricks.

Installare RStudio Workbench

Per configurare RStudio Workbench in un cluster Di Azure Databricks, è necessario creare uno script init per installare il pacchetto binario RStudio Workbench e configurarlo per l'uso del server licenze per il lease di licenza. Per altri dettagli, vedere Log di diagnostica .

Nota

Se si prevede di installare RStudio Workbench in una versione di Databricks Runtime che include già il pacchetto RStudio Server Open Source Edition, è necessario disinstallare prima il pacchetto per l'installazione.

Di seguito è riportata una cella del notebook di esempio che genera uno script init in DBFS. Lo script esegue anche configurazioni di autenticazione aggiuntive che semplificano l'integrazione con Azure Databricks.

Importante

  • Tutti gli utenti hanno accesso in lettura e scrittura a DBFS, in modo che lo script init possa essere modificato da qualsiasi utente. Se si tratta di un potenziale problema, Databricks consiglia di inserire lo script init in Azure Data Lake Storage Gen2 e limitare le autorizzazioni.

  • Potrebbe essere necessario modificare l'URL del pacchetto in base alla versione Ubuntu del runtime, disponibile nelle note sulla versione.

script = """#!/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
"""

dbutils.fs.mkdirs("/databricks/rstudio")
dbutils.fs.put("/databricks/rstudio/rstudio-install.sh", script, True)
  1. Sostituire <domain> con l'URL di Azure Databricks e <license-server-url> con l'URL del server licenze mobile.
  2. Eseguire il codice in un notebook per installare lo script in dbfs:/databricks/rstudio/rstudio-install.sh
  3. Prima di avviare un'aggiunta dbfs:/databricks/rstudio/rstudio-install.sh di cluster come script init. Per informazioni dettagliate, vedere Log di diagnostica .
  4. Avviare il cluster.

Usare RStudio Server Pro

  1. Visualizzare i dettagli del cluster in cui è stato installato RStudio e fare clic sulla scheda App :

    Scheda App cluster

  2. Nella scheda App fare clic sul pulsante Configura RStudio .

    Password monouso di RStudio

  3. Non è necessaria la password monouso. Fare clic sul collegamento Open RStudio UI (Apri interfaccia utente di RStudio ) per aprire automaticamente una sessione RStudio Pro autenticata.

  4. Dall'interfaccia utente di RStudio è possibile collegare il SparkR pacchetto e configurare una SparkR sessione per avviare processi Spark nel 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)
    

    Sessione di RStudio Pro

  5. È anche possibile collegare il pacchetto sparklyr e configurare una connessione 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)
    

    Connessione sparklyr RStudio Pro

Domande frequenti su RStudio Server

Qual è la differenza tra RStudio Server Open Source Edition e RStudio Workbench?

RStudio Workbench supporta un'ampia gamma di funzionalità aziendali non disponibili nell'edizione Open Source. È possibile visualizzare il confronto delle funzionalità nel sito Web di RStudio.

Inoltre, RStudio Server Open Source Edition viene distribuito in GNU Affero General Public License (AGPL), mentre la versione Pro viene fornita con una licenza commerciale per le organizzazioni che non sono in grado di usare il software AGPL.

RStudio Workbench include infine il supporto professionale ed aziendale di RStudio, PBC, mentre RStudio Server Open Source Edition non include alcun supporto.

È possibile usare la licenza RStudio Workbench/RStudio Server Pro in Azure Databricks?

Sì, se si ha già una licenza Pro o Enterprise per RStudio Server, è possibile usare tale licenza in Azure Databricks. Per informazioni su come configurare RStudio Workbench in Azure Databricks, vedere Introduzione a RStudio Workbench (in precedenza RStudio Server Pro).

Dove viene eseguito RStudio Server? È necessario gestire altri servizi/server?

Come si può notare nel diagramma nell'architettura di integrazione di RStudio, il daemon RStudio Server viene eseguito nel nodo driver (master) del cluster Azure Databricks. Con RStudio Server Open Source Edition non è necessario eseguire server/servizi aggiuntivi. Tuttavia, per RStudio Workbench, è necessario gestire un'istanza separata che esegue RStudio License Server.

È possibile usare RStudio Server in un cluster standard?

Nota

Questo articolo descrive l'interfaccia utente dei cluster legacy. Per informazioni dettagliate sull'interfaccia utente di anteprima, incluse le modifiche della terminologia per le modalità di accesso al cluster, vedere Modifiche all'interfaccia utente dei cluster di Databricks.

Sì, è possibile. In origine, era necessario usare un cluster a concorrenza elevata , ma tale limitazione non è più disponibile.

È possibile usare RStudio Server in un cluster con terminazione automatica?

No, non è possibile usare RStudio quando la terminazione automatica è abilitata. La terminazione automatica può eliminare gli script utente e i dati non salvati all'interno di una sessione RStudio. Per proteggere gli utenti da questo scenario imprevisto di perdita di dati, RStudio è disabilitato in tali cluster per impostazione predefinita.

Per i clienti che richiedono la pulizia delle risorse del cluster quando non vengono usate, Databricks consiglia di usare le API del cluster per pulire i cluster RStudio in base a una pianificazione.

Come rendere persistente il lavoro in RStudio?

È consigliabile rendere persistente il lavoro usando un sistema di controllo della versione di RStudio. RStudio offre un ottimo supporto per vari sistemi di controllo della versione e consente di archiviare e gestire i progetti.

È anche possibile salvare i file (codice o dati) in Che cos'è il file system di Databricks ?. Ad esempio, se si salva un file nei /dbfs/ file non verrà eliminato quando il cluster viene terminato o riavviato.

Importante

Se il codice non viene salvato in modo permanente tramite il controllo della versione o DBFS, si rischia di perdere il lavoro se un amministratore riavvia o termina il cluster.

Un altro metodo consiste nel salvare il notebook R nel file system locale esportandolo come Rmarkdown, quindi importando il file nell'istanza di RStudio.

Il blog Sharing R Notebooks using RMarkdown (Condivisione di notebook R con RMarkdown ) descrive in modo più dettagliato i passaggi.

Ricerca per categorie avviare una SparkR sessione?

SparkR è contenuto in Databricks Runtime, ma è necessario caricarlo in RStudio. Eseguire il codice seguente all'interno di RStudio per inizializzare una SparkR sessione.

library(SparkR)

sparkR.session()

Se si verifica un errore durante l'importazione del SparkR pacchetto, eseguire .libPaths() e verificare che /home/ubuntu/databricks/spark/R/lib sia incluso nel risultato.

Se non è incluso, controllare il contenuto di /usr/lib/R/etc/Rprofile.site. Elenco /home/ubuntu/databricks/spark/R/lib/SparkR nel driver per verificare che il SparkR pacchetto sia installato.

Ricerca per categorie avviare una sparklyr sessione?

Il sparklyr pacchetto deve essere installato nel cluster. Usare uno dei metodi seguenti per installare il sparklyr pacchetto:

  • Come libreria di Azure Databricks
  • Comando install.packages()
  • Interfaccia utente di gestione pacchetti RStudio
library(sparklyr)

sc <- spark_connect(method = “databricks”)

In che modo RStudio si integra con i notebook R di Azure Databricks?

È possibile spostare il lavoro tra notebook e RStudio tramite il controllo della versione.

Che cos'è la directory di lavoro?

Quando si avvia un progetto in RStudio, si sceglie una directory di lavoro. Per impostazione predefinita, si tratta della home directory nel contenitore driver (master) in cui È in esecuzione RStudio Server. Se si desidera, è possibile modificare questa directory.

Non è possibile usare il terminale o git all'interno di RStudio in Azure Databricks. Come posso risolverlo?

Assicurarsi di aver disabilitato i websocket. In RStudio Server Open Source Edition è possibile eseguire questa operazione dall'interfaccia utente.

Sessione RStudio

In RStudio Server Pro è possibile aggiungere allow-terminal-websockets=0 a /etc/rstudio/rsession.conf per disabilitare i websocket per tutti gli utenti.

La scheda App non viene visualizzata nei dettagli del cluster.

Questa funzionalità non è disponibile per tutti i clienti. È necessario essere nel piano Premium.

È possibile avviare Shiny Apps da RStudio in esecuzione in Azure Databricks?

Sì, è possibile sviluppare e visualizzare applicazioni Shiny all'interno di RStudio Server in Databricks.