Share via


Creare una pipeline di dati usando Azure Data Factory, DevOps e Machine Learning

Servizi di Azure DevOps

Introduzione alla creazione di una pipeline di dati con inserimento dati, trasformazione dei dati e training del modello.

Informazioni su come recuperare i dati da un file CSV (valori delimitati da virgole) e salvare i dati in Archiviazione BLOB di Azure. Trasformare i dati e salvarli in un'area di gestione temporanea. Eseguire quindi il training di un modello di Machine Learning usando i dati trasformati. Scrivere il modello nell'archivio BLOB come file pickle Python.

Prerequisiti

Prima di iniziare, è necessario disporre di quanto segue:

Effettuare il provisioning delle risorse di Azure

  1. Accedere al portale di Azure.

  2. Dal menu selezionare il pulsante Cloud Shell . Quando viene richiesto, selezionare l'esperienza Bash.

    Screenshot showing where to select Cloud Shell from the menu.

    Nota

    È necessaria una risorsa Archiviazione di Azure per rendere persistenti tutti i file creati in Azure Cloud Shell. Alla prima apertura, Cloud Shell chiede di creare un gruppo di risorse, un account di archiviazione e una condivisione di File di Azure. Questa configurazione viene usata automaticamente per tutte le sessioni di Cloud Shell future.

Selezionare un'area di Azure

Un'area è uno o più data center di Azure all'interno di una posizione geografica. Stati Uniti orientali, Stati Uniti occidentali ed Europa settentrionale sono esempi di aree. A ogni risorsa di Azure, inclusa un'istanza di servizio app, viene assegnata un'area.

Per semplificare l'esecuzione dei comandi, iniziare selezionando un'area predefinita. Dopo aver specificato l'area predefinita, i comandi successivi usano tale area a meno che non si specifichi un'area diversa.

  1. In Cloud Shell eseguire questo comando az account list-locations per elencare le aree disponibili nella sottoscrizione di Azure.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Name Dalla colonna nell'output scegliere un'area vicina all'utente. Ad esempio, scegliere asiapacific o westus2.

  3. Eseguire az config per impostare l'area predefinita. Nell'esempio seguente sostituire <REGION> con il nome dell'area scelta.

    az config set defaults.location=<REGION>
    

    L'esempio seguente imposta westus2 come area predefinita.

    az config set defaults.location=westus2
    

Creare variabili Bash

  1. In Cloud Shell generare un numero casuale. Questo numero verrà usato per creare nomi univoci globali per determinati servizi nel passaggio successivo.

    resourceSuffix=$RANDOM
    
  2. Creare nomi univoci globali per l'account di archiviazione e l'insieme di credenziali delle chiavi. I comandi seguenti usano virgolette doppie, che indicano a Bash di interpolare le variabili usando la sintassi inline.

    storageName="datacicd${resourceSuffix}"
    keyVault="keyvault${resourceSuffix}"
    
  3. Creare un'altra variabile Bash per archiviare i nomi e l'area del gruppo di risorse. Nell'esempio seguente sostituire <REGION> con l'area scelta per l'area predefinita.

    rgName='data-pipeline-cicd-rg'
    region='<REGION>'
    
  4. Creare nomi di variabili per le istanze di Azure Data Factory e Azure Databricks.

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

