共用方式為


管理工作階段範圍的套件

除了集區層級封裝,您也可以在筆記本工作階段開始時,指定工作階段範圍的程式庫。 會話範圍程式庫可讓您在筆記本會話內指定和使用 Python、jar 和 R 套件。

使用會話範圍程式庫時,請務必記住下列幾點:

  • 當您安裝工作階段範圍的程式庫時,只有目前的筆記本可以存取指定的程式庫。
  • 這些程式庫不會影響使用相同 Spark 集區的其他會話或作業。
  • 這些程式庫會安裝在基底執行時間和集區層級程式庫之上,並採用最高優先順序。
  • 會話範圍的程式庫不會跨會話保存。

工作階段範圍的 Python 套件

透過 environment.yml 檔案管理會話範圍的 Python 套件

若要指定工作階段範圍的 Python 套件:

  1. 瀏覽至選取的 Spark 集區,並確定您已啟用工作階段層級的程式庫。 您可以瀏覽至 [管理] > [Apache Spark 集區] > [封裝] 索引標籤,以啟用此設定。啟用工作階段套件的螢幕擷取畫面。
  2. 套用設定之後,您可以開啟筆記本,然後選取 [設定會話>套件]。 指定工作階段套件的螢幕擷取畫面。 上傳 Yml 檔案的螢幕擷取畫面。
  3. 在這裡,您可以上傳 Conda environment.yml 檔案,以在會話內安裝或升級套件。會話啟動時,就會存在指定的程式庫。 會話結束之後,將無法再使用這些程式庫。

透過 %pip%conda 命令管理會話範圍的 Python 套件

您可以使用熱門 的 %pip%conda 命令,在 Apache Spark 筆記本會話期間安裝其他協力廠商程式庫或自訂程式庫。 在本節中,我們使用 %pip 命令來示範數個常見案例。

注意

  • 如果您想要安裝新的程式庫,建議您將 %pip%conda 命令放在筆記本的第一個資料格。 在受管理工作階段層級的程式庫之後,將會重新開機 Python 解譯器,讓變更生效。
  • 執行管線作業時,將會停用管理 Python 程式庫的這些命令。 如果想要在管線內安裝套件,您必須在集區層級利用程式庫管理功能。
  • 會話範圍的 Python 程式庫會自動安裝在驅動程式和背景工作節點。
  • 不支援下列 %conda 命令: createcleancompareactivatedeactivaterunpackage
  • 如需完整的命令清單,您可以參考 %pip 命令%conda 命令

安裝協力廠商套件

您可以輕鬆地從 PyPI安裝 Python 程式庫。

# Install vega_datasets
%pip install altair vega_datasets

若要確認安裝結果,您可以執行下列程式碼來視覺化vega_datasets

# Create a scatter plot
# Plot Miles per gallon against the horsepower across different region

import altair as alt
from vega_datasets import data

cars = data.cars()
alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
).interactive()

從儲存體帳戶安裝滾輪套件

若要從儲存體安裝程式庫,您必須執行下列命令來掛接至儲存體帳戶。

from notebookutils import mssparkutils  
 
mssparkutils.fs.mount(  
    "abfss://<<file system>>@<<storage account>.dfs.core.windows.net",  
    "/<<path to wheel file>>",  
    {"linkedService":"<<storage name>>"}  
) 

然後,您可以使用 %pip install 命令來安裝必要的滾輪套件

%pip install /<<path to wheel file>>/<<wheel package name>>.whl

安裝另一個版本的內建程式庫

您可以使用下列命令來查看特定套件的內建版本。 我們使用 pandas 作為範例

%pip show pandas

結果如下:

Name: pandas
Version: **1.2.3**
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: https://pandas.pydata.org
... ...

您可以使用下列命令將 pandas 切換至另一個版本,假設 是 1.2.4

%pip install pandas==1.2.4

卸載會話範圍程式庫

如果您想要卸載安裝在此筆記本會話上的套件,您可以參考下列命令。 不過,您無法卸載內建套件。

%pip uninstall altair vega_datasets --yes

使用 %pip 命令從requirement.txt檔案安裝 連結

%pip install -r  /<<path to requirement file>>/requirements.txt

工作階段範圍的 Java 或 Scala 套件

若要指定工作階段範圍的 Java 或 Scala 套件,您可以使用 %%configure 選項:

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<file system>>@<<storage account>.dfs.core.windows.net/<<path to JAR file>>",
    }
}

注意

  • 建議您在筆記本開頭執行 %%configure。 您可以參考這份文件,以取得有效參數的完整清單。

工作階段範圍的 R 套件 (預覽版)

Azure Synapse Analytics 集區包括許多現成的熱門 R 程式庫。 您也可以在 Apache Spark 筆記本會話期間安裝額外的協力廠商程式庫。

注意

  • 執行管線作業時,將會停用管理 R 程式庫的這些命令。 如果想要在管線內安裝套件,您必須在集區層級利用程式庫管理功能。
  • 會話範圍的 R 程式庫會自動安裝在驅動程式和背景工作節點。

安裝套件

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

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

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

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

使用 Devtools 安裝套件

devtools 程式庫可簡化套件開發流程,藉此加速一般工作。 此程式庫會安裝在預設的 Azure Synapse Analytics 執行階段內。

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

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

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

# Install a GitHub library. 

install_github("jtilly/matchingR") 

Azure Synapse Analytics 目前支援下列 devtools 函式:

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

檢視已安裝的程式庫

您可以使用 library 命令,在工作階段內查詢所有已安裝的程式庫。

library()

您可以使用 packageVersion 函式來檢查程式庫版本:

packageVersion("caesar")

從工作階段中移除 R 套件

您可以使用 detach 函式,以從命名空間移除程式庫。 這些程式庫會保留在磁片上,直到再次載入為止。

# detach a library

detach("package: caesar")

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

remove.packages("caesar")

注意

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

工作階段範圍的 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 () 中,packages 引數會設定為 FALSE。 這會將目前 libPaths 中的程式庫複製到背景工作角色,讓您可在背景工作角色上匯入及使用這些程式庫。 例如,您可以執行下列項目,來產生具有 sparklyr::spark_apply() 的凱薩加密訊息:

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

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

下一步