Erstellen einer Datenpipeline mithilfe von Azure Data Factory, DevOps und maschinellem Lernen

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 Schaltfläche Cloud Shell aus. Wählen Sie Bash aus, wenn Sie dazu aufgefordert werden.

    Screenshot showing where to select Cloud Shell from the menu.

    Hinweis

    Sie benötigen eine Azure Storage-Ressource, damit Sie die in Azure Cloud Shell erstellten Dateien aufbewahren können. Wenn Sie Cloud Shell erstmals öffnen, werden Sie aufgefordert, eine Ressourcengruppe, ein Speicherkonto und eine Azure Files-Freigabe zu erstellen. Dieses Setup wird automatisch für alle zukünftigen Cloud Shell-Sitzungen verwendet.

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 App Service-Instanzen, wird eine Region zugewiesen.

Um die Ausführung von Befehlen zu erleichtern, wählen Sie zunächst eine Standardregion aus. 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. Sie verwenden 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 Ihren Schlüsseltresor. 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 Befehl az keyvault create aus, um einen neuen Schlüsseltresor 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 Befehl az datafactory create aus, um eine neue Data Factory zu erstellen.

       az datafactory create \
           --name data-factory-cicd-dev \
           --resource-group $rgName
      
    3. Kopieren Sie die Abonnement-ID. Ihre Data Factory 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 Data Factory zu Testzwecken.

    • 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 Befehl az datafactory create aus, um eine neue Data Factory für Ihre Tests zu erstellen.

       az datafactory create \
           --name data-factory-cicd-test \
           --resource-group $rgName
      
    2. Kopieren Sie die Abonnement-ID. Ihre Data Factory 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 eastus2  \
          --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 Key Vault

Sie verwenden Azure Key Vault, um sämtliche Verbindungsinformationen zu Ihren Azure-Diensten 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.

Speichern von Werten in Key Vault

  1. Erstellen Sie drei Geheimnisse:

    • databricks-token: your-databricks-pat
    • StorageKey: 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 Dienstprinzipal (automatisch) aus.
  3. Wählen Sie die Ressourcengruppe data-pipeline-cicd-rg aus.
  4. Benennen Sie die Dienstverbindung mit azure_rm_connection.
  5. Aktivieren Sie die Option Allen Pipelines die Zugriffsberechtigung gewähren. Sie benötigen die Dienstverbindungsadministratorrolle, um diese Option auswählen zu können.

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 noch nicht installiert ist.

    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 pullt Datenvariablen aus Key Vault.

  5. Wählen Sie Geheimnisse von einem Azure Key Vault als Variablen verknüpfen aus. Weitere Informationen finden Sie unter Verknüpfen von Geheimnissen aus 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 würden Sie z. B. 0306-152107-daft561 kopieren.
  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 unter Prinzipal auswählen nach dem Namen Ihrer Entwicklungs-Data Factory, und fügen Sie sie hinzu.
  6. Wählen Sie Hinzufügen aus, um Ihre Zugriffsrichtlinien hinzuzufügen.
  7. Wiederholen Sie diese Schritte, um eine Zugriffsrichtlinie für die Test-Data Factory hinzuzufügen.

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

  1. Navigieren Sie zu Verwalten>Verknüpfte Dienste.
  2. Aktualisieren Sie den Schlüsseltresor in Azure 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 Ihre Pipeline noch nicht ausgeführt wurde, müssen Sie möglicherweise während der Ausführung die Berechtigung für den Zugriff auf eine Ressource erteilen.

Bereinigen von Ressourcen

Falls Sie diese Anwendung nicht weiterverwenden möchten, löschen Sie Ihre Datenpipeline wie folgt:

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

Nächste Schritte