Creazione di risorse Azure

  1. Eseguire il comando seguente az group create per creare un gruppo di risorse usando rgName.

    az group create --name $rgName
    
  2. Eseguire il comando seguente az storage account create per creare un nuovo account di archiviazione.

    az storage account create \
        --name $storageName \
        --resource-group $rgName \
        --sku Standard_RAGRS \
        --kind StorageV2
    
  3. Eseguire il comando seguente az storage container create per creare due contenitori e prepareddatarawdata .

    az storage container create -n rawdata --account-name $storageName 
    az storage container create -n prepareddata --account-name $storageName 
    
  4. Eseguire il comando seguente az keyvault create per creare un nuovo insieme di credenziali delle chiavi.

    az keyvault create \
        --name $keyVault \
        --resource-group $rgName
    
  5. Creare una nuova data factory usando l'interfaccia utente del portale o l'interfaccia della riga di comando di Azure:

    • Nome: data-factory-cicd-dev
    • Versione: V2
    • Gruppo di risorse: data-pipeline-cicd-rg
    • Località: la località più vicina
    • Deselezionare la selezione per Abilita Git.
    1. Aggiungere l'estensione Azure Data Factory.

      az extension add --name datafactory
      
    2. Eseguire il comando seguente az datafactory create per creare una nuova data factory.

       az datafactory create \
           --name data-factory-cicd-dev \
           --resource-group $rgName
      
    3. Copiare l'ID sottoscrizione. La data factory userà questo ID in un secondo momento.

  6. Creare una seconda data factory usando l'interfaccia utente del portale o l'interfaccia della riga di comando di Azure. Questa data factory verrà usata per i test.

    • Nome: data-factory-cicd-test
    • Versione: V2
    • Gruppo di risorse: data-pipeline-cicd-rg
    • Località: la località più vicina
    • Deselezionare la selezione per Enable GIT (Abilita GIT).
    1. Eseguire il comando seguente az datafactory create per creare una nuova data factory per il test.

       az datafactory create \
           --name data-factory-cicd-test \
           --resource-group $rgName
      
    2. Copiare l'ID sottoscrizione. La data factory userà questo ID in un secondo momento.

  7. Aggiungere un nuovo servizio Azure Databricks:

    • Gruppo di risorse: data-pipeline-cicd-rg
    • Nome area di lavoro: databricks-cicd-ws
    • Località: la località più vicina
    1. Aggiungere l'estensione Azure Databricks se non è già installata.

       az extension add --name databricks
      
    2. Eseguire il comando seguente az databricks workspace create per creare una nuova area di lavoro.

      az databricks workspace create \
          --resource-group $rgName \
          --name databricks-cicd-ws  \
          --location eastus2  \
          --sku trial
      
    3. Copiare l'ID sottoscrizione. Il servizio Databricks userà questo ID in un secondo momento.

Caricare i dati nel contenitore di archiviazione

  1. Nella portale di Azure aprire l'account di archiviazione nel data-pipeline-cicd-rg gruppo di risorse.
  2. Passare a Contenitori del servizio>BLOB.
  3. Aprire il prepareddata contenitore.
  4. Caricare il file sample.csv .

Impostare il Key Vault

Si userà Azure Key Vault per archiviare tutte le informazioni di connessione per i servizi di Azure.

Creare un token di accesso personale di Databricks

  1. Nella portale di Azure passare a Databricks e quindi aprire l'area di lavoro.
  2. Nell'interfaccia utente di Azure Databricks creare e copiare un token di accesso personale.

Copiare la chiave dell'account e stringa di connessione per l'account di archiviazione

  1. Passare all'account di archiviazione.
  2. Aprire chiavi di accesso.
  3. Copiare la prima chiave e stringa di connessione.

Salvare i valori in Key Vault

  1. Creare tre segreti:

    • databricks-token: your-databricks-pat
    • Archiviazione Key:your-storage-key
    • ArchiviazioneConnessione String:your-storage-connection
  2. Eseguire il comando seguente az keyvault secret set per aggiungere segreti all'insieme di credenziali delle chiavi.

    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"
    

Importare la soluzione della pipeline di dati

  1. Accedere all'organizzazione di Azure DevOps e quindi passare al progetto.
  2. Passare a Repos e quindi importare la versione con fork del repository GitHub. Per altre informazioni, vedere Importare un repository Git nel progetto.

Aggiungi una connessione al servizio Azure Resource Manager

  1. Creare una connessione al servizio Azure Resource Manager.
  2. Selezionare Entità servizio (automatico).
  3. Scegliere il gruppo di risorse data-pipeline-cicd-rg .
  4. Denominare la connessione azure_rm_connectional servizio .
  5. Selezionare Concedi l'autorizzazione di accesso a tutte le pipeline. Per selezionare questa opzione, è necessario disporre del ruolo service Connessione ions Amministrazione istrator.

Aggiungere variabili della pipeline

  1. Creare un nuovo gruppo di variabili denominato datapipeline-vg.

  2. Aggiungere l'estensione Azure DevOps, se non è già installata.

    az extension add --name azure-devops 
    
  3. Accedere all'organizzazione di 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. Creare un secondo gruppo di variabili denominato keys-vg. Questo gruppo eseguirà il pull delle variabili di dati da Key Vault.

  5. Selezionare Collega segreti da un insieme di credenziali delle chiavi di Azure come variabili. Per altre informazioni, vedere Collegare i segreti da un insieme di credenziali delle chiavi di Azure.

  6. Autorizzare la sottoscrizione di Azure.

  7. Scegliere tutti i segreti disponibili da aggiungere come variabili (databricks-token,StorageConnectString,StorageKey).

Configurare Azure Databricks e Azure Data Factory

