Pular para o conteúdo principal

renv no Databricks

O renv é um pacote do R que permite aos usuários gerenciar dependências do R específicas para o Notebook.

Usando o site renv, o senhor pode criar e gerenciar o ambiente da biblioteca R para o seu projeto, salvar o estado dessa biblioteca em um site lockfile e, posteriormente, restaurar a biblioteca conforme necessário. Juntas, essas ferramentas podem ajudar a tornar os projetos mais isolados, portáteis e reproduzíveis.

Básico renv fluxo de trabalho

Nesta secção:

Instalar renv

O senhor pode instalar o renv como uma biblioteca com escopo de clustering ou como uma biblioteca com escopo de Notebook. Para instalar o renv como uma biblioteca com escopo de Notebook, use:

R
require(devtools)

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

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

Inicializar a sessão renv com a biblioteca R pré-instalada

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

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

Use renv para instalar pacote adicional

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

R
renv::install("digest")

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

R
renv::install("digest@0.6.18")

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

R
renv::install("eddelbuettel/digest")

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

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

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

Use renv para salvar o ambiente do R Notebook em DBFS

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

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

Isso define o site renv para fazer o Snapshot de todos os pacotes que estão instalados no site libPaths, não apenas daqueles que estão sendo usados no momento no Notebook. Consulte a documentação do renv para obter mais informações.

Agora o senhor pode executar o seguinte dentro de uma célula do Notebook para salvar o estado atual do seu ambiente.

R
renv::snapshot(lockfile="/dbfs/PATH/TO/WHERE/YOU/WANT/TO/SAVE/renv.lock", force=TRUE)

Isso atualiza o site lockfile, capturando todos os pacotes instalados no site libPaths. Ele também move seu lockfile do sistema de arquivos local para DBFSonde ele persiste mesmo que o clustering seja encerrado ou reiniciado.

Reinstalar um ambiente renv com um lockfile do DBFS

Primeiro, certifique-se de que o novo clustering esteja executando uma versão idêntica do site Databricks Runtime, como aquela em que o ambiente renv foi criado pela primeira vez. Isso garante que o pacote R pré-instalado seja idêntico. O senhor pode encontrar uma lista desses itens nas notas sobre a versão de cada tempo de execução. Depois de instalar renv o, execute o seguinte dentro de uma célula do Notebook.

R
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 de DBFS para o sistema de arquivos local e, em seguida, restaura qualquer pacote especificado no lockfile.

nota

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

renv Cache

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