renv
no Azure 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 de biblioteca R para seu projeto, salvar o estado dessas bibliotecas em um lockfile
e, posteriormente, restore bibliotecas conforme necessário. Juntas, essas 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 -
Use
renv
para instalar pacotes adicionais -
Use
renv
para salvar seu ambiente de notebook R no DBFS -
Reinstalar um
renv
ambiente dado alockfile
partir de DBFS
Instalar renv
Você pode instalar renv
como uma biblioteca com escopo de cluster ou como uma biblioteca com escopo de bloco de anotações. Para instalar renv
como uma biblioteca com escopo de bloco de anotações, use:
require(devtools)
install_version(
package = "renv",
repos = "http://cran.us.r-project.org"
)
O Databricks recomenda o uso de um instantâneo CRAN como repositório para corrigir a versão do pacote.
Inicializar renv
sessão com bibliotecas R pré-instaladas
A primeira etapa ao usar renv
é inicializar uma sessão usando renv::init()
o .
Set
libPaths
alterar o local de download padrão para ser seu caminho de biblioteca com escopo de bloco de anotações do R.
renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths())
Use renv
para instalar pacotes adicionais
Agora tu podes usar a API do renv
para instalar e remove R pacotes. Por exemplo, para instalar a versão mais recente do digest
, execute o seguinte dentro de uma célula do bloco de anotações.
renv::install("digest")
Para instalar uma versão antiga do digest
, execute o seguinte dentro de uma célula do bloco de anotações.
renv::install("digest@0.6.18")
Para instalar digest
a partir do GitHub, execute o seguinte dentro de uma célula de notebook.
renv::install("eddelbuettel/digest")
Para instalar um pacote do Bioconductor, execute o seguinte dentro de uma célula de notebook.
# (note: requires the BiocManager package)
renv::install("bioc::Biobase")
Observe que a renv::install
API usa o cache renv.
Use renv
para salvar seu ambiente de notebook R no DBFS
Execute o seguinte comando uma vez antes de salvar o ambiente.
renv::settings$snapshot.type("all")
Isso define renv
para capturar instantâneos de todos os pacotes instalados no libPaths
, não apenas daqueles que são usados atualmente no bloco de anotações. Consulte a documentação do renv para obter mais informações.
Agora você pode executar o seguinte dentro de uma célula de bloco de anotações 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 no libPaths
. Ele também move seu lockfile
do sistema de arquivos local para DBFSwhere persiste mesmo se o cluster for encerrado ou reiniciado.
Reinstalar um renv
ambiente dado a lockfile
partir de DBFS
Primeiro, certifique-se de que seu novo cluster esteja executando uma versão do Databricks Runtime idêntica àquela em que você criou o renv
ambiente pela primeira vez. Isso garante que os pacotes R pré-instalados sejam idênticos. Você pode encontrar uma list delas nas notas de versão do de cada tempo de execução.
Depois de instalar o renv, execute o seguinte dentro de uma célula do bloco de anotações.
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 seu lockfile
do DBFS para o sistema de arquivos local e, em seguida, restaura todos os pacotes especificados no lockfile
.
Nota
Para evitar erros de repositório ausentes, exclua os Rserve
pacotes e SparkR
da restauração de pacotes. Ambos os pacotes são pré-instalados em todos os tempos de execução.
renv
Cache
Um recurso muito útil é seu renv
de pacote global, que é compartilhado em todos os renv
projetos no cluster. Ele acelera os tempos de instalação e economiza espaço em disco. O renv
cache não armazena em cache pacotes baixados por meio da devtools
API ou install.packages()
com quaisquer argumentos adicionais além de pkgs
.