Partager via


Créer un pipeline de données à l’aide d’Azure Data Factory, d’Azure DevOps et d’Azure Machine Learning

Azure DevOps Services

Commencez à créer un pipeline de données avec l’ingestion de données, la transformation des données et l’entraînement de modèle.

Découvrez comment récupérer des données à partir d’un fichier CSV (valeurs séparées par des virgules) et enregistrer les données dans Stockage Blob Azure. Transformez les données et enregistrez-les dans une zone de préproduction. Entraînez ensuite un modèle Machine Learning à l’aide des données transformées. Écrivez le modèle dans le stockage d’objets blob sous la forme d’un fichier pickle Python.

Prérequis

Avant de commencer, vous avez besoin des éléments suivants :

Approvisionner des ressources Azure

  1. Connectez-vous au portail Azure.

  2. Dans le menu, sélectionnez le bouton Azure Cloud Shell . Quand vous y êtes invité, sélectionnez l’expérience Bash.

    Capture d’écran montrant où sélectionner Cloud Shell dans le menu.

    Notes

    Vous avez besoin d’une ressource stockage Azure pour conserver les fichiers que vous créez dans Cloud Shell. Quand vous ouvrez Cloud Shell pour la première fois, vous êtes invité à créer un groupe de ressources, un compte de stockage et un partage Azure Files. Le portail Azure utilise automatiquement cette configuration pour toutes les futures sessions Cloud Shell.

Sélectionner une région Azure

Une région représente un ou plusieurs centres de données Azure dans une localisation géographique. USA Est, USA Ouest et Europe Nord sont des exemples de régions. Chaque ressource Azure, y compris une instance Azure App Service, est affectée à une région.

Sélectionnez une région par défaut pour faciliter l’exécution des commandes. Une fois la région par défaut spécifiée, les commandes utilisent par la suite cette région tant que vous n’en spécifiez pas une autre.

  1. Dans Cloud Shell, exécutez la commande az account list-locations suivante pour lister les régions disponibles à partir de votre abonnement Azure.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Dans la colonne Name de la sortie, choisissez une région proche de vous. Par exemple, choisissez asiapacific ou westus2.

  3. Exécutez az config pour définir votre région par défaut. Dans l’exemple suivant, remplacez par <REGION> le nom de la région que vous avez choisie.

    az config set defaults.location=<REGION>
    

    Dans cet exemple, westus2 est défini comme région par défaut.

    az config set defaults.location=westus2
    

Créer des variables Bash

  1. À partir de Cloud Shell, générez un nombre aléatoire. Utilisez ce numéro pour créer des noms globaux uniques pour certains services à l’étape suivante.

    resourceSuffix=$RANDOM
    
  2. Créez des noms globaux uniques pour votre compte de stockage et Azure Key Vault. Ces commandes utilisent des guillemets doubles, qui indiquent à Bash d’interpoler les variables en utilisant la syntaxe inline.

    storageName="datacicd${resourceSuffix}"
    keyVault="keyvault${resourceSuffix}"
    
  3. Créez une autre variable Bash pour stocker les noms et la région de votre groupe de ressources. Dans l’exemple suivant, remplacez par <REGION> la région que vous avez choisie pour la région par défaut.

    rgName='data-pipeline-cicd-rg'
    region='<REGION>'
    
  4. Créez des noms de variables pour vos instances Azure Data Factory et Azure Databricks.

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