Seguire la procedura descritta nelle sezioni successive per configurare Azure Databricks e Azure Data Factory.

Creare un ambito di test in Azure Databricks

  1. Nella portale di Azure passare a Proprietà dell'insieme di credenziali>delle chiavi.
  2. Copiare il nome DNS e l'ID risorsa.
  3. Nell'area di lavoro di Azure Databricks creare un ambito segreto denominato testscope.

Aggiungere un nuovo cluster in Azure Databricks

  1. Nell'area di lavoro di Azure Databricks passare a Cluster.
  2. Selezionare Create Cluster (Crea cluster).
  3. Assegnare un nome e salvare il nuovo cluster.
  4. Selezionare il nuovo nome del cluster.
  5. Nella stringa URL copiare il contenuto tra /clusters/ e /configuration. Ad esempio, nella stringa clusters/0306-152107-daft561/configurationè necessario copiare 0306-152107-daft561.
  6. Salvare questa stringa per usarla in un secondo momento.

Configurare il repository di codice in Azure Data Factory

  1. In Azure Data Factory passare a Creazione e monitoraggio. Per altre informazioni, vedere Creare una data factory.
  2. Selezionare Configura repository di codice e quindi connettere il repository.
    • Tipo di repository: Azure DevOps Git
    • Organizzazione di Azure DevOps: l'account attivo
    • Nome progetto: progetto della pipeline di dati di Azure DevOps
    • Nome repository Git: usare esistente.
      • Selezionare il ramo principale per la collaborazione.
      • Impostare /azure-data-pipeline/factorydata come cartella radice.
    • Ramo in cui importare la risorsa: selezionare Usa esistente e principale.
  1. Nell'interfaccia utente portale di Azure aprire l'insieme di credenziali delle chiavi.
  2. Seleziona Criteri di accesso.
  3. Seleziona Aggiungi criteri di accesso.
  4. Per Configura da modello, selezionare Chiave e gestione dei segreti.
  5. In Seleziona entità cercare il nome della data factory di sviluppo e aggiungerla.
  6. Selezionare Aggiungi per aggiungere i criteri di accesso.
  7. Ripetere questi passaggi per aggiungere un criterio di accesso per la data factory di test.

Aggiornare il servizio collegato dell'insieme di credenziali delle chiavi in Azure Data Factory

  1. Passare a Gestisci>servizi collegati.
  2. Aggiornare l'insieme di credenziali delle chiavi di Azure per connettersi alla sottoscrizione.

Aggiornare il servizio collegato di archiviazione in Azure Data Factory

  1. Passare a Gestisci>servizi collegati.
  2. Aggiornare il valore Archiviazione BLOB di Azure per connettersi alla sottoscrizione.

Aggiornare il servizio collegato Azure Databricks in Azure Data Factory

  1. Passare a Gestisci>servizi collegati.
  2. Aggiornare il valore di Azure Databricks per connettersi alla sottoscrizione.
  3. Per l'ID cluster esistente immettere il valore del cluster salvato in precedenza.

Testare e pubblicare la data factory

  1. In Azure Data Factory passare a Modifica.
  2. DataPipeline aperti.
  3. Seleziona Variabili.
  4. Verificare che faccia riferimento all'account storage_account_name di archiviazione nel portale di Azure. Aggiornare il valore predefinito, se necessario. Salva le modifiche.
  5. Selezionare Convalida per verificare DataPipeline.
  6. Selezionare Pubblica per pubblicare asset di data factory nel adf_publish ramo del repository.

Eseguire la pipeline CI/CD

Seguire questa procedura per eseguire la pipeline di integrazione continua e recapito continuo (CI/CD):

  1. Passare alla pagina Pipeline . Quindi scegliere l'azione per creare una nuova pipeline.
  2. Selezionare Azure Repos Git come posizione del codice sorgente.
  3. Quando viene visualizzato l'elenco dei repository, selezionare il repository.
  4. Quando si configura la pipeline, selezionare File YAML di Azure Pipelines esistente. Scegliere il file YAML: /azure-data-pipeline/data_pipeline_ci_cd.yml.
  5. Esegui la pipeline. Se la pipeline non è stata eseguita in precedenza, potrebbe essere necessario concedere l'autorizzazione per accedere a una risorsa durante l'esecuzione.

Pulire le risorse

Se non si intende continuare a usare questa applicazione, eliminare la pipeline di dati seguendo questa procedura:

  1. Eliminare il data-pipeline-cicd-rg gruppo di risorse.
  2. Eliminare il progetto Azure DevOps.

Passaggi successivi