在 Azure Synapse Analytics 中管理 Apache Spark 集區的程式庫
一旦您已確定針對 Spark 應用程式要使用或更新的 Scala、Java、R (預覽版) 或 Python 套件之後,就可以在 Spark 集區中安裝或移除這些套件。 集區層級的程式庫可供集區上執行的所有筆記本和作業使用。
在 Spark 集區安裝程式庫有兩種主要方式:
- 安裝已上傳為工作區封裝的工作區程式庫。
- 若要更新 Python 程式庫,請提供 requirements.txt 或 Conda environment.yml 環境規格,以安裝 PyPI、Conda-Forge 等存放庫中的套件。 如需詳細資訊,請參閱環境規格一節。
儲存變更後,Spark 作業就會執行安裝並快取產生的環境,以供稍後重複使用。 一旦完成作業,新的 Spark 作業或筆記本工作階段就會使用更新的集區程式庫。
重要
- 如果您要安裝的套件很大或需要花很多時間來安裝,則會影響 Spark 執行個體的啟動時間。
- 不支援更改 PySpark、Python、Scala/Java、.NET、R 或 Spark 版本。
- 在已啟用資料外流保護的工作區內,不支援安裝 PyPI、Conda-Forge 或預設 Conda 通道等外部存放庫中的封裝。
從 Synapse Studio 或 Azure 入口網站管理套件
您可以從 Synapse Studio 或 Azure 入口網站管理 Spark 集區程式庫。
若要在 Spark 集區更新或新增程式庫:
從 Azure 入口網站瀏覽至 Azure Synapse Analytics 工作區。
如果您從 Azure 入口網站更新:
如果您從 Synapse Studio 更新:
針對 Python 摘要程式庫,請在頁面的 [套件] 區段中,使用檔案選取器上傳環境設定檔。
您也可以選取其他工作區套件,將 Jar、Wheel 或 Tar.gz 檔案新增至集區中。
您也可以從 [工作區套件] 區段移除已淘汰的套件,您的集區將不再連結這些套件。
一旦儲存變更,就會觸發系統作業來安裝和快取指定的程式庫。 此流程有助於縮短整體工作階段啟動時間。
一旦順利完成作業,所有新的工作階段就會挑選更新的集區程式庫。
重要
選取 [強制使用新設定] 選項會結束所選 Spark 集區的所有目前工作階段。 一旦工作階段結束,您就必須等待集區重新啟動。
如果未核取此設定,則您必須等待目前的 Spark 工作階段結束或手動停止。 一旦工作階段結束,您就需要讓集區重新啟動。
追蹤安裝進度
每當集區更新為一組新的程式庫時,就會起始系統保留的 Spark 作業。 此 Spark 作業有助於監視程式庫安裝的狀態。 如果因為程式庫衝突或其他問題而導致安裝失敗,Spark 集區會還原為先前或預設狀態。
此外,使用者也可以檢查安裝記錄來找出相依性衝突,或查看在集區更新期間安裝了哪些程式庫。
若要檢視這些記錄:
- 瀏覽至 [監視] 索引標籤中的 Spark 應用程式清單。
- 選取對應至集區更新的系統 Spark 應用程式作業。 這些系統作業在 SystemReservedJob-LibraryManagement 標題下執行。
- 切換以檢視 [驅動程式] 和 [stdout] 記錄。
- 在結果中,您會看到相依性安裝的相關記錄。
環境規格格式
PIP requirements.txt
requirements.txt 檔案 (pip freeze
命令的輸出) 可用來升級環境。 更新集區時會從 PyPI 下載此檔案所列的封裝。 然後會快取並儲存完整的相依性,以供稍後重複使用集區。
下列程式碼片段顯示需求檔案的格式。 PyPI 封裝名稱連同確切版本一起列出。 此檔案遵循 pip freeze 參考文件所述的格式。
此範例鎖定特定版本。
absl-py==0.7.0
adal==1.2.1
alabaster==0.7.10
YML 格式
此外,您也可以提供 environment.yml 檔案來更新集區環境。 此檔案所列的封裝是從預設的 Conda 通道、Conda-Forge 和 PyPI 下載。 您可以使用設定選項來指定其他通道或移除預設通道。
此範例指定通道和 Conda/PyPI 相依性。
name: stats2
channels:
- defaults
dependencies:
- bokeh
- numpy
- pip:
- matplotlib
- koalas==1.7.0
如需從這個 environment.yml 檔案建立環境的詳細資訊,請參閱從 environment.yml 檔案建立環境。
下一步
- 檢視預設程式庫:Apache Spark 版本支援
- 程式庫安裝錯誤疑難排解:程式庫錯誤疑難排解