分享方式:


筆記本範圍的 R 程式庫

筆記本範圍的 R 連結庫可讓您建立和修改筆記本會話專屬的自定義 R 環境。 當您安裝 R 筆記本範圍連結庫時,只有目前的筆記本和與該筆記本相關聯的任何作業可以存取該連結庫。 附加至相同叢集的其他筆記本不會受到影響。

筆記本範圍的連結庫不會跨會話保存。 您必須在每個會話開始時重新安裝筆記本範圍的連結庫,或每當筆記本從叢集中斷連結時。

SparkR UDF 背景工作角色會自動提供筆記本範圍的連結庫。

若要安裝連結至叢集之所有筆記本的連結庫,請使用已安裝叢集的連結庫。 請參閱叢集程式庫

在 R 中安裝筆記本範圍的連結庫

您可以使用 R 中安裝套件的任何熟悉方法,例如 install.packages()devtools APIBioconductor

背景工作節點和驅動程序節點都可以存取 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")

具有 Spark UDF 的筆記本範圍 R 連結庫

本節內容:

筆記本範圍的 R 連結庫和 SparkR

SparkR 背景工作角色提供筆記本範圍的連結庫;只要匯入連結庫即可使用它。 例如,您可以執行下列命令來產生具有 SparkR UDF 的 Caesar 加密訊息:

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)

如果您不想讓背景工作角色可以使用連結庫,請將 設定 packagesFALSE

連結庫隔離和裝載的 RStudio

RStudio 會為每個使用者建立個別的連結庫路徑;因此,使用者彼此隔離。 不過,背景工作角色無法使用連結庫路徑。 如果您想要在從 RStudio 啟動的作業中使用 SparkR 背景工作角色內的套件,您必須使用叢集連結庫加以安裝。

或者,如果您使用sparklyr UDF,則使用 時,RStudio 內安裝的套件可供背景工作角色使用 spark_apply(..., packages = TRUE)

常見問題集 (FAQ)

如何? 只針對所有 R 筆記本的驅動程式安裝套件?

將安裝目錄明確設定為 /databricks/spark/R/lib。 例如,使用 install.packages()執行 install.packages("pckg", lib="/databricks/spark/R/lib")。 中 /databricks/spark/R/lib 安裝的套件會跨叢集上的所有筆記本共用,但SparkR背景工作角色無法存取這些套件。 若要跨筆記本和背景工作角色共享連結庫,請使用 叢集連結庫

筆記本範圍的連結庫是否快取?

叢集上沒有針對筆記本範圍連結庫實作的快取。 如果您在筆記本中安裝套件,而另一位使用者在相同叢集上的另一個筆記本中安裝相同的套件,則會下載、編譯並再次安裝套件。