共用方式為


管理工作階段範圍的套件

除了集區層級套件之外,您也可以在筆記本會話的開頭指定會話範圍的連結庫。 會話範圍的連結庫可讓您在筆記本會話內指定及使用 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 命令:createcleancompareactivate、deactivaterunpackage
  • 您可以參考 %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 命令來安裝必要的 wheel 套件

%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() 透過任意網址安裝 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)

下一步