Share via


使用 Azure Data Factory、DevOps 和機器學習建置數據管線

Azure DevOps Services

開始使用數據擷取、數據轉換和模型定型來建置數據管線。

瞭解如何從 CSV (逗號分隔值) 檔案擷取數據,並將數據儲存至 Azure Blob 儲存體。 轉換數據並將它儲存到暫存區域。 然後使用轉換的數據來定型機器學習模型。 將模型寫入 Blob 記憶體作為 Python 選擇檔案

必要條件

開始之前,您需要:

佈建 Azure 資源

  1. 登入 Azure 入口網站

  2. 從功能表中,選取 [Cloud Shell ] 按鈕。 出現提示時,請選取 Bash 體驗。

    Screenshot showing where to select Cloud Shell from the menu.

    注意

    您需要 Azure 儲存體 資源,才能保存您在 Azure Cloud Shell 中建立的任何檔案。 第一次開啟 Cloud Shell 時,系統會提示您建立資源群組、儲存體帳戶,以及 Azure 檔案儲存體共用。 所有未來的 Cloud Shell 工作階段都會自動使用此設定。

選取 Azure 區域

「區域」是地理位置內的一或多個 Azure 資料中心。 美國東部、美國西部和歐洲北部都是區域範例。 每個 Azure 資源 (包括 App Service 執行個體) 都會獲指派區域。

若要讓命令更容易執行,請從選取預設區域開始。 在您指定預設區域之後,除非您指定不同的區域,否則稍後的命令都會使用該區域。

  1. 從 Cloud Shell 執行下列 az account list-locations 命令,以列出您的 Azure 訂用帳戶中可用的區域。

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. 從輸出中的 Name 資料行,選擇接近您的區域。 例如,選擇 asiapacificwestus2

  3. 執行 az config 以設定您的預設區域。 在下列範例中,將 取代 <REGION> 為您所選區域的名稱。

    az config set defaults.location=<REGION>
    

    下列範例會將 設定 westus2 為預設區域。

    az config set defaults.location=westus2
    

建立 Bash 變數

  1. 在 Cloud Shell 中,產生隨機數。 在下一個步驟中,您將使用此數位來建立特定服務的全域唯一名稱。

    resourceSuffix=$RANDOM
    
  2. 為您的記憶體帳戶和金鑰保存庫建立全域唯一的名稱。 下列命令使用雙引號,指示Bash使用內嵌語法來插補變數。

    storageName="datacicd${resourceSuffix}"
    keyVault="keyvault${resourceSuffix}"
    
  3. 建立一個Bash變數來儲存資源群組的名稱和區域。 在下列範例中,將 取代 <REGION> 為您為預設區域選擇的區域。

    rgName='data-pipeline-cicd-rg'
    region='<REGION>'
    
  4. 為您的 Azure Data Factory 和 Azure Databricks 實例建立變數名稱。

    datafactorydev='data-factory-cicd-dev'
    datafactorytest='data-factory-cicd-test'
    databricksname='databricks-cicd-ws'
    

建立 Azure 資源

  1. 執行下列 az group create 命令,以使用 rgName建立資源群組。

    az group create --name $rgName
    
  2. 執行下列 az storage account create 命令來建立新的記憶體帳戶。

    az storage account create \
        --name $storageName \
        --resource-group $rgName \
        --sku Standard_RAGRS \
        --kind StorageV2
    
  3. 執行下列 az storage container create 命令以建立兩個容器和 rawdataprepareddata

    az storage container create -n rawdata --account-name $storageName 
    az storage container create -n prepareddata --account-name $storageName 
    
  4. 執行下列 az keyvault create 命令來建立新的金鑰保存庫。

    az keyvault create \
        --name $keyVault \
        --resource-group $rgName
    
  5. 使用入口網站 UI 或 Azure CLI 建立新的資料處理站

    • 名稱:data-factory-cicd-dev
    • 版本: V2
    • 資源群組:data-pipeline-cicd-rg
    • 位置:最接近的位置
    • 清除 [啟用 Git] 的選取專案。
    1. 新增 Azure Data Factory 擴充功能

      az extension add --name datafactory
      
    2. 執行下列 az datafactory create 命令來建立新的數據處理站。

       az datafactory create \
           --name data-factory-cicd-dev \
           --resource-group $rgName
      
    3. 複製訂用帳戶識別碼。 數據處理站稍後會使用此標識碼。

  6. 使用入口網站 UI 或 Azure CLI 建立第二個數據處理站 。 您將使用此資料處理站進行測試。

    • 名稱:data-factory-cicd-test
    • 版本: V2
    • 資源群組:data-pipeline-cicd-rg
    • 位置:最接近的位置
    • 清除 [啟用 GIT] 的選取專案。
    1. 執行下列 az datafactory create 命令來建立新的數據處理站進行測試。

       az datafactory create \
           --name data-factory-cicd-test \
           --resource-group $rgName
      
    2. 複製訂用帳戶識別碼。 數據處理站稍後會使用此標識碼。

  7. 新增 Azure Databricks 服務

    • 資源群組:data-pipeline-cicd-rg
    • 工作區名稱: databricks-cicd-ws
    • 位置:最接近的位置
    1. 如果尚未安裝,請新增 Azure Databricks 擴充功能。

       az extension add --name databricks
      
    2. 執行下列 az databricks workspace create 命令以建立新的工作區。

      az databricks workspace create \
          --resource-group $rgName \
          --name databricks-cicd-ws  \
          --location eastus2  \
          --sku trial
      
    3. 複製訂用帳戶識別碼。 Databricks 服務稍後會使用此標識符。

