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

Remover um pacote R de um ambiente de bloco de notas

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

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, você pode executar o seguinte para gerar uma mensagem criptografada por césar com um UDF 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, em sparklyr::spark_apply(), o packages argumento é definido como TRUE. Isso copia as bibliotecas atuais libPaths para os trabalhadores, permitindo que você as importe e use em trabalhadores. Por exemplo, você pode executar o seguinte para gerar uma mensagem criptografada com césar 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 não quiser que as bibliotecas estejam disponíveis nos trabalhadores, defina packages como 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?

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 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.