Esercitazione: Eseguire un processo Batch tramite Data Factory con Batch Explorer, Storage Explorer e Python

Questa esercitazione illustra come creare ed eseguire una pipeline di Azure Data Factory che esegue un carico di lavoro Azure Batch. Uno script Python viene eseguito nei nodi Batch per ottenere l'input con valori delimitati da virgole da un contenitore Archiviazione BLOB di Azure, modificare i dati e scrivere l'output in un contenitore di archiviazione diverso. È possibile usare Batch Explorer per creare un pool e nodi batch e Azure Storage Explorer per usare contenitori e file di archiviazione.

In questa esercitazione verranno illustrate le procedure per:

  • Usare Batch Explorer per creare un pool e nodi Batch.
  • Usare Storage Explorer per creare contenitori di archiviazione e caricare file di input.
  • Sviluppare uno script Python per modificare i dati di input e produrre l'output.
  • Creare una pipeline di Data Factory che esegue il carico di lavoro Batch.
  • Usare Batch Explorer per esaminare i file di log di output.

Prerequisiti

Usare Batch Explorer per creare un pool e nodi Batch

Usare Batch Explorer per creare un pool di nodi di calcolo per eseguire il carico di lavoro.

  1. Accedere a Batch Explorer con le credenziali di Azure.

  2. Selezionare l'account Batch.

  3. Selezionare Pool sulla barra laterale sinistra e quindi selezionare l'icona + per aggiungere un pool.

    Screenshot della creazione di un pool in Batch Explorer.

  4. Completare il modulo Aggiungi un pool al modulo account come indicato di seguito:

    • In ID immettere il pool di attività personalizzato.
    • In Nodi dedicati immettere 2.
    • Per Selezionare una configurazione del sistema operativo, selezionare la scheda Data science e quindi selezionare Dsvm Win 2019.
    • Per Scegliere una dimensione della macchina virtuale, selezionare Standard_F2s_v2.
    • Per Avvia attività selezionare Aggiungi un'attività di avvio. Nella schermata dell'attività iniziale, in Riga di comando immettere cmd /c "pip install azure-storage-blob pandas"e quindi selezionare Seleziona. Questo comando installa il pacchetto in ogni nodo durante l'avvio azure-storage-blob .
  5. Selezionare Salva e chiudi.

Usare Storage Explorer per creare contenitori BLOB

Usare Storage Explorer per creare contenitori BLOB per archiviare i file di input e di output e quindi caricare i file di input.

  1. Accedere a Storage Explorer con le credenziali di Azure.
  2. Nella barra laterale sinistra individuare e espandere l'account di archiviazione collegato all'account Batch.
  3. Fare clic con il pulsante destro del mouse su Contenitori BLOB e scegliere Creacontenitore BLOB in Azioni nella parte inferiore della barra laterale.
  4. Immettere l'input nel campo di immissione.
  5. Creare un altro contenitore BLOB denominato output.
  6. Selezionare il contenitore di input e quindi caricare>i file nel riquadro destro.
  7. Nella schermata Carica file , in File selezionati selezionare i puntini di sospensione ... accanto al campo voce.
  8. Passare al percorso del file scaricato iris.csv , selezionare Apri e quindi selezionare Carica.

Screenshot di Storage Explorer con contenitori e BLOB creati nell'account di archiviazione.

Sviluppare uno script Python

Lo script Python seguente carica il file del set di datiiris.csvdal contenitore di input Storage Explorer, modifica i dati e salva i risultati nel contenitore di output.

Lo script deve usare la stringa di connessione per l'account di archiviazione di Azure collegato all'account Batch. Per ottenere la stringa di connessione:

  1. Nella portale di Azure cercare e selezionare il nome dell'account di archiviazione collegato all'account Batch.
  2. Nella pagina dell'account di archiviazione selezionare Chiavi di accesso dal riquadro di spostamento a sinistra in Sicurezza e rete.
  3. In key1 selezionare Mostra accanto alla stringa di connessione e quindi selezionare l'icona Copia per copiare la stringa di connessione.

Incollare la stringa di connessione nello script seguente, sostituendo il <storage-account-connection-string> segnaposto. Salvare lo script come file denominato main.py.

Importante

L'esposizione delle chiavi dell'account nell'origine dell'app non è consigliata per l'utilizzo di produzione. È consigliabile limitare l'accesso alle credenziali e fare riferimento al codice usando variabili o un file di configurazione. È consigliabile archiviare le chiavi dell'account di Archiviazione e Batch in Azure Key Vault.

# Load libraries
from azure.storage.blob import BlobClient
import pandas as pd

# Define parameters
connectionString = "<storage-account-connection-string>"
containerName = "output"
outputBlobName	= "iris_setosa.csv"

# Establish connection with the blob storage account
blob = BlobClient.from_connection_string(conn_str=connectionString, container_name=containerName, blob_name=outputBlobName)

# Load iris dataset from the task node
df = pd.read_csv("iris.csv")

# Take a subset of the records
df = df[df['Species'] == "setosa"]

# Save the subset of the iris dataframe locally in the task node
df.to_csv(outputBlobName, index = False)

with open(outputBlobName, "rb") as data:
    blob.upload_blob(data, overwrite=True)

Eseguire lo script in locale per testare e convalidare la funzionalità.

python main.py

Lo script deve produrre un file di output denominato iris_setosa.csv che contiene solo i record di dati con Species = setosa. Dopo aver verificato che funzioni correttamente, caricare il file di script main.py nel contenitore di input Storage Explorer.

