renv en Azure Databricks

renv es un paquete de R que permite a los usuarios administrar dependencias de R específicas del cuaderno.

Con renv, puede crear y administrar el entorno de biblioteca de R para el proyecto, guardar el estado de estas bibliotecas en lockfile y, posteriormente, restaurar las bibliotecas según sea necesario. Estas herramientas pueden ayudar a hacer que los proyectos sean más aislados, portátiles y reproducibles.

Instalarrenv

Puede instalar renv como una biblioteca de ámbito de clúster o como una biblioteca de ámbito de cuaderno. Para instalar renv como una biblioteca de ámbito de cuaderno, utilice:

require(devtools)

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

Databricks recomienda usar una instantánea de CRAN como repositorio para corregir la versión del paquete.

Inicializar la sesión renv con bibliotecas de R preinstaladas

El primer paso al usar renv es inicializar una sesión mediante renv::init(). Establezca libPaths para cambiar la ubicación de descarga predeterminada para que sea la ruta de librería de ámbito de cuaderno de R.

renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths()))

Utilizar renv para instalar paquetes adicionales

Ahora puede usar la API de renv para instalar y eliminar paquetes de R. Por ejemplo, para instalar la versión más reciente de digest, ejecute lo siguiente dentro de una celda del cuaderno.

renv::install("digest")

Para instalar una versión anterior de digest, ejecute lo siguiente dentro de una celda del cuaderno.

renv::install("digest@0.6.18")

Para instalar digest desde GitHub, ejecute lo siguiente dentro de una celda del cuaderno.

renv::install("eddelbuettel/digest")

Para instalar un paquete desde Bioconductor, ejecute lo siguiente dentro de una celda del cuaderno.

# (note: requires the BiocManager package)
renv::install("bioc::Biobase")

Tenga en cuenta que la renv::install API usa la renv memoria caché.

Usa renv para guardar el entorno de tu cuaderno de R en un volumen

Ejecute el siguiente comando una vez antes de guardar el entorno.

renv::settings$snapshot.type("all")

Esto establece renv para crear una instantánea de todos los paquetes instalados en libPaths, no solo los que se usan actualmente en el cuaderno. Consulte la documentación renv existente para obtener más información.

Ahora puede ejecutar lo siguiente dentro de una celda del cuaderno para guardar el estado actual de su entorno.

renv::snapshot(lockfile="/Volumes/my_catalog/my_schema/my_volume/renv.lock", force=TRUE)

De este modo, se actualiza lockfile mediante la captura de todos los paquetes instalados en libPaths. También mueve tu lockfile del sistema de archivos local a un volumen de Unity Catalog, donde permanece incluso si tu clúster se detiene o se reinicia.

Reinstalar un renv entorno dado un lockfile desde un volumen

En primer lugar, asegúrese de que el nuevo clúster ejecuta una versión de Databricks Runtime idéntica a la que creó por primera vez en el entorno renv. Esto garantiza que los paquetes de R preinstalados son idénticos. Puede encontrar una lista de estos elementos en las notas de lanzamiento de cada tiempo de ejecución. Después de instalar renv, ejecute lo siguiente dentro de una celda del cuaderno.

renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths()))
renv::restore(lockfile="/Volumes/my_catalog/my_schema/my_volume/renv.lock", exclude=c("Rserve", "SparkR"))

Esto copia tu lockfile del volumen al sistema de archivos local y luego restaura los paquetes especificados en el lockfile.

Nota:

Para evitar errores de repositorio ausentes, excluya los paquetes Rserve y SparkR de la restauración del paquete. Ambos paquetes están preinstalados en todos los entornos de ejecución.

renvCaché

Una característica muy útil de renv es su paquete de caché global, que se comparte entre todos los proyectos renv del clúster. Acelera los tiempos de instalación y ahorra espacio en disco. La memoria de caché renv no almacena en caché los paquetes descargados a través de la API devtools o install.packages() con argumentos adicionales distintos de pkgs.