renv
no Azure Databricks
renv é um pacote R que permite aos utilizadores gerir dependências R específicas do bloco de notas.
Com renv
o , pode criar e gerir o ambiente da biblioteca R para o seu projeto, guardar o estado destas bibliotecas numa lockfile
biblioteca e, posteriormente, restaurar bibliotecas conforme necessário. Em conjunto, estas ferramentas podem ajudar a tornar os projetos mais isolados, portáteis e reproduzíveis.
Fluxo de trabalho básico renv
Nesta secção:
- Instalar
renv
- Inicializar
renv
sessão com bibliotecas R pré-instaladas - Utilizar
renv
para instalar pacotes adicionais - Utilize
renv
para guardar o ambiente do bloco de notas R no DBFS - Reinstalar um
renv
ambiente fornecidolockfile
pelo DBFS
Instalar renv
Pode instalar renv
como uma biblioteca com âmbito de cluster ou como uma biblioteca com âmbito de bloco de notas. Para instalar renv
como uma biblioteca com âmbito de bloco de notas, utilize:
require(devtools)
install_version(
package = "renv",
repos = "http://cran.us.r-project.org"
)
O Databricks recomenda a utilização de um instantâneo CRAN como o repositório para corrigir a versão do pacote.
Inicializar renv
sessão com bibliotecas R pré-instaladas
O primeiro passo ao utilizar renv
é inicializar uma sessão com renv::init()
. Defina libPaths
para alterar a localização de transferência predefinida para ser o caminho da biblioteca com âmbito de bloco de notas R.
renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths())
Utilizar renv
para instalar pacotes adicionais
Agora, pode utilizar renv
a API para instalar e remover pacotes R. Por exemplo, para instalar a versão mais recente do digest
, execute o seguinte dentro de uma célula do bloco de notas.
renv::install("digest")
Para instalar uma versão antiga do digest
, execute o seguinte dentro de uma célula do bloco de notas.
renv::install("digest@0.6.18")
Para instalar digest
a partir do GitHub, execute o seguinte dentro de uma célula do bloco de notas.
renv::install("eddelbuettel/digest")
Para instalar um pacote a partir do Biocondutor, execute o seguinte dentro de uma célula do bloco de notas.
# (note: requires the BiocManager package)
renv::install("bioc::Biobase")
Tenha em atenção que a renv::install
API utiliza a Cache renv.
Utilize renv
para guardar o ambiente do bloco de notas R no DBFS
Execute o seguinte comando uma vez antes de guardar o ambiente.
renv::settings$snapshot.type("all")
Isto define renv
como instantâneo todos os pacotes que estão instalados no libPaths
e não apenas os que são atualmente utilizados no bloco de notas. Veja a documentação do renv para obter mais informações.
Agora, pode executar o seguinte dentro de uma célula do bloco de notas para guardar o estado atual do seu ambiente.
renv::snapshot(lockfile="/dbfs/PATH/TO/WHERE/YOU/WANT/TO/SAVE/renv.lock", force=TRUE)
Esta ação atualiza o lockfile
ao capturar todos os pacotes instalados no libPaths
. Também move o seu lockfile
do sistema de ficheiros local para o DBFS, onde persiste mesmo que o cluster termine ou reinicie.
Reinstalar um renv
ambiente fornecido lockfile
pelo DBFS
Primeiro, certifique-se de que o novo cluster está a executar uma versão do Databricks Runtime idêntica à que criou o renv
ambiente pela primeira vez. Isto garante que os pacotes R pré-instalados são idênticos. Pode encontrar uma lista destas notas nas notas de versão de cada runtime. Depois de Instalar renv, execute o seguinte dentro de uma célula do bloco de notas.
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"))
Isto copia o seu lockfile
do DBFS para o sistema de ficheiros local e, em seguida, restaura quaisquer pacotes especificados no lockfile
.
Nota
Para evitar erros de repositório em falta, exclua os Rserve
pacotes e SparkR
do restauro do pacote. Ambos os pacotes estão pré-instalados em todos os runtimes.
renv
Cache
Uma funcionalidade muito útil do é a sua cache de renv
pacote global, que é partilhada em todos os renv
projetos no cluster. Acelera os tempos de instalação e poupa espaço em disco. A renv
cache não coloca em cache pacotes transferidos através da devtools
API ou install.packages()
com outros argumentos pkgs
que não .