Configurare una pipeline di Data Factory

Creare e convalidare una pipeline di Data Factory che usa lo script Python.

Ottenere le informazioni sull'account

La pipeline di Data Factory usa i nomi degli account batch e di archiviazione, i valori delle chiavi dell'account e l'endpoint dell'account Batch. Per ottenere queste informazioni dal portale di Azure:

  1. Nella barra di ricerca di Azure cercare e selezionare il nome dell'account Batch.

  2. Nella pagina Account Batch selezionare Chiavi dalla navigazione a sinistra.

  3. Nella pagina Chiavi copiare i valori seguenti:

    • Account Batch
    • Endpoint dell'account
    • Chiave di accesso primaria
    • Nome account di archiviazione
    • Chiave1

Creare ed eseguire la pipeline

  1. Se Azure Data Factory Studio non è già in esecuzione, selezionare Avvia studio nella pagina Data Factory nella portale di Azure.

  2. In Data Factory Studio selezionare l'icona a forma di matita Autore nella navigazione a sinistra.

  3. In Risorse factory selezionare l'icona + e quindi selezionare Pipeline.

  4. Nel riquadro Proprietà a destra modificare il nome della pipeline in Esegui Python.

    Screenshot di Data Factory Studio dopo aver selezionato Aggiungi pipeline.

  5. Nel riquadro Attività espandere Servizio Batch e trascinare l'attività personalizzata nell'area di progettazione pipeline.

  6. Sotto l'area di disegno della finestra di progettazione immettere testPipeline sotto Nome.

    Screenshot della scheda Generale per la creazione di un'attività della pipeline.

  7. Selezionare la scheda Azure Batch e quindi selezionare Nuovo.

  8. Completare il modulo Nuovo servizio collegato come indicato di seguito:

    • Nome: immettere un nome per il servizio collegato, ad esempio AzureBatch1.
    • Chiave di accesso: immettere la chiave di accesso primaria copiata dall'account Batch.
    • Nome account: immettere il nome dell'account Batch.
    • URL batch: immettere l'endpoint dell'account copiato dall'account Batch, ad esempio https://batchdotnet.eastus.batch.azure.com.
    • Nome pool: immettere il pool personalizzato, il pool creato in Batch Explorer.
    • Nome del servizio collegato dell'account di archiviazione: selezionare Nuovo. Nella schermata successiva immettere un nome per il servizio di archiviazione collegato, ad esempio AzureBlobStorage1, selezionare la sottoscrizione di Azure e l'account di archiviazione collegato e quindi selezionare Crea.
  9. Nella parte inferiore della schermata Del servizio collegato batch selezionare Test connessione. Quando la connessione ha esito positivo, selezionare Crea.

    Screenshot della schermata Nuovo servizio collegato per il processo Batch.

  10. Selezionare la scheda Impostazioni e immettere o selezionare le impostazioni seguenti:

    • Comando: immettere cmd /C python main.py.
    • Servizio collegato alle risorse: selezionare il servizio di archiviazione collegato creato, ad esempio AzureBlobStorage1 e testare la connessione per assicurarsi che sia riuscita.
    • Percorso cartella: selezionare l'icona della cartella e quindi selezionare il contenitore di input e selezionare OK. I file di questa cartella vengono scaricati dal contenitore ai nodi del pool prima dell'esecuzione dello script Python.

    Screenshot della scheda Impostazioni per il processo Batch.

  11. Selezionare Convalida sulla barra degli strumenti della pipeline per convalidare la pipeline.

  12. Selezionare Debug per testare la pipeline e assicurarsi che funzioni correttamente.

  13. Selezionare Pubblica tutto per pubblicare la pipeline.

  14. Selezionare Aggiungi trigger, quindi selezionare Trigger ora per eseguire la pipeline o Nuova/Modifica per pianificarla.

    Screenshot di Convalida, Debug, Pubblica tutto e Aggiungi selezioni trigger in Data Factory.

Usare Batch Explorer per visualizzare i file di log

Se l'esecuzione della pipeline genera avvisi o errori, è possibile usare Batch Explorer per esaminare i file di stdout.txte stderr.txt di output per altre informazioni.

  1. In Esplora batch selezionare Processi dalla barra laterale sinistra.
  2. Selezionare il processo adfv2-custom-activity-pool .
  3. Selezionare un'attività con codice di uscita di errore.
  4. Visualizzare i file stdout.txt e stderr.txt per analizzare e diagnosticare il problema.

Pulire le risorse

Gli account, i processi e le attività batch sono gratuiti, ma i nodi di calcolo comportano addebiti anche quando non eseguono processi. È consigliabile allocare i pool di nodi solo in base alle esigenze ed eliminare i pool al termine dell'operazione. L'eliminazione dei pool elimina tutti gli output delle attività nei nodi e i nodi stessi.

I file di input e output rimangono nell'account di archiviazione e possono comportare addebiti. Quando non sono più necessari i file, è possibile eliminare i file o i contenitori. Quando non è più necessario l'account batch o l'account di archiviazione collegato, è possibile eliminarli.

Passaggi successivi

In questa esercitazione si è appreso come usare uno script Python con Batch Explorer, Storage Explorer e Data Factory per eseguire un carico di lavoro Batch. Per altre informazioni su Data Factory, vedere Che cos'è Azure Data Factory?