Condividi tramite


Azure Databricks per sviluppatori R

Questa sezione fornisce una guida allo sviluppo di notebook e processi in Azure Databricks con il linguaggio R.

Un flusso di lavoro basilare per iniziare è:

  1. Importa codice: importare codice personalizzato da file o repository Git o provare un'esercitazione elencata di seguito. Databricks raccomanda di apprendere a utilizzare notebook interattivi di Azure Databricks.
  2. Eseguire il codice in un cluster: creare un cluster personalizzato o assicurarsi di disporre delle autorizzazioni per l'uso di un cluster condiviso. Collegare il notebook al cluster ed eseguire il notebook.

Oltre a questo, è possibile affrontare argomenti più specifici:

Esercitazioni

Le seguenti esercitazioni forniscono esempi di codice e notebook per imparare i flussi di lavoro più comuni. Per istruzioni sull'importazione di esempi di notebook nell'area di lavoro, si veda Importare un notebook.

Riferimento

Nelle seguenti sottosezioni sono elencate le funzionalità principali insieme ai suggerimenti per iniziare a sviluppare in Azure Databricks con R.

Azure Databricks supporta due API che forniscono un'interfaccia R ad Apache Spark: SparkR e sparklyr.

SparkR

Questi articoli contengono informazioni introduttive e di riferimento relative a SparkR. SparkR è un'interfaccia R di Apache Spark che fornisce un'implementazione di frame di dati distribuiti. SparkR supporta operazioni come selezione, filtro e aggregazione (come i frame di dati R), ma su set di dati di grandi dimensioni.

sparklyr

Questo articolo fornisce informazioni introduttive a sparklyr. Sparklyr è un'interfaccia R di Apache Spark che fornisce funzionalità simili a dplyr, broom e DBI.

Confronto tra SparkR e sparklyr

Questo articolo illustra le principali analogie e differenze tra SparkR e sparklyr.

Operare con DataFrames e tabelle con SparkR e sparklyr

Questo articolo descrive come usare R, SparkR, sparklyr e dplyr per operare con R data.frame, dataframe Spark e tabelle Spark in Azure Databricks.

Gestire il codice con notebook e cartelle Git di Databricks.

I notebook di Azure Databricks supportano R. Questi notebook offrono funzionalità simili a quelle di Jupyter, ma con aggiunte come visualizzazioni predefinite che usano Big Data, integrazioni di Apache Spark per il debug e il monitoraggio delle prestazioni e integrazioni MLflow per tenere traccia degli esperimenti di apprendimento automatico. Per iniziare importare un notebook. Dopo aver ottenuto l'accesso a un cluster, è possibile collegare un notebook al cluster ed eseguire il notebook.

Le cartelle Git di Azure Databricks consentono agli utenti di sincronizzare notebook e altri file con i repository Git. Le cartelle Git di Azure Databricks sono utili per il controllo delle versioni del codice e la collaborazione e semplificano l'importazione di un repository completo di codice in Azure Databricks, la visualizzazione delle versioni precedenti dei notebook e l'integrazione con lo sviluppo IDE. Per iniziare, clonare un repository Git remoto. È quindi possibile aprire o creare notebook con il clone del repository, collegare il notebook a un cluster ed eseguire il notebook.

Cluster

Azure Databricks compute offre la gestione delle risorse di calcolo sia per cluster a singolo nodo sia per cluster di grandi dimensioni. È possibile personalizzare l'hardware e le librerie del cluster in base alle esigenze. I data scientist inizieranno in genere a lavorare creando un cluster o usando un cluster condiviso esistente. Dopo aver ottenuto l'accesso a un cluster, è possibile collegare un notebook al cluster o eseguire un processo nel cluster.

R a nodo singolo e R distribuito

I cluster di Azure Databricks sono costituiti da un nodo del driver Apache Spark e da zero o più nodi di lavoro Spark (noti anche come executor). Il nodo driver mantiene lo stato del notebook collegato, gestisce SparkContext, interpreta i comandi del notebook e della libreria ed esegue il master Spark che si coordina con gli executor Spark. I nodi di lavoro eseguono gli executor Spark, un executor Spark per ogni nodo di lavoro.

