Freigeben über


Erstellen einer Datenpipeline mithilfe von Azure Data Factory, Azure DevOps und Azure Machine Learning

Azure DevOps Services

Erste Schritte mit dem Erstellen einer Datenpipeline mit Datenerfassung, Datentransformation und Modelltraining

Erfahren Sie, wie Sie Daten aus einer CSV-Datei abrufen und in Azure Blob Storage speichern. Sie transformieren die Daten und speichern sie in einem Stagingbereich. Anschließend trainieren Sie ein Machine Learning-Modell mithilfe der transformierten Daten. Sie schreiben das Modell als Python-PICKLE-Datei in Blob Storage.

Voraussetzungen

Bevor Sie beginnen, benötigen Sie Folgendes:

Bereitstellen von Azure-Ressourcen

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie im Menü die Azure Cloud Shell-Schaltfläche aus. Wählen Sie Bash aus, wenn Sie dazu aufgefordert werden.

    Screenshot der Auswahl von Cloud Shell im Menü

    Hinweis

    Sie benötigen eine Azure Storage-Ressource, um alle Dateien, die Sie in Cloud Shell erstellen, beizubehalten. Wenn Sie Cloud Shell erstmals öffnen, werden Sie aufgefordert, eine Ressourcengruppe, ein Speicherkonto und eine Azure Files-Freigabe zu erstellen. Das Azure-Portal verwendet dieses Setup automatisch für alle zukünftigen Cloud Shell-Sitzungen.

Auswählen einer Azure-Region

Bei einer Region handelt es sich um mindestens ein Azure-Rechenzentrum an einem geografischen Standort. Beispiele für Regionen sind „USA, Osten“, „USA, Westen“ und „Europa, Norden“. Jeder Azure-Ressource, einschließlich einer Azure App Service-Instanz, wird eine Region zugewiesen.

Wählen Sie einen Standardbereich aus, um die Ausführung von Befehlen zu vereinfachen. Nachdem Sie die Standardregion festgelegt haben, verwenden spätere Befehle diese Region, es sei denn, Sie geben eine andere Region an.

  1. Führen Sie in Cloud Shell den folgenden az account list-locations-Befehl aus, um die Regionen aufzulisten, die über Ihr Azure-Abonnement verfügbar sind.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Wählen Sie in der Spalte Name in der Ausgabe eine Region in Ihrer Nähe aus. Wählen Sie zum Beispiel asiapacific oder westus2 aus.

  3. Führen Sie az config aus, um Ihre Standardregion festzulegen. Ersetzen <REGION> Sie im folgenden Beispiel durch den Namen der ausgewählten Region.

    az config set defaults.location=<REGION>
    

    Im folgenden Beispiel wird westus2 als Standardregion festgelegt.

    az config set defaults.location=westus2
    

Erstellen von Bash-Variablen

  1. Generieren Sie in Cloud Shell eine Zufallszahl. Verwenden Sie diese Zahl, um im nächsten Schritt global eindeutige Namen für bestimmte Dienste zu erstellen.

    resourceSuffix=$RANDOM
    
  2. Erstellen Sie global eindeutige Namen für Ihr Speicherkonto und Azure Key Vault. In den folgenden Befehlen werden doppelte Anführungszeichen verwendet. Dadurch wird Bash angewiesen, die Variablen mithilfe der Inlinesyntax zu interpolieren.

    storageName="datacicd${resourceSuffix}"
    keyVault="keyvault${resourceSuffix}"
    
  3. Erstellen Sie eine weitere Bash-Variable, um die Namen und die Region Ihrer Ressourcengruppe zu speichern. Ersetzen Sie <REGION> im folgenden Beispiel durch die Region, die Sie als Standardregion verwenden möchten.

    rgName='data-pipeline-cicd-rg'
    region='<REGION>'
    
  4. Erstellen Sie Variablennamen für Ihre Azure Data Factory- und Azure Databricks-Instanzen.

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

