共用方式為


建立用於封裝管理的自訂 Conda 通道

安裝 Python 套件時,Conda 套件管理員會使用通道來尋找套件。 基於各種原因,您可能需要建立自訂 Conda 通道。 例如,您可能發現:

  • 您的工作區是受到資料外流保護,而且輸出連線已遭封鎖。
  • 您的套件不想要上傳至公用存放庫。
  • 您想要為工作區中的使用者設定替代存放庫。

在本文中,我們將提供逐步指南,協助您在 Azure Data Lake Storage 帳戶內建立自訂 Conda 通道。

設定本機電腦

  1. 在本機電腦上安裝 Conda。您可以參考 Azure Synapse Spark 執行階段,以識別在相同執行階段上使用的 Conda 版本。

  2. 若要建立自訂通道,請安裝 conda-build。

conda install conda-build
  1. 針對您想要提供的平台組織所有套件。 在此範例中,我們將在您的本機電腦上安裝 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  
  1. 若要建立可在 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 帳戶的範例

如需有關如何在本機電腦上掛接儲存體帳戶的詳細資訊,您可以造訪此頁面

  1. 您可以從適用於 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
  1. 建立您的掛接點 (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 通道。

  1. 在您的本機電腦上,建立目錄來組織自訂通道的所有套件。 從 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
  1. 現在,您可以檢查您在其中建立 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 集區上的程式庫。

下一步