Un cluster a nodo singolo ha un nodo driver e nessun nodo di lavoro, con Spark in esecuzione in modalità locale per supportare l'accesso alle tabelle gestite da Azure Databricks. I cluster a nodo singolo supportano RStudio, notebook e librerie e sono utili per i progetti R che non dipendono da Spark per l'elaborazione parallela o big data. Si veda Calcolo a nodo singolo o a più nodi.

Per le dimensioni dei dati che R fatica a elaborare (molti gigabyte o petabyte), è consigliabile usare invece cluster distribuiti o a più nodi. I cluster distribuiti hanno un nodo driver e uno o più nodi di lavoro. I cluster distribuiti supportano non solo RStudio, notebook e librerie, ma pacchetti R come SparkR e sparkly, progettati in modo specifico per l'uso di cluster distribuiti tramite SparkContext. Questi pacchetti forniscono API SQL e DataFrame familiari, che consentono di assegnare ed eseguire varie attività e comandi Spark in parallelo tra i nodi di lavoro. Per altre informazioni su Sparklyr e SparkR, si veda Confronto tra SparkR e sparklyr.

Alcune funzioni di SparkR e sparklyr che traggono particolare vantaggio dalla distribuzione del lavoro correlato tra i nodi di lavoro sono le seguenti:

  • sparklyr::spark_apply: esegue un codice R arbitrario su larga scala all'interno di un cluster. Risulta particolarmente utile per utilizzare funzionalità disponibili solo in R o pacchetti R non disponibili in Apache Spark o in altri pacchetti Spark.
  • SparkR::d apply: applica la funzione specificata a ciascuna partizione di un oggetto SparkDataFrame.
  • SparkR::d applyCollect: applica la funzione specificata a ciascuna partizione di un oggetto SparkDataFrame e riporta i risultati in R come data.frame.
  • SparkR::gapply: raggruppa un oggetto SparkDataFrame usando le colonne specificate e applica la funzione R specificata a ogni gruppo.
  • SparkR::gapplyCollect: raggruppa un oggetto SparkDataFrame usando le colonne specificate, applica la funzione R specificata a ogni gruppo e riporta i risultati in R come data.frame.
  • SparkR::spark.lapply: esegue la funzione specificata su un elenco di elementi, distribuendo i calcoli con Spark.

Per esempi, si veda il notebook Distributed R: User Defined Functions in Spark.

Databricks Container Services

Databricks Container Services consente di specificare un'immagine Docker quando si crea un cluster. Databricks fornisce l'immagine di base databricksruntime/rbase nell'hub Docker come esempio per avviare un cluster di Databricks Container Services con supporto R. Si veda anche il Dockerfile usato per generare questa immagine di base.

Librerie

I cluster di Azure Databricks utilizzano il runtime di Databricks, che offre molte librerie comuni predefinite, tra cui Apache Spark, Delta Lake e altro ancora. È anche possibile installare altri pacchetti di terze parti o personalizzati in librerie da utilizzare con notebook e processi.

Iniziare con le librerie predefinite nelle Note sulle versioni e sulla compatibilità di Databricks Runtime. Utilizzare Databricks Runtime for Machine Learning per i carichi di lavoro di apprendimento automatico. Per gli elenchi completi delle librerie preinstallate, vedere la sezione "Librerie R installate" per databricks Runtime di destinazione in Note sulle versioni e sulla compatibilità di Databricks Runtime.

È possibile personalizzare l'ambiente utilizzando librerie R con ambito notebook, che consentono di modificare il notebook o l'ambiente del processo con librerie da CRAN o da altri repository. A tale scopo, è possibile usare la funzione familiare install.packagesda utils. L'esempio seguente installa il pacchetto Arrow R dal repository CRAN predefinito:

install.packages("arrow")

Se è necessaria una versione precedente rispetto a quella inclusa in Databricks Runtime, è possibile usare un notebook per eseguire la funzione install_version da devtools. Il seguente esempio installa dplyr versione 0.7.4 da CRAN:

require(devtools)

install_version(
  package = "dplyr",
  version = "0.7.4",
  repos   = "http://cran.r-project.org"
)

