Partilhar via


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 lockfilee, 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

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 renvpara 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.