Gestione delle librerie R

Le librerie forniscono codice riutilizzabile da includere nei programmi o nei progetti per Microsoft Fabric Spark.

Microsoft Fabric supporta un runtime R con molti pacchetti R open source più diffusi, tra cui TidyVerse, preinstallati. All'avvio di un'istanza di Spark, queste librerie vengono incluse automaticamente e disponibili per essere usate immediatamente nei notebook o nelle definizioni dei processi Spark.

Potrebbe essere necessario aggiornare le librerie R per vari motivi. Ad esempio, una delle dipendenze principali ha rilasciato una nuova versione o il team ha creato un pacchetto personalizzato necessario nei cluster Spark.

È possibile includere due tipi di librerie in base allo scenario:

  • Le librerie di feed fanno riferimento a quelle che risiedono in origini o repository pubblici, ad esempio CRAN o GitHub.

  • Le librerie personalizzate sono il codice creato dall'utente o dall'organizzazione, .tar.gz può essere gestito tramite i portali di gestione delle librerie.

In Microsoft Fabric sono installati due livelli di pacchetti:

  • Ambiente: gestire le librerie tramite un ambiente per riutilizzare lo stesso set di librerie in più notebook o processi.

  • Sessione : un'installazione a livello di sessione crea un ambiente per una sessione di notebook specifica. La modifica delle librerie a livello di sessione non viene mantenuta tra le sessioni.

Riepilogo dei comportamenti correnti di gestione delle librerie R disponibili:

Tipo di libreria Installazione dell'ambiente Installazione a livello di sessione
Feed R (CRAN) Non supportato Supportato
R Custom Supportata Supportata

Prerequisiti

  • Ottenere una sottoscrizione di Microsoft Fabric. In alternativa, iscriversi per ottenere una versione di valutazione gratuita di Microsoft Fabric.

  • Accedere a Microsoft Fabric.

  • Usare il commutatore esperienza sul lato sinistro della home page per passare all'esperienza di data science di Synapse.

    Screenshot del menu switcher dell'esperienza, che mostra dove selezionare Data Science.

Librerie R a livello di sessione

Quando si esegue l'analisi interattiva dei dati o l'apprendimento automatico, è possibile provare pacchetti più recenti o che potrebbero essere necessari pacchetti attualmente non disponibili nell'area di lavoro. Anziché aggiornare le impostazioni dell'area di lavoro, è possibile usare pacchetti con ambito sessione per aggiungere, gestire e aggiornare le dipendenze di sessione.

  • Quando si installano librerie con ambito sessione, solo il notebook corrente ha accesso alle librerie specificate.
  • Queste librerie non influiscono su altre sessioni o processi usando lo stesso pool di Spark.
  • Queste librerie vengono installate sopra le librerie di runtime di base e a livello di pool.
  • Le librerie di notebook hanno la precedenza più alta.
  • Le librerie R con ambito sessione non vengono mantenute tra le sessioni. Queste librerie vengono installate all'inizio di ogni sessione quando vengono eseguiti i comandi di installazione correlati.
  • Le librerie R con ambito sessione vengono installate automaticamente nei nodi driver e di lavoro.

Nota

I comandi di gestione delle librerie R vengono disabilitati durante l'esecuzione di processi della pipeline. Se si vuole installare un pacchetto all'interno di una pipeline, è necessario usare le funzionalità di gestione delle librerie a livello di area di lavoro.

Installare pacchetti R da CRAN

È possibile installare facilmente una libreria R da CRAN.

# install a package from CRAN
install.packages(c("nycflights13", "Lahman"))

È anche possibile usare snapshot CRAN come repository per assicurarsi di scaricare la stessa versione del pacchetto ogni volta.

# install a package from CRAN snapsho
install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

Installare pacchetti R usando devtools

La devtools libreria semplifica lo sviluppo di pacchetti per accelerare le attività comuni. Questa libreria viene installata all'interno del runtime predefinito di Microsoft Fabric.

