renv
em Databricks
renv é um pacote R que permite aos usuários gerenciar dependências R específicas para o Notebook.
Usando renv
, você pode criar e gerenciar o ambiente da biblioteca R para seu projeto, salvar o estado dessas bibliotecas em um lockfile
e posteriormente restaurar as bibliotecas conforme necessário. Juntas, essas ferramentas podem ajudar a tornar os projetos mais isolados, portáteis e reprodutíveis.
Básico renv
fluxo de trabalho
Nesta secção:
Instalar renv
Você pode instalar renv
como uma biblioteca com escopo definidoclusters ou como uma biblioteca com escopo definidoNotebook. Para instalar renv
como uma biblioteca com escopo Notebook , use:
require(devtools)
install_version(
package = "renv",
repos = "http://cran.us.r-project.org"
)
Databricks recomenda usar um Snapshot CRAN como repositório para corrigir a versão do pacote.
Inicializar sessão renv
com bibliotecas R pré-instaladas
A primeira passo ao usar renv
é inicializar uma sessão usando renv::init()
. Defina libPaths
para alterar o local downloads default para ser o caminho da biblioteca com escopo do R Notebook.
renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths())
Use renv
para instalar pacotes adicionais
Agora você pode usar a API do renv
para instalar e remover pacotes do R. Por exemplo, para instalar a versão mais recente de digest
, execute o seguinte dentro de uma célula Notebook .
renv::install("digest")
Para instalar uma versão antiga do digest
, execute o seguinte dentro de uma célula Notebook .
renv::install("digest@0.6.18")
Para instalar digest
do GitHub, execute o seguinte dentro de uma célula Notebook .
renv::install("eddelbuettel/digest")
Para instalar um pacote do Bioconductor, execute o seguinte dentro de uma célula Notebook .
# (note: requires the BiocManager package)
renv::install("bioc::Biobase")
Observe que a API renv::install
usa o cache renv.
Use renv
para salvar seu ambiente R Notebook em DBFS
execute o seguinte comando uma vez antes de salvar o ambiente.
renv::settings$snapshot.type("all")
Isso define renv
como Snapshot de todos os pacotes instalados em libPaths
, não apenas aqueles que são usados atualmente no Notebook. Consulte a documentação do renv para obter mais informações.
Agora você pode executar o seguinte dentro de uma célula Notebook para salvar o estado atual do seu ambiente.
renv::snapshot(lockfile="/dbfs/PATH/TO/WHERE/YOU/WANT/TO/SAVE/renv.lock", force=TRUE)
Isso atualiza o lockfile
capturando todos os pacotes instalados em libPaths
. Ele também move seu lockfile
do sistema de arquivos local para DBFS, onde persiste mesmo se seus clusters terminarem ou reiniciarem.
Reinstale um ambiente renv
dado um lockfile
do DBFS
Primeiro, certifique-se de que seus novos clusters estejam executando uma versão do Databricks Runtime idêntica àquela em que você criou o ambiente renv
pela primeira vez. Isso garante que os pacotes R pré-instalados sejam idênticos. Você pode encontrar uma lista deles nas notas sobre a versão de cada runtime. Depois de instalar renv, execute o seguinte dentro de uma célula Notebook .
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"))
Isso copia seu lockfile
do DBFS para o sistema de arquivos local e, em seguida, restaura todos os pacotes especificados no lockfile
.
Observação
Para evitar erros de repositório ausente, exclua os pacotes Rserve
e SparkR
da restauração do pacote. Ambos os pacotes são pré-instalados em todos os Runtime.
renv
Cache
Um recurso muito útil do renv
é seu cache de pacote global, que é compartilhado por todos os projetos renv
nos clusters. Ele acelera os tempos de instalação e economiza espaço em disco. O cache renv
não armazena em cache downloads de pacotes por meio da API devtools
ou install.packages()
com argumentos adicionais diferentes de pkgs
.