將數據上傳至記憶體容器

  1. 在 Azure 入口網站 中,在資源群組中data-pipeline-cicd-rg開啟您的記憶體帳戶。
  2. 移至 [Blob 服務>容器]。
  3. prepareddata開啟容器。
  4. 上傳 sample.csv 檔案。

設定 Key Vault

您將使用 Azure 金鑰保存庫 來儲存 Azure 服務的所有連線資訊。

建立 Databricks 個人存取令牌

  1. 在 Azure 入口網站 中,移至 Databricks,然後開啟您的工作區。
  2. 在 Azure Databricks UI 中, 建立並複製個人存取令牌

複製記憶體帳戶的帳戶的帳戶金鑰和 連接字串

  1. 移至您的儲存體帳戶。
  2. 開啟 [存取金鑰]。
  3. 複製第一個金鑰並 連接字串。

將值儲存至 金鑰保存庫

  1. 建立三個秘密:

    • databricks-token: your-databricks-pat
    • 儲存體 Key:your-storage-key
    • 儲存體連線 String:your-storage-connection
  2. 執行下列 az keyvault secret set 命令,將秘密新增至金鑰保存庫。

    az keyvault secret set --vault-name "$keyVault" --name "databricks-token" --value "your-databricks-pat"
    az keyvault secret set --vault-name "$keyVault" --name "StorageKey" --value "your-storage-key"
    az keyvault secret set --vault-name "$keyVault" --name "StorageConnectString" --value "your-storage-connection"
    

匯入數據管線解決方案

  1. 登入您的 Azure DevOps 組織,然後移至您的專案。
  2. 移至 Repos,然後匯入 GitHub 存放庫分支版本。 如需詳細資訊,請參閱 將 Git 存放庫匯入您的專案

新增 Azure Resource Manager 服務連線

  1. 建立 Azure Resource Manager 服務連線
  2. 選取 [服務主體] [自動]。
  3. 選擇 data-pipeline-cicd-rg 資源群組。
  4. 將服務連線 azure_rm_connection命名為 。
  5. 選取 [授與所有管線的存取權限]。 您必須將服務 連線 管理員 istrator 角色選取此選項。

