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 - Inicializar a sessão
renvcom a biblioteca R pré-instalada - Use
renvpara instalar pacote adicional - Use
renvpara salvar o ambiente do R Notebook em DBFS - Reinstalar um ambiente
renvcom umlockfiledo DBFS
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:
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.
renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths())
Use renv para instalar pacote adicional
Agora, o senhor pode usar o renv's API para 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.
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 de 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 cacherenv.
Use renv para salvar o ambiente do R Notebook em DBFS
Execute o seguinte comando uma vez antes de salvar o ambiente.
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.
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 do Databricks Runtime idêntica àquela 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.
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.
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.