Compartir a través de


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. Juntas, estas herramientas pueden ayudar a que los proyectos sean más aislados, sean portables y se puedan reproducir.

Flujo de trabajo básico de renv

En esta sección:

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 quitar 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 API renv::install usa el Caché renv.

Utilice renv para guardar el entorno de cuadernos de R en DBFS

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="/dbfs/PATH/TO/WHERE/YOU/WANT/TO/SAVE/renv.lock", force=TRUE)

De este modo, se actualiza lockfile mediante la captura de todos los paquetes instalados en libPaths. También mueve su lockfile desde el sistema de archivos local a DBFS, donde se conserva incluso si el clúster finaliza o se reinicia.

Reinstalar un entorno dado renv en lockfile desde DBFS

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 la versión de cada entorno 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="/dbfs/PATH/TO/WHERE/YOU/SAVED/renv.lock", exclude=c("Rserve", "SparkR"))

De este modo, se copia su lockfile de DBFS en el sistema de archivos local y, a continuación, restaura los paquetes especificados en 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.