Erstellen von Azure-Ressourcen

  1. Führen Sie den folgenden Befehl az group create aus, um mithilfe von rgName eine Ressourcengruppe zu erstellen.

    az group create --name $rgName
    
  2. Führen Sie den folgenden Befehl az storage account create aus, um ein neues Speicherkonto zu erstellen.

    az storage account create \
        --name $storageName \
        --resource-group $rgName \
        --sku Standard_RAGRS \
        --kind StorageV2
    
  3. Führen Sie den folgenden Befehl az storage container create aus, um die beiden Container rawdata und prepareddata zu erstellen.

    az storage container create -n rawdata --account-name $storageName 
    az storage container create -n prepareddata --account-name $storageName 
    
  4. Führen Sie den folgenden az keyvault create Befehl aus, um einen neuen Key Vault zu erstellen.

    az keyvault create \
        --name $keyVault \
        --resource-group $rgName
    
  5. Erstellen Sie eine neue Data Factory über die Benutzeroberfläche im Portal oder mithilfe der Azure-Befehlszeilenschnittstelle:

    • Name: data-factory-cicd-dev
    • Version: V2
    • Ressourcengruppe: data-pipeline-cicd-rg
    • Standort: Ihr nächstgelegener Standort
    • Heben Sie die Auswahl von Git aktivieren auf.
    1. Fügen Sie die Azure Data Factory-Erweiterung hinzu.

      az extension add --name datafactory
      
    2. Führen Sie den folgenden az datafactory create Befehl aus, um eine neue Azure Data Factory zu erstellen.

       az datafactory create \
           --name data-factory-cicd-dev \
           --resource-group $rgName
      
    3. Kopieren Sie die Abonnement-ID. Ihre Datenfactory verwendet diese ID später.

  6. Erstellen Sie eine zweite Data Factory über die Benutzeroberfläche im Portal oder mithilfe der Azure-Befehlszeilenschnittstelle. Sie verwenden diese Azure Data Factory zum Testen.

    • Name: data-factory-cicd-test
    • Version: V2
    • Ressourcengruppe: data-pipeline-cicd-rg
    • Standort: Ihr nächstgelegener Standort
    • Heben Sie die Auswahl von Git aktivieren auf.
    1. Führen Sie den folgenden az datafactory create Befehl aus, um eine neue Azure Data Factory zum Testen zu erstellen.

       az datafactory create \
           --name data-factory-cicd-test \
           --resource-group $rgName
      
    2. Kopieren Sie die Abonnement-ID. Ihre Datenfactory verwendet diese ID später.

  7. Fügen Sie einen neuen Azure Databricks-Dienst hinzu:

    • Ressourcengruppe: data-pipeline-cicd-rg
    • Arbeitsbereichsname: databricks-cicd-ws
    • Standort: Ihr nächstgelegener Standort
    1. Fügen Sie die Azure Databricks-Erweiterung hinzu, falls sie noch nicht installiert ist.

       az extension add --name databricks
      
    2. Führen Sie den folgenden Befehl az databricks workspace create aus, um einen neuen Arbeitsbereich zu erstellen.

      az databricks workspace create \
          --resource-group $rgName \
          --name databricks-cicd-ws  \
          --location $region  \
          --sku trial
      
    3. Kopieren Sie die Abonnement-ID. Ihr Databricks-Dienst verwendet diese ID später.

Hochladen von Daten in Ihren Speichercontainer

  1. Öffnen Sie im Azure-Portal Ihr Speicherkonto in der Ressourcengruppe data-pipeline-cicd-rg.
  2. Wechseln Sie zu Blob-Dienst>Container.
  3. Öffnen Sie den Container prepareddata.
  4. Laden Sie die Datei sample.csv hoch.

Einrichten von Azure Key Vault

Sie verwenden Azure Key Vault, um alle Verbindungsinformationen für Ihre Azure-Dienste zu speichern.

Erstellen eines persönlichen Databricks-Zugriffstokens

  1. Wechseln Sie im Azure-Portal zu Databricks, und öffnen Sie dann Ihren Arbeitsbereich.
  2. Erstellen und kopieren Sie auf der Azure Databricks-Benutzeroberfläche ein persönliches Zugriffstoken.

Kopieren des Kontoschlüssels und der Verbindungszeichenfolge für Ihr Speicherkonto

  1. Wechseln Sie zum Speicherkonto.
  2. Öffnen Sie Zugriffsschlüssel.
  3. Kopieren Sie den ersten Schlüssel und die Verbindungszeichenfolge.

Werte im Schlüsselspeicher speichern

  1. Erstellen Sie drei Geheimnisse:

    • databricks-token: your-databricks-pat
    • StorageKey (Speicherschlüssel): your-storage-key
    • StorageConnectString: your-storage-connection
  2. Führen Sie den folgenden Befehl az keyvault secret set aus, um Ihrem Schlüsseltresor Geheimnisse hinzuzufügen.

    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"
    

Importieren der Datenpipelinelösung

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und wechseln Sie dann zu Ihrem Projekt.
  2. Wechseln Sie zu Repositorys, und importieren Sie dann Ihre geforkte Version des GitHub-Repositorys. Weitere Informationen finden Sie unter Importieren eines Git-Repositorys in Ihr Projekt.

