Библиотеки R, ограниченные областью записной книжки
R-библиотеки с областью действия, ограниченной ноутбуком, позволяют создавать и изменять пользовательские среды R, привязанные к сеансу ноутбука. При установке библиотеки R, область действия которой ограничена записной книжкой, доступ к этой библиотеке будет иметь только текущая записная книжка и все задания, связанные с этой записной книжкой. На другие записные книжки, подключенные к тому же кластеру, это не повлияет.
Библиотеки, область действия которых ограничена записной книжкой, не сохраняются между сеансами. Необходимо переустанавливать библиотеки, область действия которых ограничена записной книжкой, в начале каждого сеанса или при отсоединении записной книжки от кластера.
Библиотеки, область действия которых ограничена записной книжкой, автоматически доступны для рабочих для пользовательских функций Spark.
Чтобы установить библиотеки для всех записных книжек, подключенных к кластеру, используйте установленные кластером библиотеки. Дополнительные сведения см. в статье Библиотеки кластера.
Установка библиотек, область действия которых ограничена записной книжкой, в R
Вы можете использовать любой знакомый метод установки пакетов в R, например install.packages(), API-интерфейсы разработки или Bioconductor.
Пакеты R доступны для рабочих узлов, а также узла драйвера.
Управление библиотеками, область действия которых ограничена записной книжкой, в R
В этом разделе рассматриваются следующие вопросы.
Установка пакета
require(devtools)
install_version(
package = "caesar",
repos = "http://cran.us.r-project.org"
)
Databricks рекомендует использовать снимок состояния CRAN в качестве репозитория, чтобы гарантировать воспроизводимые результаты.
devtools::install_github("klutometis/roxygen")
Удаление пакета R из среды записной книжки
Чтобы удалить библиотеку, привязанную к записной книжке, используйте команду remove.packages()
.
remove.packages("caesar")
Библиотеки R, область действия которых ограничена записной книжкой, с пользовательскими функциями Spark
В этом разделе рассматриваются следующие вопросы.
- Библиотеки R, область действия которых ограничена записной книжкой, и SparkR
- Библиотеки R, область действия которых ограничена записной книжкой, и пакет sparklyr
- Изоляция библиотек и размещенное RStudio
Библиотеки R, область действия которых ограничена записной книжкой, и SparkR
Библиотеки, ограниченные областью записной книжки, доступны рабочим SparkR; просто импортируйте библиотеку, чтобы использовать ее. Например, можно выполнить следующее, чтобы создать сообщение, зашифрованное с использованием шифра Цезаря, с использованием 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)
Библиотеки R, область действия которых ограничена записной книжкой, и sparklyr
По умолчанию в sparklyr::spark_apply()
аргумент packages
имеет значение TRUE
. При этом в рабочие процессы копируются библиотеки в текущем libPaths
, позволяющие импортировать и использовать их в рабочих процессах. Например, выполните следующую команду, чтобы создать сообщение, зашифрованное с помощью шифра Цезаря и 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)
Если вы не хотите, чтобы библиотеки были доступны для рабочих, задайте для packages
значение FALSE
.
Изоляция библиотек и размещенного проекта RStudio
RStudio создает отдельный путь к библиотеке для каждого пользователя, поэтому пользователи изолированы друг от друга. Однако путь к библиотеке недоступен на рабочих. Если вы хотите использовать пакет внутри рабочих ролей SparkR в задании, запущенном из RStudio, необходимо установить его с помощью библиотек кластера.
В качестве альтернативы, если вы используете пользовательские функции sparklyr, пакеты, установленные в RStudio, доступны для работников при использовании spark_apply(..., packages = TRUE)
.
Вопросы и ответы
Как установить пакет только на драйвер для всех записных книжек R?
Явным образом задайте для каталога установки значение /databricks/spark/R/lib
. Например, с помощью install.packages()
выполните install.packages("pckg", lib="/databricks/spark/R/lib")
.
Пакеты, установленные в /databricks/spark/R/lib
, доступны для всех записных книжек в кластере, но недоступны для воркеров SparkR. Чтобы совместно использовать библиотеки между записными книжками и исполнителями, используйте библиотеки кластера.
Выполняется ли кэширование библиотек, область действия которых ограничена блокнотом?
В кластере не реализовано кэширование библиотек, область действия которых ограничена ноутбуком. Если вы установите пакет в записной книжке, а другой пользователь установит тот же пакет в другой записной книжке в том же кластере, то пакет будет загружен, скомпилирован и установлен повторно.