Créer des ressources Azure

  1. Exécutez la commande suivante az group create pour créer un groupe de ressources à l’aide de rgName.

    az group create --name $rgName
    
  2. Exécutez la commande az storage account create suivante pour créer un compte de stockage.

    az storage account create \
        --name $storageName \
        --resource-group $rgName \
        --sku Standard_RAGRS \
        --kind StorageV2
    
  3. Exécutez la commande suivante az storage container create pour créer deux conteneurs, rawdata et prepareddata.

    az storage container create -n rawdata --account-name $storageName 
    az storage container create -n prepareddata --account-name $storageName 
    
  4. Exécutez la commande suivante az keyvault create pour créer un coffre de clés.

    az keyvault create \
        --name $keyVault \
        --resource-group $rgName
    
  5. Créez une fabrique de données à l’aide de l’interface utilisateur du portail ou d’Azure CLI :

    • Nom : data-factory-cicd-dev
    • Version : V2
    • Groupe de ressources : data-pipeline-cicd-rg
    • Emplacement : votre emplacement le plus proche
    • Désactivez la sélection pour Activer Git.
    1. Ajoutez l’extension Azure Data Factory.

      az extension add --name datafactory
      
    2. Exécutez la commande suivante az datafactory create pour créer une fabrique de données Azure.

       az datafactory create \
           --name data-factory-cicd-dev \
           --resource-group $rgName
      
    3. Copiez l’ID d’abonnement. Votre fabrique de données utilise cet ID ultérieurement.

  6. Créez une deuxième fabrique de données à l’aide de l’interface utilisateur du portail ou d’Azure CLI : Vous utilisez cette fabrique de données Azure pour les tests.

    • Nom : data-factory-cicd-test
    • Version : V2
    • Groupe de ressources : data-pipeline-cicd-rg
    • Emplacement : votre emplacement le plus proche
    • Désactivez la sélection pour Activer GIT.
    1. Exécutez la commande suivante az datafactory create pour créer une fabrique de données Azure à des fins de test.

       az datafactory create \
           --name data-factory-cicd-test \
           --resource-group $rgName
      
    2. Copiez l’ID d’abonnement. Votre fabrique de données utilise cet ID ultérieurement.

  7. Ajoutez un nouveau service Azure Databricks :

    • Groupe de ressources : data-pipeline-cicd-rg
    • Nom de l'espace de travail : databricks-cicd-ws
    • Emplacement : votre emplacement le plus proche
    1. Ajoutez l’extension Azure Databricks si elle n’est pas déjà installée.

       az extension add --name databricks
      
    2. Exécutez la commande az databricks workspace create suivante pour créer un espace de travail.

      az databricks workspace create \
          --resource-group $rgName \
          --name databricks-cicd-ws  \
          --location $region  \
          --sku trial
      
    3. Copiez l’ID d’abonnement. Votre service Databricks utilise cet ID ultérieurement.

Charger des données dans votre conteneur de stockage

  1. Dans le Portail Azure, ouvrez votre compte de stockage dans le data-pipeline-cicd-rg groupe de ressources.
  2. Accédez à Conteneurs>de service Blob.
  3. Ouvrez le conteneur de prepareddata.
  4. Chargez le fichier sample.csv.

Configurer Azure Key Vault

Vous utilisez Azure Key Vault pour stocker toutes les informations de connexion pour vos services Azure.

Créer un jeton d’accès personnel Databricks

  1. Dans le Portail Azure, accédez à Databricks, puis ouvrez votre espace de travail.
  2. Dans l’interface utilisateur Azure Databricks, créez et copiez un jeton d’accès personnel.

Copiez la clé de compte et la chaîne de connexion pour votre compte de stockage

  1. Accédez à votre compte de stockage.
  2. Ouvrir Clé d'accès .
  3. Copiez la première clé et la chaîne de connexion.

Enregistrer des valeurs dans le coffre de clés

  1. Créez trois secrets :

    • databricks-token : your-databricks-pat
    • StorageKey : your-storage-key
    • StorageConnectString : your-storage-connection
  2. Exécutez la commande suivante az keyvault secret set pour ajouter des secrets à votre coffre de clés.

    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"
    

Importer la solution de pipeline de données

  1. Connectez-vous à votre organisation Azure DevOps puis accédez à votre projet.
  2. Accédez à Repos, puis importez votre version dupliquée du référentiel GitHub. Pour plus d’informations, consultez Importer un référentiel Git dans votre projet.

Ajouter une connexion de service Azure Resource Manager

  1. Créer une connexion de service Azure Resource Manager.
  2. Sélectionnez l’inscription d’application (automatique) et la fédération des identités de charge de travail.
  3. Sélectionnez votre abonnement.
  4. Choisissez le groupe de ressources data-pipeline-cicd-rg .
  5. Nommez la connexion de service azure_rm_connection.
  6. Sélectionnez Accorder une autorisation d’accès à tous les pipelines. Vous avez besoin du rôle Administrateur des connexions de service pour sélectionner cette option.

Ajouter des variables de pipeline

  1. Créez un groupe de variables nommé datapipeline-vg.

  2. Ajoutez l’extension Azure DevOps si vous ne l’avez pas déjà installée.

    az extension add --name azure-devops 
    
  3. Connectez-vous à votre organisation 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. Créez un deuxième groupe de variables nommé keys-vg. Ce groupe extrait les variables de données de la clé Vvult.

  5. Sélectionnez Lier des secrets à partir d’un coffre de clés Azure en tant que variables. Pour plus d’informations, consultez Lier un groupe de variables aux secrets dans Azure Key Vault.

  6. Autorisez l’abonnement Azure.

  7. Choisissez tous les secrets disponibles à ajouter en tant que variables (databricks-token,StorageConnectString,StorageKey).

Configurer Azure Databricks et Azure Data Factory

Suivez les étapes des sections suivantes pour configurer Azure Databricks et Azure Data Factory.

Créer un testscope dans Azure Databricks

  1. Dans le Portail Azure, accédez àPropriétés du >coffre de clés.
  2. Copiez le nom DNS et l’ID de ressource.
  3. Dans votre espace de travail Azure Databricks, créez une étendue secrète nommée testscope.