Hinzufügen einer Azure Resource Manager-Dienstverbindung

  1. Erstellen Sie eine Azure Resource Manager-Dienstverbindung.
  2. Wählen Sie die App-Registrierung (automatisch) und den Workload-Identitätsverbund aus.
  3. Wählen Sie Ihr Abonnement aus.
  4. Wählen Sie die Ressourcengruppe data-pipeline-cicd-rg aus.
  5. Benennen Sie die Dienstverbindung mit azure_rm_connection.
  6. Aktivieren Sie die Option Allen Pipelines die Zugriffsberechtigung gewähren. Sie benötigen die Dienstverbindungen-Administratorrolle, um diese Option auszuwählen.

Pipelinevariablen hinzufügen

  1. Erstellen Sie eine neue Variablengruppe mit dem Namen datapipeline-vg.

  2. Fügen Sie die Azure DevOps-Erweiterung hinzu, wenn Sie sie noch nicht installiert haben.

    az extension add --name azure-devops 
    
  3. Melden Sie sich bei Ihrer Azure DevOps-Organisation an.

    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. Erstellen Sie eine zweite Variablengruppe mit dem Namen keys-vg. Diese Gruppe ruft Datenvariablen von Schlüssel Vvult ab.

  5. Wählen Sie "Geheime Schlüssel aus einem Azure Key Vault als Variablen verknüpfen" aus. Weitere Informationen finden Sie unter Verknüpfen einer Variablengruppe mit geheimen Schlüsseln in Azure Key Vault.

  6. Autorisieren Sie das Azure-Abonnement.

  7. Wählen Sie alle verfügbaren Geheimnisse aus, die als Variablen (databricks-token, StorageConnectString, StorageKey) hinzugefügt werden sollen.

Konfigurieren von Azure Databricks und Azure Data Factory

Führen Sie die Schritte in den nächsten Abschnitten aus, um Azure Databricks und Azure Data Factory einzurichten.

Erstellen eines Testbereichs in Azure Databricks

  1. Wechseln Sie im Azure-Portal zu Key Vault>Eigenschaften.
  2. Kopieren Sie den DNS-Namen und die Ressourcen-ID.
  3. Erstellen Sie in Ihrem Azure Databricks-Arbeitsbereich einen Geheimnisbereich mit dem Namen testscope.

Hinzufügen eines neuen Clusters in Azure Databricks

  1. Navigieren Sie im Azure Databricks-Arbeitsbereich zu Cluster.
  2. Wählen Sie Cluster erstellen aus.
  3. Benennen und speichern Sie Ihren neuen Cluster.
  4. Wählen Sie den Namen Ihres neuen Clusters aus.
  5. Kopieren Sie in der URL-Zeichenfolge den Inhalt zwischen /clusters/ und /configuration. In der Zeichenfolge clusters/0306-152107-daft561/configuration kopieren Sie beispielsweise 0306-152107-daft561.
  6. Speichern Sie diese Zeichenfolge für die spätere Verwendung.

Einrichten des Coderepositorys in Azure Data Factory

  1. Wechseln Sie in Azure Data Factory zu Erstellung & Überwachung. Weitere Informationen finden Sie unter Erstellen einer Data Factory.
  2. Wählen Sie Coderepository einrichten aus, und verbinden Sie dann Ihr Repository.
    • Repositorytyp: Azure DevOps-Git
    • Azure DevOps-Organisation: Ihr aktives Konto
    • Projektname: Ihr Azure DevOps-Datenpipelineprojekt
    • Git-Repositoryname: Vorhandenes verwenden
      • Wählen Sie den Mainbranch für die Zusammenarbeit aus.
      • Legen Sie /azure-data-pipeline/factorydata als Stammordner fest.
    • Branch zum Importieren von Ressourcen: Wählen Sie Vorhandenen verwenden und main aus.
  1. Öffnen Sie im Azure-Portal den Schlüsseltresor.
  2. Klicken Sie auf Zugriffsrichtlinien.
  3. Wählen Sie Zugriffsrichtlinie hinzufügen aus.
  4. Wählen Sie für Aus Vorlage konfigurieren die Option Schlüssel & Geheimnisverwaltung aus.
  5. Suchen Sie im Select Principal nach dem Namen Ihrer Entwicklungs-Azure Data Factory und fügen Sie ihn hinzu.
  6. Wählen Sie Hinzufügen aus, um Ihre Zugriffsrichtlinien hinzuzufügen.
  7. Wiederholen Sie diese Schritte, um eine Zugriffsrichtlinie für die Azure Data Factory-Test hinzuzufügen.

Aktualisieren des verknüpften Schlüsseltresors in Azure Data Factory

  1. Navigieren Sie zu Verwalten>Verknüpfte Dienste.
  2. Aktualisieren Sie den Key Vault, um eine Verbindung mit Ihrem Abonnement herzustellen.

Aktualisieren des verknüpften Speicherdiensts in Azure Data Factory

  1. Navigieren Sie zu Verwalten>Verknüpfte Dienste.
  2. Aktualisieren Sie den Wert für Azure Blob Storage, um eine Verbindung mit Ihrem Abonnement herzustellen.