新增管線變數

  1. 建立名為 datapipeline-vg的新變數群組

  2. 如果尚未安裝,請新增 Azure DevOps 擴充功能。

    az extension add --name azure-devops 
    
  3. 登入您的 Azure DevOps 組織

    az devops login --org https://dev.azure.com/<yourorganizationname>
    
    az pipelines variable-group create --name datapipeline-vg -p <yourazuredevopsprojectname> --variables \
                                        "LOCATION=$region" \
                                        "RESOURCE_GROUP=$rgName" \
                                        "DATA_FACTORY_NAME=$datafactorydev" \
                                        "DATA_FACTORY_DEV_NAME=$datafactorydev" \
                                        "DATA_FACTORY_TEST_NAME=$datafactorytest" \
                                        "ADF_PIPELINE_NAME=DataPipeline" \
                                        "DATABRICKS_NAME=$databricksname" \
                                        "AZURE_RM_CONNECTION=azure_rm_connection" \
                                        "DATABRICKS_URL=<URL copied from Databricks in Azure portal>" \
                                        "STORAGE_ACCOUNT_NAME=$storageName" \
                                        "STORAGE_CONTAINER_NAME=rawdata"
    
  4. 建立名為 keys-vg的第二個變數群組。 此群組會從 金鑰保存庫 提取數據變數。

  5. 選取 [從 Azure 金鑰保存庫連結秘密] 作為變數。 如需詳細資訊,請參閱 從 Azure 金鑰保存庫連結秘密。

  6. 授權 Azure 訂用帳戶。

  7. 選擇所有可用的秘密以新增為變數 (databricks-token,,,StorageConnectStringStorageKey

設定 Azure Databricks 和 Azure Data Factory

請遵循下一節中的步驟來設定 Azure Databricks 和 Azure Data Factory。

在 Azure Databricks 中建立測試範圍

  1. 在 Azure 入口網站 中,移至 [金鑰保存庫>屬性]。
  2. 複製 DNS 名稱和資源識別碼
  3. 在您的 Azure Databricks 工作區中,建立名為 的testscope秘密範圍

在 Azure Databricks 中新增叢集

  1. 在 Azure Databricks 工作區中,移至 [ 叢集]。
  2. 選取 [建立叢集]
  3. 命名並儲存新的叢集。
  4. 選取新的叢集名稱。
  5. 在 URL 字串中,複製和/configuration之間的/clusters/內容。 例如,在字串 clusters/0306-152107-daft561/configuration中,您會複製 0306-152107-daft561
  6. 儲存此字串以供稍後使用。

在 Azure Data Factory 中設定程式代碼存放庫

  1. 在 Azure Data Factory 中,移至 [撰寫和監視]。 如需詳細資訊,請參閱 建立數據處理站
  2. 選取 [設定程式代碼存放庫 ],然後連線存放庫。
    • 存放庫類型:Azure DevOps Git
    • Azure DevOps 組織:您的作用中帳戶
    • 專案名稱:您的 Azure DevOps 資料管線專案
    • Git 存放庫名稱: 使用現有的
      • 選取主要分支以進行共同作業。
      • 將 /azure-data-pipeline/factorydata 設定為根資料夾。
    • 要匯入資源的分支:選取 [使用現有主要]。
  1. 在 Azure 入口網站 UI 中,開啟金鑰保存庫。
  2. 選取存取原則
  3. 選取新增存取原則
  4. 針對 [從範本設定],選取 [金鑰與秘密管理]。
  5. 在 [ 選取主體] 中,搜尋開發數據處理站的名稱並加以新增。
  6. 選取 [ 新增 ] 以新增存取原則。
  7. 重複這些步驟以新增測試數據處理站的存取原則。

更新 Azure Data Factory 中的金鑰保存庫連結服務

  1. 移至 [ 管理>鏈接的服務]。
  2. 更新 Azure 金鑰保存庫以連線到您的訂用帳戶。

更新 Azure Data Factory 中的記憶體連結服務

  1. 移至 [ 管理>鏈接的服務]。
  2. 更新 Azure Blob 儲存體 值以連線到您的訂用帳戶。

更新 Azure Data Factory 中的 Azure Databricks 鏈接服務

  1. 移至 [ 管理>鏈接的服務]。
  2. 更新 Azure Databricks 值以連線到您的訂用帳戶。
  3. 針對 [ 現有叢集標識符],輸入您稍早儲存的叢集值。

測試及發佈數據處理站

  1. 在 Azure Data Factory 中,移至 [ 編輯]。
  2. 開啟 [DataPipeline]。
  3. 選取變數
  4. 確認 在 storage_account_name Azure 入口網站 中參考您的記憶體帳戶。 如有必要,請更新預設值。 儲存您的變更。
  5. 選取 [驗證 ] 以確認 DataPipeline
  6. 選取 [發佈 ] 將數據處理站資產發佈至 adf_publish 存放庫的分支。

執行 CI/CD 管線

請遵循下列步驟來執行持續整合和持續傳遞 (CI/CD) 管線:

  1. 移至 [管線] 頁面。 然後選擇要建立新管線的動作。
  2. 選取 [Azure Repos Git ] 作為原始程式碼的位置。
  3. 當存放庫清單出現時,請選取您的存放庫。
  4. 當您設定管線時,請選取 [現有的 Azure Pipelines YAML 檔案]。 選擇 YAML 檔案: /azure-data-pipeline/data_pipeline_ci_cd.yml
  5. 執行管線。 如果您的管線之前尚未執行,您可能需要在執行期間授與存取資源的許可權。

清除資源

如果您不打算繼續使用此應用程式,請遵循下列步驟來刪除您的資料管線:

  1. data-pipeline-cicd-rg刪除資源群組。
  2. 刪除您的 Azure DevOps 專案。

下一步