renv
no Databricks
O renv é um pacote do R que permite aos usuários gerenciar dependências do R específicas para o Notebook.
Usando o site renv
, o senhor pode criar e gerenciar o ambiente da biblioteca R para o seu projeto, salvar o estado dessa biblioteca em um site lockfile
e, posteriormente, restaurar a biblioteca conforme necessário. Juntas, essas ferramentas podem ajudar a tornar os projetos mais isolados, portáteis e reproduzíveis.
Básico renv
fluxo de trabalho
Nesta secção:
- Instalar
renv
- Inicializar a sessão
renv
com a biblioteca R pré-instalada - Use
renv
para instalar pacote adicional - Use
renv
para salvar o ambiente do R Notebook em DBFS - Reinstalar um ambiente
renv
com umlockfile
do DBFS
Instalar renv
O senhor pode instalar o renv
como uma biblioteca com escopo de clustering ou como uma biblioteca com escopo de Notebook. Para instalar o renv
como uma biblioteca com escopo de Notebook, use:
require(devtools)
install_version(
package = "renv",
repos = "http://cran.us.r-project.org"
)
Databricks recomenda o uso de um Snapshot do CRAN como repositório para corrigir a versão do pacote.
Inicializar a sessão renv
com a biblioteca R pré-instalada
A primeira etapa ao usar renv
é inicializar uma sessão usando renv::init()
. Defina libPaths
para alterar o local default download 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 pacote adicional
Agora o senhor pode usar o API do renv
para instalar e remover o R pacote. Por exemplo, para instalar a versão mais recente do digest
, execute o seguinte dentro de uma célula do Notebook.
renv::install("digest")
Para instalar uma versão antiga do digest
, execute o seguinte dentro de uma célula do Notebook.
renv::install("digest@0.6.18")
Para instalar digest
a partir de GitHub, execute o seguinte dentro de uma célula do Notebook.
renv::install("eddelbuettel/digest")
Para instalar um pacote do Bioconductor, execute o seguinte dentro de uma célula do Notebook.
# (note: requires the BiocManager package)
renv::install("bioc::Biobase")
Observe que a API renv::install
usa o cacherenv
.
Use renv
para salvar o ambiente do R Notebook em DBFS
Execute o seguinte comando uma vez antes de salvar o ambiente.
renv::settings$snapshot.type("all")
Isso define o site renv
para fazer o Snapshot de todos os pacotes que estão instalados no site libPaths
, não apenas daqueles que estão sendo usados no momento no Notebook. Consulte a documentação do renv para obter mais informações.
Agora o senhor pode executar o seguinte dentro de uma célula do 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 site lockfile
, capturando todos os pacotes instalados no site libPaths
. Ele também move seu lockfile
do sistema de arquivos local para DBFSonde ele persiste mesmo que o clustering seja encerrado ou reiniciado.
Reinstalar um ambiente renv
com um lockfile
do DBFS
Primeiro, certifique-se de que o novo clustering esteja executando uma versão idêntica do site Databricks Runtime, como aquela em que o ambiente renv
foi criado pela primeira vez. Isso garante que o pacote R pré-instalado seja idêntico. O senhor pode encontrar uma lista desses itens nas notas sobre a versão de cada tempo de execução. Depois de instalar renv
o, execute o seguinte dentro de uma célula do 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 o lockfile
de DBFS para o sistema de arquivos local e, em seguida, restaura qualquer pacote especificado no lockfile
.
Para evitar erros de repositório ausentes, exclua o pacote Rserve
e SparkR
da restauração do pacote. Esses dois pacotes são pré-instalados em todos os tempos de execução.
renv
Cache
Um recurso muito útil do renv
é o cache de pacote global, que é compartilhado por todos os projetos do renv
no clustering. Ele acelera os tempos de instalação e economiza espaço em disco. O cache renv
não armazena em cache os downloads do pacote por meio do devtools
API ou install.packages()
com quaisquer argumentos adicionais que não sejam pkgs
.