Créer un pipeline de données à l’aide de Azure Data Factory, DevOps et 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 Cloud Shell. Quand vous y êtes invité, sélectionnez l’expérience Bash.

    Screenshot showing where to select Cloud Shell from the menu.

    Remarque

    Pour conserver les fichiers que vous créez tout en travaillant dans Cloud Shell, vous devez avoir une ressource de stockage Azure. 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. Cette configuration est automatiquement utilisée 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. Une région est affectée à chaque ressource Azure, notamment à une instance App Service.

Pour faciliter l’exécution des commandes, commencez par sélectionner une région par défaut. 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. Vous allez utiliser ce nombre 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 votre coffre de clés. 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 az keyvault create suivante 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 az datafactory create suivante pour créer une fabrique de données.

       az datafactory create \
           --name data-factory-cicd-dev \
           --resource-group $rgName
      
    3. Copiez l’ID d’abonnement. Votre fabrique de données utilisera 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 allez utiliser cette fabrique de données 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 az datafactory create suivante pour créer un test.

       az datafactory create \
           --name data-factory-cicd-test \
           --resource-group $rgName
      
    2. Copiez l’ID d’abonnement. Votre fabrique de données utilisera 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 eastus2  \
          --sku trial
      
    3. Copiez l’ID d’abonnement. Votre service Databricks utilisera 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.

Configuration d’Azure Key Vault

Vous allez utiliser 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 Key Vault

  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 Principal de service (automatique) .
  3. Choisissez le groupe de ressources data-pipeline-cicd-rg .
  4. Nommez la connexion de service azure_rm_connection.
  5. Sélectionnez Accorder une autorisation d’accès à tous les pipelines. Pour sélectionner cette option, vous aurez besoin du rôle d’administrateur des connexions de service.

Ajouter des variables de pipeline

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

  2. Ajoutez l’extension Azure DevOps si elle n’est 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 Key Vault.

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

  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 devez copier 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 fabrique de données 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 la fabrique de données de test.

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 Azure 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. Si votre pipeline n’a pas été exécuté auparavant, vous devrez peut-être accorder l’autorisation d’accéder à une ressource pendant l’exécution.

Nettoyer les ressources

Si vous ne pensez pas 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