È possibile usare devtools per specificare una versione specifica di una libreria da installare. Queste librerie vengono installate in tutti i nodi all'interno del cluster.

# Install a specific version. 
install_version("caesar", version = "1.0.0")

Analogamente, è possibile installare una libreria direttamente da GitHub.

# Install a GitHub library. 

install_github("jtilly/matchingR")

Attualmente, all'interno di Microsoft Fabric sono supportate le funzioni seguenti devtools :

Comando Descrizione
install_github() Installa un pacchetto R da GitHub
install_gitlab() Installa un pacchetto R da GitLab
install_bitbucket() Installa un pacchetto R da BitBucket
install_url() Installa un pacchetto R da un URL arbitrario
install_git() Installa da un repository Git arbitrario
install_local() Installa da un file locale su disco
install_version() Installa da una versione specifica in CRAN

Installare librerie personalizzate R

Per usare una libreria personalizzata a livello di sessione, è prima necessario caricarla in un lakehouse collegato.

  1. Sul lato sinistro selezionare Aggiungi per aggiungere una lakehouse esistente o creare una lakehouse.

    Screenshot di come aggiungere un lakehouse al notebook.

  2. Per aggiungere file a questo lakehouse, selezionare l'area di lavoro e quindi selezionare il lakehouse.

    Screenshot di come passare al lakehouse per aggiungere file.

  3. Fare clic con il pulsante destro del mouse o selezionare "..." accanto a File per caricare il file .tar.gz .

    Screenshot di come caricare il file nella cartella lakehouse Files.

  4. Dopo il caricamento, tornare al notebook. Usare il comando seguente per installare la libreria personalizzata nella sessione:

    install.packages("filepath/filename.tar.gz", repos = NULL, type = "source")
    

Visualizzare le librerie installate

Eseguire una query su tutte le librerie installate all'interno della sessione usando il library comando .

# query all the libraries installed in current session
library()

Usare la packageVersion funzione per controllare la versione della libreria:

# check the package version
packageVersion("caesar")

Rimuovere un pacchetto R da una sessione

È possibile usare la detach funzione per rimuovere una libreria dallo spazio dei nomi . Queste librerie rimangono su disco finché non vengono ricaricate.

# detach a library

detach("package: caesar")

Per rimuovere un pacchetto con ambito sessione da un notebook, usare il remove.packages() comando . Questa modifica della libreria non ha alcun impatto su altre sessioni nello stesso cluster. Gli utenti non possono disinstallare o rimuovere librerie predefinite del runtime predefinito di Microsoft Fabric.

Nota

Non è possibile rimuovere pacchetti di base come SparkR, SparklyR o R.

remove.packages("caesar")

Librerie R con ambito sessione e SparkR

Le librerie con ambito notebook sono disponibili nei ruoli di lavoro SparkR.

install.packages("stringr")
library(SparkR)

str_length_function <- function(x) {
  library(stringr)
  str_length(x)
}

docs <- c("Wow, I really like the new light sabers!",
               "That book was excellent.",
               "R is a fantastic language.",
               "The service in this restaurant was miserable.",
               "This is neither positive or negative.")

spark.lapply(docs, str_length_function)

Librerie R con ambito sessione e sparklyr

Con spark_apply() sparklyr è possibile usare qualsiasi pacchetto R all'interno di Spark. Per impostazione predefinita, in sparklyr::spark_apply()l'argomento packages imposta su FAL edizione Standard. Questa copia le librerie nei percorsi libPath correnti ai ruoli di lavoro, consentendo di importarle e usarle nei ruoli di lavoro. Ad esempio, è possibile eseguire quanto segue per generare un messaggio con crittografia cesare con sparklyr::spark_apply():

install.packages("caesar", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)

apply_cases <- function(x) {
  library(caesar)
  caesar("hello world")
}
sdf_len(sc, 5) %>%
  spark_apply(apply_cases, packages=FALSE)

Altre informazioni sulle funzionalità di R: