Partilhar via


renv no Azure Databricks

renv é um pacote R que permite aos utilizadores gerir dependências R específicas do bloco de notas.

Com renvo , pode criar e gerir o ambiente da biblioteca R para o seu projeto, guardar o estado destas bibliotecas numa lockfilebiblioteca e, posteriormente, restaurar bibliotecas conforme necessário. Em conjunto, estas 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

Pode instalar renv como uma biblioteca com âmbito de cluster ou como uma biblioteca com âmbito de bloco de notas. Para instalar renv como uma biblioteca com âmbito de bloco de notas, utilize:

require(devtools)

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

O Databricks recomenda a utilização de um instantâneo CRAN como o repositório para corrigir a versão do pacote.

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

O primeiro passo ao utilizar renv é inicializar uma sessão com renv::init(). Defina libPaths para alterar a localização de transferência predefinida para ser o caminho da biblioteca com âmbito de bloco de notas R.

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

Utilizar renv para instalar pacotes adicionais

Agora, pode utilizar renva API para instalar e remover pacotes R. Por exemplo, para instalar a versão mais recente do digest, execute o seguinte dentro de uma célula do bloco de notas.

renv::install("digest")

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

renv::install("digest@0.6.18")

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

renv::install("eddelbuettel/digest")

Para instalar um pacote a partir do Biocondutor, execute o seguinte dentro de uma célula do bloco de notas.

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

Tenha em atenção que a renv::install API utiliza a Cache renv.

Utilize renv para guardar o ambiente do bloco de notas R no DBFS

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

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

Isto define renv como instantâneo todos os pacotes que estão instalados no libPathse não apenas os que são atualmente utilizados no bloco de notas. Veja a documentação do renv para obter mais informações.

Agora, pode executar o seguinte dentro de uma célula do bloco de notas para guardar o estado atual do seu ambiente.

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

Esta ação atualiza o lockfile ao capturar todos os pacotes instalados no libPaths. Também move o seu lockfile do sistema de ficheiros local para o DBFS, onde persiste mesmo que o cluster termine ou reinicie.

Reinstalar um renv ambiente fornecido lockfile pelo DBFS

Primeiro, certifique-se de que o novo cluster está a executar uma versão do Databricks Runtime idêntica à que criou o renv ambiente pela primeira vez. Isto garante que os pacotes R pré-instalados são idênticos. Pode encontrar uma lista destas notas nas notas de versão de cada runtime. Depois de Instalar renv, execute o seguinte dentro de uma célula do bloco de notas.

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"))

Isto copia o seu lockfile do DBFS para o sistema de ficheiros local e, em seguida, restaura quaisquer pacotes especificados no lockfile.

Nota

Para evitar erros de repositório em falta, exclua os Rserve pacotes e SparkR do restauro do pacote. Ambos os pacotes estão pré-instalados em todos os runtimes.

renv Cache

Uma funcionalidade muito útil do é a sua cache de renvpacote global, que é partilhada em todos os renv projetos no cluster. Acelera os tempos de instalação e poupa espaço em disco. A renv cache não coloca em cache pacotes transferidos através da devtools API ou install.packages() com outros argumentos pkgsque não .