Condividi tramite


Gestione libreria R

Le librerie forniscono codice riutilizzabile che può essere utile includere nei programmi o nei progetti per Microsoft Fabric Spark.

Microsoft Fabric supporta un runtime R con molti dei pacchetti R open source più diffusi, tra cui TidyVerse, preinstallati. All'avvio di un'istanza di Spark, queste librerie vengono incluse automaticamente e rese 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 se una delle dipendenze principali ha rilasciato una nuova versione o se 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
Personalizzazione R Supportato Supportato

Prerequisiti

Librerie R a livello di sessione

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

  • Quando si installano librerie con ambito sessione, solo il notebook corrente ha accesso alle librerie specificate.
  • Queste librerie non hanno alcun impatto su altre sessioni o processi che usano lo stesso pool di Spark.
  • Queste librerie vengono installate sopra il runtime di base e le librerie 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

Questi comandi di gestione delle librerie R vengono disabilitati durante l'esecuzione di processi della pipeline. Se si desidera installare un pacchetto all'interno di una pipeline, è necessario sfruttare le funzionalità di gestione della libreria 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 ogni volta la stessa versione del pacchetto.

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

Installare pacchetti R usando devtools

La libreria devtools 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 verngono 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 seguenti funzioni 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. Aprire il notebook in cui si vuole usare la libreria personalizzata.

  2. Sul lato sinistro, selezionare Aggiungi per aggiungere una lakehouse esistente o crearne uno nuovo.

    Screenshot di come aggiungere un lakehouse al notebook.

  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 Files del lakehouse.

  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

È possibile eseguire query su tutte le librerie installate all'interno della sessione usando il comando library.

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

È possibile usare la funzione packageVersion per controllare la versione della libreria:

# check the package version
packageVersion("caesar")

Rimuovere un pacchetto R da una sessione

È possibile usare la funzione detach 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 comando remove.packages(). Questa modifica della libreria non ha alcun impatto su altre sessioni nello stesso cluster. Gli utenti non possono disinstallare o rimuovere librerie integrate 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() in sparklyr, è possibile usare qualsiasi pacchetto R all'interno di Spark. Per impostazione predefinita, in sparklyr::spark_apply() l'argomento packages è impostato su FALSE. Questa operazione 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 caesar 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à R: