renv em 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 da biblioteca R para seu projeto, salvar o estado dessas bibliotecas em um lockfile e posteriormente restaurar as bibliotecas conforme necessário. Juntas, essas ferramentas podem ajudar a tornar os projetos mais isolados, portáteis e reprodutíveis.

Básico renv fluxo de trabalho

Instalar renv

Você pode instalar renv como uma biblioteca com escopo definidoclusters ou como uma biblioteca com escopo definidoNotebook. Para instalar renv como uma biblioteca com escopo Notebook , use:

require(devtools)

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

Databricks recomenda usar um Snapshot CRAN como o repositório para corrigir a versão do pacote.

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

A primeira passo ao usar renv é inicializar uma sessão usando renv::init(). Defina libPaths para alterar o local downloads default 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 pacotes adicionais

Agora você pode usar a API do renvpara instalar e remover pacotes do R. Por exemplo, para instalar a versão mais recente de digest, execute o seguinte dentro de uma célula Notebook .

renv::install("digest")

Para instalar uma versão antiga do digest, execute o seguinte dentro de uma célula Notebook .

renv::install("digest@0.6.18")

Para instalar digest do GitHub, execute o seguinte dentro de uma célula Notebook .

renv::install("eddelbuettel/digest")

Para instalar um pacote do Bioconductor, execute o seguinte dentro de uma célula Notebook .

# (note: requires the BiocManager package)
renv::install("bioc::Biobase")

Observe que a API renv::install usa o cache renv.

Use renv para salvar seu ambiente R Notebook em DBFS

execute o seguinte comando uma vez antes de salvar o ambiente.

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

Isso define renv como Snapshot de todos os pacotes instalados em libPaths, não apenas aqueles que são usados atualmente no Notebook. Consulte a documentação do renv para obter mais informações.

Agora você pode executar o seguinte dentro de uma célula 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 DBFS, onde persiste mesmo se seus clusters terminarem ou reiniciarem.

Reinstale um ambiente renv dado um lockfile do DBFS

Primeiro, certifique-se de que seus novos clusters estejam executando uma versão do Databricks Runtime idêntica àquela em que você criou o ambiente renv pela primeira vez. Isso garante que os pacotes R pré-instalados sejam idênticos. Você pode encontrar uma lista deles nas notas sobre a versão de cada runtime. Depois de instalar renv, execute o seguinte dentro de uma célula 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 seu lockfile do DBFS para o sistema de arquivos local e, em seguida, restaura todos os pacotes especificados no lockfile.

Observação

Para evitar erros de repositório ausente, exclua os pacotes Rserve e SparkR da restauração do pacote. Ambos os pacotes são pré-instalados em todos os Runtime.

renv Cache

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