建立用於封裝管理的自訂 Conda 通道
安裝 Python 套件時,Conda 套件管理員會使用通道來尋找套件。 基於各種原因,您可能需要建立自訂 Conda 通道。 例如,您可能發現:
- 您的工作區是受到資料外流保護,而且輸出連線已遭封鎖。
- 您的套件不想要上傳至公用存放庫。
- 您想要為工作區中的使用者設定替代存放庫。
在本文中,我們將提供逐步指南,協助您在 Azure Data Lake Storage 帳戶內建立自訂 Conda 通道。
設定本機電腦
在本機電腦上安裝 Conda。您可以參考 Azure Synapse Spark 執行階段,以識別在相同執行階段上使用的 Conda 版本。
若要建立自訂通道,請安裝 conda-build。
conda install conda-build
- 針對您想要提供的平台組織所有套件。 在此範例中,我們將在您的本機電腦上安裝 Anaconda 封存。
sudo wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh
sudo chmod +x Anaconda3-4.4.0-Linux-x86_64.sh
sudo bash Anaconda3-4.4.0-Linux-x86_64.sh -b -p /usr/lib/anaconda3
export PATH="/usr/lib/anaconda3/bin:$PATH"
sudo chmod 777 -R /usr/lib/anaconda3
- 若要建立可在 Azure Synapse 執行階段中建立的類似環境,您可以下載此範本。 範本與實際的 Azure Synapse 環境之間可能有些微差異。 下載之後,您就可以執行下列命令:
apt-get -yq install gcc g++
conda env update --prune -f base_environment.yml
將儲存體帳戶掛接到您的電腦上
接下來,我們會將 Azure Data Lake Storage Gen2 帳戶掛接到您的本機電腦上。 您也可以使用 WASB 帳戶來完成此程序;不過,我們將逐步解說 ADLSg2 帳戶的範例
如需有關如何在本機電腦上掛接儲存體帳戶的詳細資訊,您可以造訪此頁面。
- 您可以從適用於 Microsoft 產品的 Linux 軟體存放庫安裝 blobfuse。
wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install blobfuse fuse
export AZURE_STORAGE_ACCOUNT=<storage-account-name>
export AZURE_STORAGE_SAS_TOKEN="<SAS>"
export AZURE_STORAGE_BLOB_ENDPOINT=*.dfs.core.windows.net
- 建立您的掛接點 (
mkdir /path/to/mount
),並使用 blobfuse 掛接 Blob 容器。 在此範例中,讓我們使用 mycontainer 變數的 privatechannel 值。
sudo mkdir /home/trusted-service-user/privatechannel
sudo mkdir -p /mnt/blobfusetmp
blobfuse /home/trusted-service-user/privatechannel --container-name=privatechannel --tmp-path=/mnt/blobfusetmp --use-adls=true --log-level=LOG_DEBUG
sudo chown trusted-service-user /mnt/blobfusetmp
建立通道
在下一組步驟中,我們將建立自訂 Conda 通道。
- 在您的本機電腦上,建立目錄來組織自訂通道的所有套件。 從
tar.bz2
將所有 https://repo.anaconda.com/pkgs/main/linux-64/ 套件整理至子目錄中。 也請務必包含所有相依的 tar.bz2 套件。
cd ~/privatechannel/
mkdir -p channel/linux64
<Add all .tar.bz2 from https://repo.anaconda.com/pkgs/main/linux-64/>
// Note: Add all dependent .tar.bz2 as well
cd channel
mkdir noarch
echo '{}' > noarch/repodata.json
bzip2 -k noarch/repodata.json
// Create channel
conda index channel/noarch
conda index channel/linux-64
conda index channel
- 現在,您可以檢查您在其中建立
privatechannel/channel
目錄的儲存體帳戶。
注意
Conda 不會接受與容器相關聯的 SAS 權杖。 因此,您必須將容器 "privatechannel" 標示為公用存取。
如需詳細資訊,您也可以造訪 Conda 使用者指南來建立自訂通道。
儲存體帳戶權限
現在,我們需要驗證儲存體帳戶上的權限。 若要設定這些權限,請瀏覽至將建立自訂通道的路徑。 然後,建立 privatechannel
的 SAS 權杖,其具有讀取、列出和執行權限。
通道名稱現在會是此程序所產生的 blob SAS URL。
建立範例 Conda 環境設定檔
最後,請建立範例 Conda environment.yml
檔案來驗證安裝程序。 如果您的工作區中已啟用資料外流保護,就必須在您的環境檔案中指定 nodefaults
通道。
以下為範例的 Conda 設定檔:
name: sample
channels:
- https://<<storage account name>>.blob.core.windows.net/privatechannel/channel?<<SAS Token>
- nodefaults
dependencies:
- openssl
- ncurses
建立範例 Conda 檔案之後,您就可以建立虛擬 Conda 環境。 您可以執行下列命令,在本機對此進行驗證:
conda env create --file sample.yml
source activate env
conda list
現在,您已驗證您的自訂通道,您可以使用 Python 集區管理程序來更新 Apache Spark 集區上的程式庫。
下一步
- 檢視預設程式庫:Apache Spark 版本支援
- 管理工作階段層級 Python 套件:Notebook 工作階段上的 Python 套件管理