Compartilhar via


Bibliotecas de R no escopo de notebook

Bibliotecas do R no escopo de notebook permitem criar e modificar ambientes do R personalizados específicos para uma sessão de notebook. Quando você instala uma biblioteca do R no escopo de notebook, somente o notebook atual e todos os trabalhos a ele associados têm acesso a essa biblioteca. Outros notebooks anexados ao mesmo cluster não são afetados.

As bibliotecas no escopo do notebook não persistem entre sessões. Você deve reinstalar bibliotecas no escopo do notebook no início de cada sessão, ou sempre que o notebook for desvinculado de um cluster.

As bibliotecas no escopo de notebook ficam automaticamente disponíveis em trabalhos para UDFs do SparkR.

Para instalar bibliotecas para todos os notebooks anexados a um cluster, use bibliotecas instaladas pelo cluster. Consulte as Bibliotecas de cluster.

Instalar bibliotecas no escopo de notebook no R

Você pode usar qualquer método familiar de instalação de pacotes no R, como install.packages(), APIs Devtools ou Bioconductor.

Os pacotes R são acessíveis aos nós de trabalho, bem como ao nó do driver.

Gerenciar bibliotecas no escopo de notebook no R

Nesta seção:

Instalar um pacote

require(devtools)

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

A Databricks recomenda o uso de um instantâneo CRAN como repositório, para garantir resultados reproduzíveis.

devtools::install_github("klutometis/roxygen")

Remover um pacote do R de um ambiente de notebook

Para remover uma biblioteca no escopo de notebook de um notebook, use o comando remove.packages().

remove.packages("caesar")

Bibliotecas do R no escopo de notebook com UDFs Spark

Nesta seção:

Bibliotecas do R no escopo de notebook e SparkR

As bibliotecas no escopo de notebook estão disponíveis em trabalhos do SparkR; basta importar uma biblioteca para usá-la. Por exemplo, você pode executar a seguinte instrução para gerar uma mensagem criptografada por Caesar com um UDF do SparkR:

require(devtools)

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

library(SparkR)
sparkR.session()

hello <- function(x) {
  library(caesar)
  caesar("hello world")
}

spark.lapply(c(1, 2), hello)

Bibliotecas do R no escopo de rede e sparklyr

Por padrão, em sparklyr::spark_apply(), o argumento packages é definido como TRUE. Isso copia bibliotecas no atual libPaths para os trabalhos, permitindo importá-las e usá-las em trabalhos. Por exemplo, você pode executar a seguinte instrução para gerar uma mensagem criptografada por Caesar com sparklyr::spark_apply():

require(devtools)

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

library(sparklyr)
sc <- spark_connect(method = 'databricks')

apply_caes <- function(x) {
  library(caesar)
  caesar("hello world")
}

sdf_len(sc, 5) %>%
  spark_apply(apply_caes)

Se você não quiser que as bibliotecas estejam disponíveis em trabalhos, defina packages como FALSE.

Isolamento de biblioteca e RStudio hospedado

O RStudio cria um caminho de biblioteca separado para cada usuário; assim, os usuários ficam isolados. No entanto, o caminho da biblioteca não está disponível em trabalhos. Se você quiser usar um pacote dentro dos trabalhos do SparkR em um trabalho iniciado a partir do RStudio, precisará instalá-lo usando as bibliotecas do cluster.

Como alternativa, se você usar UDFs do sparklyr, os pacotes instalados no RStudio estarão disponíveis para trabalhos ao usar spark_apply(..., packages = TRUE).

Perguntas frequentes (FAQ)

Como fazer para instalar um pacote apenas no driver para todos os notebooks do R?

Defina explicitamente o diretório de instalação como /databricks/spark/R/lib. Por exemplo, com install.packages(), execute install.packages("pckg", lib="/databricks/spark/R/lib"). Os pacotes instalados em /databricks/spark/R/lib são compartilhados entre todos os notebooks no cluster, mas não são acessíveis aos trabalhos do SparkR. Para compartilhar bibliotecas entre notebooks e também entre trabalhos, use as bibliotecas de cluster.

As bibliotecas no escopo de notebook são armazenadas em cache?

Não há armazenamento em cache implementado para bibliotecas no escopo de notebook em cluster. Se você instalar um pacote em um notebook e outro usuário instalar o mesmo pacote em outro notebook no mesmo cluster, esse pacote será novamente baixado, compilado e instalado.