Ajouter un nouveau cluster dans Azure Databricks

  1. Dans l’espace de travail Azure Databricks, accédez à Clusters.
  2. Sélectionnez Créer un cluster.
  3. Nommez et enregistrez votre nouveau cluster.
  4. Sélectionnez le nouveau nom de votre cluster.
  5. Dans la chaîne d’URL, copiez le contenu entre /clusters/ et /configuration. Par exemple, dans la chaîne clusters/0306-152107-daft561/configuration, vous copiez 0306-152107-daft561.
  6. Enregistrez cette chaîne pour l’utiliser ultérieurement.

Configurer votre référentiel de code dans Azure Data Factory

  1. Dans Azure Data Factory, accédez à Auteur et surveillance. Pour plus d’informations, consultez Créer une fabrique de données.
  2. Sélectionnez Configurer le référentiel de code, puis connectez votre référentiel.
    • Type de dépôt : Azure DevOps Git
    • Azure DevOps organization : votre compte actif
    • Nom du projet : votre projet de pipeline de données Azure DevOps
    • Nom du référentiel Git : utilisez existant.
      • Sélectionnez la branche principale pour la collaboration.
      • Définissez /azure-data-pipeline/factorydata comme dossier racine.
    • Branche dans laquelle importer la ressource : sélectionnez Utiliser la branche existante et principale.
  1. Dans l’interface utilisateur du Portail Azure, ouvrez le coffre de clés.
  2. Sélectionnez Stratégies d’accès.
  3. Sélectionnez Ajouter une stratégie d’accès.
  4. Pour Configurer à partir d’un modèle, sélectionnez Clé et gestion des secrets.
  5. Dans Sélectionner un principal, recherchez le nom de votre Azure Data Factory de développement et ajoutez-le.
  6. Sélectionnez Ajouter pour ajouter vos stratégies d’accès.
  7. Répétez ces étapes pour ajouter une stratégie d’accès pour le test Azure Data Factory.

Mettre à jour le service lié de coffre de clés dans Azure Data Factory

  1. Accédez à Gérer>Services liés.
  2. Mettez à jour le coffre de clés pour vous connecter à votre abonnement.

Mettre à jour le service lié de stockage dans Azure Data Factory

  1. Accédez à Gérer>Services liés.
  2. Mettez à jour la valeur Stockage Blob Azure pour vous connecter à votre abonnement.

Mettre à jour le service lié Azure Databricks dans Azure Data Factory

  1. Accédez à Gérer>Services liés.
  2. Mettez à jour la valeur Azure Databricks pour vous connecter à votre abonnement.
  3. Pour l’ID de cluster existant, entrez la valeur du cluster que vous avez enregistrée précédemment.

Tester et publier la fabrique de données

  1. Dans Azure Data Factory, accédez à Modifier.
  2. Ouvrez DataPipeline.
  3. Sélectionnez Variables.
  4. Vérifiez que le storage_account_name fait référence à votre compte de stockage dans le Portail Azure. Mettez à jour la valeur par défaut si nécessaire. Enregistrez vos modifications.
  5. Sélectionnez Valider pour vérifier DataPipeline.
  6. Sélectionnez Publier pour publier des ressources de fabrique de données dans la adf_publish branche de votre référentiel.

Exécuter le pipeline CI/CD

Procédez comme suit pour exécuter le pipeline d’intégration continue et de livraison continue (CI/CD) :

  1. Accédez à la page Pipelines. Choisissez ensuite l’action pour créer un pipeline.
  2. Sélectionnez Azure Repos Git comme emplacement de votre code.
  3. Quand la liste des dépôts s’affiche, sélectionnez votre dépôt.
  4. Lorsque vous configurez votre pipeline, sélectionnez Fichier YAML Azure Pipelines existant. Choisissez le fichier YAML : /azure-data-pipeline/data_pipeline_ci_cd.yml.
  5. Exécuter le pipeline. Lors de l’exécution de votre pipeline pour la première fois, vous devrez peut-être accorder l’autorisation d’accéder à une ressource pendant l’exécution.

Exemple de fichier YAML de pipeline

Le data_pipeline_ci_cd.yml fichier orchestre le déploiement de vos ressources Data Factory et Databricks. Voici un exemple de structure de ce que contient le pipeline :

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)

Pour obtenir le fichier de pipeline complet, consultez le référentiel azure-data-pipeline.

Nettoyer les ressources

Si vous ne prévoyez pas de continuer à utiliser cette application, supprimez votre pipeline de données en procédant comme suit :

  1. Supprimer le data-pipeline-cicd-rg groupe de ressources.
  2. Supprimez votre projet Azure DevOps.

Étapes suivantes