I pacchetti installati in questo modo sono disponibili in un cluster. Hanno come ambito l'utente che li installa. In questo modo è possibile installare più versioni dello stesso pacchetto nello stesso calcolo senza creare conflitti di pacchetto.

È possibile installare altre librerie come librerie cluster in base alle esigenze, ad esempio da CRAN. A tale scopo, nell'interfaccia utente del cluster fare clic su Librerie > Installa nuovo > CRAN e specificare il nome della libreria. Questo approccio è particolarmente importante per quando si desidera chiamare funzioni definite dall'utente con SparkR o sparklyr.

Per altri dettagli, si veda Librerie.

Per installare un pacchetto personalizzato in una libreria:

  1. Compilare il pacchetto personalizzato dalla riga di comando o usando RStudio.

  2. Copiare il file del pacchetto personalizzato dal computer di sviluppo nell'area di lavoro di Azure Databricks. Per le opzioni, si veda Librerie.

  3. Installare il pacchetto personalizzato in una libreria eseguendo install.packages.

    Ad esempio, da un notebook nell'area di lavoro:

    install.packages(
      pkgs  = "/path/to/tar/file/<custom-package>.tar.gz",
      type  = "source",
      repos = NULL
    )
    

    Oppure:

    %sh
    R CMD INSTALL /path/to/tar/file/<custom-package>.tar.gz
    

Dopo aver installato un pacchetto personalizzato in una libreria, aggiungere la libreria al percorso di ricerca e poi caricarla con un singolo comando.

Ad esempio:

# Add the library to the search path one time.
.libPaths(c("/path/to/tar/file/", .libPaths()))

# Load the library. You do not need to add the library to the search path again.
library(<custom-package>)

Per installare un pacchetto personalizzato come libreria in ogni nodo di un cluster, è necessario utilizzare Che cosa sono gli script init?.

Visualizzazioni

I notebook di R di Azure Databricks supportano diversi tipi di visualizzazioni tramite la funzione display.

Processi

È possibile automatizzare i carichi di lavoro R come notebook programmati o attivati in Azure Databricks.

Apprendimento automatico

Databricks supporta un'ampia gamma di carichi di lavoro di Machine Learning (ML), tra cui apprendimento automatico tradizionale su dati tabulari, Deep Learning per visione artificiale ed elaborazione del linguaggio naturale, sistemi di raccomandazione, analisi dei grafici e altro ancora. Per informazioni generali sull'apprendimento automatico in Azure Databricks, si veda Databricks Runtime for Machine Learning.

Per gli algoritmi di ML, è possibile usare librerie preinstallate in Databricks Runtime for Machine Learning. È anche possibile installare librerie personalizzate.

Per le operazioni per l'apprendimento automatico (MLOps), Azure Databricks fornisce un servizio gestito per la libreria open source MLflow. Con Rilevamento di MLFlow si può registrare lo sviluppo di modelli e salvare i modelli in formati riutilizzabili. È possibile usare il Registro modelli MLflow per gestire e automatizzare la promozione dei modelli verso la produzione. I processi e la gestione dei modelli consentono l'hosting di modelli come processi di batch e di streaming come endpoint REST. Per altre informazioni ed esempi, si veda la documentazione relativa alla gestione del ciclo di vita di ML tramite MLflow o la documentazione dell'API R MLflow.

Strumenti di sviluppo R

Oltre ai notebook di Azure Databricks, è anche possibile usare gli strumenti di sviluppo R seguenti:

Personalizzazione della sessione R

In Databricks Runtime 12.2 LTS e versioni successive, le sessioni R possono essere personalizzate usando file di profilo a livello di sito (.Rprofile). I notebook R origineranno il file come codice R durante l'avvio. Per modificare il file, trovare il valore di R_HOME e modificare $R_HOME/etc/Rprofile.site. Si noti che Databricks ha aggiunto la configurazione nel file per garantire una funzionalità appropriata per RStudio ospitato in Azure Databricks. La rimozione di uno qualsiasi di questi elementi può impedire a RStudio di funzionare come previsto.

In Databricks Runtime 11.3 LTS e versioni precedenti, questo comportamento può essere abilitato impostando la variabile di ambiente DATABRICKS_ENABLE_RPROFILE=true.

Risorse aggiuntive