Partilhar via


Bibliotecas R com âmbito de bloco de notas

As bibliotecas R com escopo de bloco de anotações permitem criar e modificar ambientes R personalizados específicos de uma sessão de bloco de anotações. Quando você instala uma biblioteca com escopo de bloco de anotações R, somente o bloco de anotações atual e quaisquer trabalhos associados a esse bloco de anotações têm acesso a essa biblioteca. Outros blocos de anotações conectados ao mesmo cluster não são afetados.

As bibliotecas com escopo de bloco de anotações não persistem entre sessões. Você deve reinstalar bibliotecas com escopo de bloco de anotações no início de cada sessão ou sempre que o bloco de anotações for desanexado de um cluster.

As bibliotecas com escopo de bloco de anotações estão automaticamente disponíveis nos trabalhadores para UDFs do SparkR.

Para instalar bibliotecas para todos os blocos de anotações conectados a um cluster, use bibliotecas instaladas em cluster. Veja Bibliotecas de cluster.

Instalar bibliotecas com escopo de bloco de anotações no R

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

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

Gerenciar bibliotecas com escopo de bloco de anotações em R

Nesta secçã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")

Remove um pacote R a partir de um ambiente de notebook

Para remove uma biblioteca com escopo de bloco de anotações a partir de um bloco de anotações, use o comando remove.packages().

remove.packages("caesar")

Bibliotecas R com escopo de bloco de anotações com UDFs do Spark

Nesta secção:

Bibliotecas R com escopo de notebook e SparkR

As bibliotecas com escopo de notebook estão disponíveis em trabalhadores SparkR; basta importar uma biblioteca para usá-la. Por exemplo, pode-se executar o seguinte para generate uma mensagem encriptada em César com um UDF de 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 R com escopo de notebook e sparklyr

Por padrão, no sparklyr::spark_apply(), o argumento packages é set para TRUE. Isso copia as bibliotecas atuais libPaths para os trabalhadores, permitindo que você as importe e use em trabalhadores. Por exemplo, pode-se executar o seguinte para generate uma mensagem com o ciframento César usando 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 não quiser que as bibliotecas estejam disponíveis nos trabalhadores, setpackages para FALSE.

Isolamento da biblioteca e RStudio hospedado

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

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

Perguntas mais frequentes (FAQ)

Como faço para instalar um pacote apenas no driver para todos os notebooks R?

Especificamente defina set como o diretório de instalação para /databricks/spark/R/lib. Por exemplo, com install.packages(), execute install.packages("pckg", lib="/databricks/spark/R/lib"). Os pacotes instalados são compartilhados em /databricks/spark/R/lib todos os blocos de anotações do cluster, mas não são acessíveis aos trabalhadores do SparkR. Para compartilhar bibliotecas entre blocos de anotações e também entre trabalhadores, use bibliotecas de cluster.

As bibliotecas com escopo de bloco de anotações são armazenadas em cache?

Não há cache implementado para bibliotecas com escopo de bloco de anotações em um cluster. Se você instalar um pacote em um bloco de anotações e outro usuário instalar o mesmo pacote em outro bloco de anotações no mesmo cluster, o pacote será baixado, compilado e instalado novamente.