Compartilhar via


renv no Azure Databricks

renv é um pacote de R que permite aos usuários gerenciar dependências de 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, restaurar 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 seção:

Instalarrenv:

Você pode instalar renv como uma biblioteca com escopo de cluster ou como uma biblioteca com escopo de notebook. Para instalar renv como uma biblioteca com escopo de notebook, use:

require(devtools)

install_version(
  package = "renv",
  repos   = "http://cran.us.r-project.org"
)

A Databricks recomenda usar um instantâneo CRAN como repositório para corrigir a versão do pacote.

Inicializar sessão renv com bibliotecas de R pré-instaladas

A primeira etapa ao usar renv é inicializar uma sessão usando renv::init(). Defina libPaths para alterar o local de download padrão para ser o caminho da biblioteca no escopo do notebook R.

renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths())

Usar 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 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 do 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 Cache renv.

Usar renv para salvar seu ambiente de notebook R em DBFS

Execute o comando a seguir uma vez antes de salvar o ambiente.

renv::settings$snapshot.type("all")

Isso configura renv para fazer um instantâneo de todos os pacotes instalados em libPaths, não apenas os que estão sendo usados atualmente no notebook. Confira a documentação do renv para obter mais informações.

Agora você 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 lockfile capturando todos os pacotes instalados em libPaths. Ele também move seu lockfile do sistema de arquivos local para o DBFS, onde ele persiste mesmo que seu cluster seja encerrado ou reiniciado.

Reinstalar um ambiente renv dado um lockfile do DBFS

Primeiro, garanta que seu novo cluster esteja executando uma versão do Databricks Runtime idêntica àquela em que você criou o ambiente renv. Isso garante que os pacotes do R pré-instalados sejam idênticos. Você pode encontrar uma lista delas nas notas sobre a versão de cada tempo de execução. Depois de Instalar o renv, 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 do DBFS para o sistema de arquivos local e restaura todos os pacotes especificados no lockfile.

Observação

Para evitar erros de repositório ausentes, exclua os pacotes Rservee SparkR da restauração de pacote. Ambos os pacotes são pré-instalados em todos os tempos de execução.

renvCache

Um recurso muito útil de renv é o cache de pacote global, que é compartilhado por todos os projetos renv no cluster. Ele acelera os tempos de instalação e economiza espaço em disco. O cache renv não armazena em cache os pacotes baixados por meio da API devtools ou install.packages() com outros argumentos adicionais que não sejam pkgs.