Condividi tramite


Librerie R con ambito notebook

Le librerie R con ambito notebook consentono di creare e modificare ambienti R personalizzati specifici di una sessione di notebook. Quando si installa una libreria con ambito notebook R, solo il notebook corrente e tutti i processi associati a tale notebook hanno accesso a tale libreria. L'operazione non incide sugli altri notebook collegati allo stesso cluster.

Le librerie con ambito notebook non vengono mantenute tra le sessioni. È necessario reinstallare le librerie con ambito notebook all'inizio di ogni sessione o ogni volta che il notebook viene scollegato da un cluster.

Le librerie con ambito notebook sono automaticamente disponibili sui nodi di lavoro per le funzioni UDF di SparkR.

Per installare librerie per tutti i notebook collegati a un cluster, usare le librerie installate dal cluster. Vedere Librerie con ambito di calcolo.

Installare librerie specifiche per notebook in R

È possibile usare qualsiasi metodo familiare per installare pacchetti in R, ad esempio install.packages(), le API devtools o Bioconductor.

I pacchetti R sono accessibili ai nodi di lavoro e al nodo driver.

Gestire le librerie a livello di notebook in R

Contenuto della sezione:

Installare un pacchetto

require(devtools)

install_version(
  package = "caesar",
  repos   = "http://cran.us.r-project.org"
)

Databricks consiglia di usare uno snapshot CRAN come repository per garantire risultati riproducibili.

devtools::install_github("klutometis/roxygen")

Rimuovere un pacchetto R da un ambiente notebook

Per rimuovere una libreria con ambito specifico per un notebook, usare il comando remove.packages().

remove.packages("caesar")

Librerie R con ambito limitato al notebook e funzioni definite dall'utente in Spark

Contenuto della sezione:

Librerie R con ambito specifico per notebook e SparkR

Le librerie con ambito notebook sono disponibili nei worker SparkR; è sufficiente importare una libreria per usarla. Ad esempio, puoi eseguire il seguente comando per generare un messaggio crittografato con crittografia di Cesare utilizzando una funzione definita dall'utente SparkR:

require(devtools)

install_version(
  package = "caesar",
  repos   = "http://cran.us.r-project.org"
)

library(SparkR)
sparkR.session()

hello <- function(x) {
  library(caesar)
  caesar("hello world")
}

spark.lapply(c(1, 2), hello)

Librerie R con ambito dedicato ai notebook e sparklyr

Per impostazione predefinita, in sparklyr::spark_apply()l'argomento packages è impostato su TRUE. Questa copia le librerie nell'oggetto corrente libPaths 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():

require(devtools)

install_version(
  package = "caesar",
  repos   = "http://cran.us.r-project.org"
)

library(sparklyr)
sc <- spark_connect(method = 'databricks')

apply_caes <- function(x) {
  library(caesar)
  caesar("hello world")
}

sdf_len(sc, 5) %>%
  spark_apply(apply_caes)

Se non si desidera che le librerie siano disponibili nei ruoli di lavoro, impostare packages su FALSE.

Isolamento della libreria e RStudio ospitato

RStudio crea un percorso di libreria separato per ogni utente; pertanto gli utenti sono isolati l'uno dall'altro. Tuttavia, il percorso della libreria non è disponibile nei ruoli di lavoro. Se si vuole usare un pacchetto all'interno dei worker di SparkR in un compito avviato da RStudio, è necessario installarlo usando le librerie del cluster.

In alternativa, se usi le UDF di sparklyr, i pacchetti installati in RStudio sono disponibili per i nodi di lavoro durante l'uso di spark_apply(..., packages = TRUE).

Domande frequenti

Come installo un pacchetto solo sul driver per tutti i notebook R?

Impostare la directory di installazione esplicitamente su /databricks/spark/R/lib. Ad esempio, con install.packages(), eseguire install.packages("pckg", lib="/databricks/spark/R/lib"). I pacchetti installati in /databricks/spark/R/lib vengono condivisi tra tutti i notebook del cluster, ma non sono accessibili ai worker SparkR. Per condividere librerie tra notebook e ruoli di lavoro, usare le librerie cluster.

Le librerie con ambito notebook vengono memorizzate nella cache?

Non è implementata alcuna memorizzazione nella cache per le librerie con ambito notebook in un cluster. Se si installa un pacchetto in un notebook e un altro utente installa lo stesso pacchetto in un altro notebook nello stesso cluster, il pacchetto viene scaricato, compilato e installato di nuovo.