Bibliothèques R délimitées aux notebooks

Les bibliothèques R délimitées à un notebook vous permettent de créer et de modifier des environnements R personnalisés qui sont spécifiques à une session de notebook. Lorsque vous installez une bibliothèque R délimitée à un notebook, seuls le notebook actuel et les travaux associés à ce notebook ont accès à cette bibliothèque. Les autres notebooks attachés au même cluster ne sont pas concernés.

Les bibliothèques délimitées aux notebooks ne sont pas conservées entre les sessions. Vous devez réinstaller les bibliothèques délimitées aux notebooks au début de chaque session ou chaque fois que le notebook est détaché d’un cluster.

Les bibliothèques délimitées à un notebook sont automatiquement disponibles sur les Workers pour les UDF SparkR.

Pour installer des bibliothèques pour tous les notebooks attachés à un cluster, utilisez des bibliothèques avec cluster. Consultez Bibliothèques de clusters.

Installer des bibliothèques délimitées à un notebook en R

Vous pouvez utiliser n’importe quelle méthode familière d’installation de packages en R, par exemple install.packages(), les API devtools ou Bioconductor.

Les packages R sont accessibles aux nœuds Worker ainsi qu’au nœud de pilote.

Gérer les bibliothèques délimitées à un notebook en R

Dans cette section :

Installer un package

require(devtools)

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

Databricks recommande l’utilisation d’un instantané CRAN comme référentiel pour garantir des résultats reproductibles.

devtools::install_github("klutometis/roxygen")

Supprimer un package R d’un environnement de notebook

Pour supprimer une bibliothèque délimitée à un notebook, utilisez la commande remove.packages().

remove.packages("caesar")

Bibliothèques R délimitées à un notebook avec des UDF Spark

Dans cette section :

Bibliothèques R délimitées à un notebook et SparkR

Les bibliothèques délimitées à un notebook sont disponibles sur les Workers SparkR ; il suffit d’importer une bibliothèque pour l’utiliser. Par exemple, vous pouvez exécuter ce qui suit pour générer un message chiffré en Caesar avec une UDF 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)

Bibliothèques R délimitées à un notebook et sparklyr

Par défaut, dans sparklyr::spark_apply(), l’argument packages est défini sur TRUE. Cela copie les bibliothèques dans les libPaths actuels vers les Workers, ce qui vous permet de les importer et de les utiliser sur les Workers. Par exemple, vous pouvez exécuter ce qui suit pour générer un message chiffré en Caesar avec 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)

Si vous ne voulez pas que les bibliothèques soient disponibles sur les Workers, définissez packages sur FALSE.

Isolation des bibliothèques et RStudio hébergé

RStudio crée un chemin de bibliothèque distinct pour chaque utilisateur ; les utilisateurs sont donc isolés les uns des autres. Toutefois, le chemin de la bibliothèque n’est pas disponible sur les Workers. Si vous souhaitez utiliser un package à l’intérieur des Workers SparkR dans un travail lancé à partir de RStudio, vous devez l’installer en utilisant des bibliothèques de cluster.

Sinon, si vous utilisez des UDF sparklyr, les packages installés dans RStudio sont disponibles pour les Workers lorsque vous utilisez spark_apply(..., packages = TRUE).

Forum Aux Questions (FAQ)

Comment installer un package uniquement sur le pilote pour tous les notebooks R ?

Définissez explicitement le répertoire d’installation sur /databricks/spark/R/lib. Par exemple, avec install.packages(), exécutez install.packages("pckg", lib="/databricks/spark/R/lib"). Les packages installés dans /databricks/spark/R/lib sont partagés entre tous les notebooks du cluster, mais ils ne sont pas accessibles aux Workers SparkR. Pour partager des bibliothèques entre les notebooks et les Workers, utilisez des bibliothèques de cluster.

Les bibliothèques délimitées à un notebook sont-elles mises en cache ?

Aucune mise en cache n’est implémentée pour les bibliothèques délimitées à un notebook sur un cluster. Si vous installez un package dans un notebook et qu’un autre utilisateur installe le même package dans un autre notebook sur le même cluster, le package est téléchargé, compilé et installé à nouveau.