Aktualisieren des verknüpften Azure Databricks-Diensts in Azure Data Factory

  1. Navigieren Sie zu Verwalten>Verknüpfte Dienste.
  2. Aktualisieren Sie den Wert für Azure Databricks, um eine Verbindung mit Ihrem Abonnement herzustellen.
  3. Geben Sie unter Vorhandene Cluster-ID den zuvor gespeicherten Clusterwert ein.

Testen und Veröffentlichen der Data Factory

  1. Wechseln Sie in Azure Data Factory zu Bearbeiten.
  2. Öffnen Sie DataPipeline.
  3. Wählen Sie Variablen aus.
  4. Vergewissern Sie sich im Azure-Portal, dass storage_account_name auf Ihr Speicherkonto verweist. Aktualisieren Sie den Standardwert bei Bedarf. Speichern Sie die Änderungen.
  5. Wählen Sie Überprüfen aus, um DataPipeline zu überprüfen.
  6. Wählen Sie Veröffentlichen aus, um Data Factory-Ressourcen im adf_publish-Branch Ihres Repositorys zu veröffentlichen.

Ausführen der CI/CD-Pipeline

Führen Sie die folgenden Schritte aus, um die CI/CD-Pipeline (Continuous Integration und Continuous Delivery) auszuführen:

  1. Wechseln Sie zur Seite Pipelines. Wählen Sie dann die Aktion zum Erstellen einer neuen Pipeline aus.
  2. Wählen Sie Azure Repos-Git als Speicherort Ihres Quellcodes aus.
  3. Wenn die Liste der Repositorys angezeigt wird, wählen Sie Ihr Repository aus.
  4. Wählen Sie beim Einrichten der Pipeline Vorhandene Azure Pipelines-YAML-Datei aus. Wählen Sie die YAML-Datei /azure-data-pipeline/data_pipeline_ci_cd.yml aus.
  5. Ausführen der Pipeline. Wenn Sie Die Pipeline zum ersten Mal ausführen, müssen Sie möglicherweise während der Ausführung die Berechtigung zum Zugriff auf eine Ressource erteilen.

Beispiel für eine YaML-Pipelinedatei

Die data_pipeline_ci_cd.yml Datei koordiniert die Bereitstellung Ihrer Data Factory- und Databricks-Ressourcen. Hier ist eine Beispielstruktur dessen, was die Pipeline enthält:

trigger:
  - main

variables:
  - group: datapipeline-vg
  - group: keys-vg

stages:
  - stage: Build
    jobs:
      - job: BuildDataFactory
        pool:
          vmImage: 'ubuntu-latest'
        steps:
          - task: AzureResourceManagerTemplateDeployment@3
            inputs:
              deploymentScope: 'Resource Group'
              azureResourceManagerConnection: $(AZURE_RM_CONNECTION)
              subscriptionId: $(SubscriptionId)
              action: 'Create Or Update Resource Group'
              resourceGroupName: $(RESOURCE_GROUP)
              location: $(LOCATION)
              templateLocation: 'Linked artifact'
              cacheArtifacts: true

  - stage: Deploy_Dev
    dependsOn: Build
    condition: succeeded()
    jobs:
      - deployment: DeployToDevFactory
        pool:
          vmImage: 'ubuntu-latest'
        environment: 'Dev'
        strategy:
          runOnce:
            deploy:
              steps:
                - task: AzureDataFactoryPublish@1
                  inputs:
                    ConnectedServiceName: $(AZURE_RM_CONNECTION)
                    DataFactoryName: $(DATA_FACTORY_DEV_NAME)
                    ResourceGroupName: $(RESOURCE_GROUP)

  - stage: Deploy_Test
    dependsOn: Deploy_Dev
    condition: succeeded()
    jobs:
      - deployment: DeployToTestFactory
        pool:
          vmImage: 'ubuntu-latest'
        environment: 'Test'
        strategy:
          runOnce:
            deploy:
              steps:
                - task: AzureDataFactoryPublish@1
                  inputs:
                    ConnectedServiceName: $(AZURE_RM_CONNECTION)
                    DataFactoryName: $(DATA_FACTORY_TEST_NAME)
                    ResourceGroupName: $(RESOURCE_GROUP)

Die vollständige Pipelinedatei finden Sie im Azure-Data-Pipeline-Repository.

Bereinigen von Ressourcen

Wenn Sie nicht beabsichtigen, diese Anwendung weiterhin zu verwenden, löschen Sie Ihre Datenpipeline, indem Sie die folgenden Schritte ausführen:

  1. Löschen Sie die Ressourcengruppe data-pipeline-cicd-rg.
  2. Löschen Sie Ihr Azure DevOps-Projekt.

Nächste Schritte