共用方式為


R 程式庫管理

程式庫提供您可能想要包含在 Microsoft Fabric Spark 程式或專案中的可重複使用程式碼。

Microsoft Fabric 支援具有許多熱門開放原始碼 R 套件的 R 執行階段,包括預先安裝的 TidyVerse。 啟動 Spark 執行個體時,會自動包含這些程式庫,並且可在筆記本或 Spark 作業定義中立即使用。

出於各種原因,您可能需要更新 R 程式庫。 例如,您的其中一個核心相依項已發行新版本,或您的團隊已建置需要在 Spark 叢集中提供的自訂套件。

根據您的案例,您可能想要包含兩種類型的程式庫:

  • 摘要程式庫是指位於公用來源或存放庫中的程式庫,例如 CRAN 或 GitHub。

  • 自訂程式庫是指您或貴組織建置的程式碼,可透過程式庫管理入口網站來管理 .tar.gz

Microsoft Fabric 上安裝了兩個層級的套件:

  • 環境:透過環境來管理程式庫,以跨多個筆記本或作業重複使用同一程式庫集。

  • 工作階段:工作階段層級安裝會針對特定筆記本工作階段建立環境。 工作階段之間不會保存工作階段層級程式庫的變更。

總結目前可用的 R 程式庫管理行為:

程式庫類型 環境安裝 工作階段層級安裝
R 摘要 (CRAN) 不支援 支援
R 自訂 支援 支援

必要條件

工作階段層級 R 程式庫

執行互動式資料分析或機器學習時,您可嘗試較新的套件,或可能需要工作區上目前無法使用的套件。 您可以使用工作階段範圍套件來新增、管理和更新工作階段相依項,而不是更新工作區設定。

  • 您在安裝工作階段範圍的程式庫時,只有目前的筆記本可存取指定的程式庫。
  • 這些程式庫不會影響使用相同 Spark 集區的其他工作階段或工作。
  • 這些程式庫會安裝在基礎執行階段和集區層級程式庫之上。
  • 筆記本程式庫具有最高優先順序。
  • 工作階段範圍的 R 程式庫不會跨工作階段保存。 執行相關的安裝命令時,會在每個工作階段開始時安裝這些程式庫。
  • 工作階段範圍的 R 程式庫會自動安裝在驅動程式和背景工作角色節點。

注意

執行管線工作時,會停用管理 R 程式庫的命令。 如果您想要在管線內安裝套件,您必須在工作區層級使用程式庫管理功能。

從 CRAN 安裝 R 套件

您可以從 CRAN 輕鬆安裝 R 程式庫。

# install a package from CRAN
install.packages(c("nycflights13", "Lahman"))

您還可以使用 CRAN 快照做為存放庫,以確保每次下載相同的套件版本。

# install a package from CRAN snapsho
install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

使用 devtools 安裝 R 套件

devtools 程式庫可簡化套件開發,以加速一般工作。 此程式庫會在預設 Microsoft Fabric 執行階段內安裝。

您可以使用 devtools 來指定要安裝的特定程式庫版本。 這些程式庫會安裝在叢集內的所有節點中。

# Install a specific version. 
install_version("caesar", version = "1.0.0")

同樣地,您可以直接透過 GitHub 安裝程式庫。

# Install a GitHub library. 

install_github("jtilly/matchingR")

目前,Microsoft Fabric 支援下列 devtools 函數:

Command 描述
install_github() 透過 GitHub 安裝 R 套件
install_gitlab() 透過 GitLab 安裝 R 套件
install_bitbucket() 透過 BitBucket 安裝 R 套件
install_url() 透過任意網址安裝 R 套件
install_git() 透過任意 Git 存放庫安裝
install_local() 透過磁碟上的本機檔案安裝
install_version() 透過 CRAN 上的特定版本安裝

安裝 R 自訂程式庫

若要使用工作階段層級自訂程式庫,您必須先將其上傳至連結的 Lakehouse。

  1. 在左側,選取 [新增] ,以新增現有的 Lakehouse 或建立 Lakehouse。

    如何將 Lakehouse 新增至筆記本的螢幕擷取畫面。

  2. 若要將檔案新增至此 Lakehouse,請選取您的工作區,然後選取 Lakehouse。

    如何瀏覽至 Lakehouse 以新增檔案的螢幕擷取畫面。

  3. 以滑鼠右鍵按一下或選取檔案旁的 "...",以上傳您的 .tar.gz 檔案。

    如何將您的檔案上傳至 Lakehouse Files 資料夾的螢幕擷取畫面。

  4. 上傳之後,返回您的筆記本。 使用下列命令將自訂程式庫安裝到您的工作階段:

    install.packages("filepath/filename.tar.gz", repos = NULL, type = "source")
    

檢視安裝的程式庫

使用 library 命令查詢工作階段內安裝的所有程式庫。

# query all the libraries installed in current session
library()

使用 packageVersion 函數檢查程式庫的版本:

# check the package version
packageVersion("caesar")

從工作階段中移除 R 套件

您可以使用 detach 函數,從命名空間中移除程式庫。 這些程式庫會保留在磁碟上,直至在此將其載入。

# detach a library

detach("package: caesar")

若要從筆記本中移除工作階段範圍的套件,請使用 remove.packages() 命令。 此程式庫變更不會影響相同叢集上的其他工作階段。 使用者無法解除安裝或移除預設 Microsoft Fabric 執行階段的內建程式庫。

注意

您無法移除 SparkR、SparklyR 或 R 等核心套件。

remove.packages("caesar")

工作階段範圍的 R 程式庫和 SparkR

SparkR 背景工作角色提供筆記本範圍的程式庫。

install.packages("stringr")
library(SparkR)

str_length_function <- function(x) {
  library(stringr)
  str_length(x)
}

docs <- c("Wow, I really like the new light sabers!",
               "That book was excellent.",
               "R is a fantastic language.",
               "The service in this restaurant was miserable.",
               "This is neither positive or negative.")

spark.lapply(docs, str_length_function)

工作階段範圍的 R 程式庫和 sparklyr

藉助 sparklyr 中的 spark_apply(),您可以使用 Spark 內的任何 R 套件。 根據預設,在 sparklyr::spark_apply() 中,套件引數會設定為 FALSE。 這會將目前 libPaths 中的程式庫複製到背景工作角色,讓您在背景工作角色匯入和使用程式庫。 例如,您可以執行下列命令來產生具有 sparklyr::spark_apply() 的 Caesar 加密訊息:

install.packages("caesar", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)

apply_cases <- function(x) {
  library(caesar)
  caesar("hello world")
}
sdf_len(sc, 5) %>%
  spark_apply(apply_cases, packages=FALSE)

深入了解 R 功能: