Condividi tramite


Trasformare dati nel cloud usando un'attività Spark in Azure Data Factory

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

In questa esercitazione si usa il portale di Azure per creare una pipeline di Azure Data Factory. Questa pipeline trasforma i dati usando un'attività Spark e un servizio collegato su richiesta di Azure HDInsight.

In questa esercitazione vengono completati i passaggi seguenti:

  • Creare una data factory.
  • Creare una pipeline che usa un'attività Spark.
  • Attivare un'esecuzione della pipeline.
  • Monitorare l'esecuzione della pipeline.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Prerequisiti

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

  • Account di archiviazione di Azure. Creare uno script Python e un file di input, quindi caricarli in Archiviazione di Azure. L'output del programma Spark viene archiviato in questo account di archiviazione. Il cluster Spark su richiesta usa lo stesso account di archiviazione come risorsa di archiviazione primaria.

Nota

HDInsight supporta solo gli account di archiviazione per utilizzo generico di livello Standard. Assicurarsi che l'account non sia un account di archiviazione Premium o solo BLOB.

Caricare lo script Python nell'account di archiviazione BLOB

  1. Creare un file Python denominato WordCount_Spark.py con il contenuto seguente:

    import sys
    from operator import add
    
    from pyspark.sql import SparkSession
    
    def main():
        spark = SparkSession\
            .builder\
            .appName("PythonWordCount")\
            .getOrCreate()
    
        lines = spark.read.text("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/inputfiles/minecraftstory.txt").rdd.map(lambda r: r[0])
        counts = lines.flatMap(lambda x: x.split(' ')) \
            .map(lambda x: (x, 1)) \
            .reduceByKey(add)
        counts.saveAsTextFile("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/outputfiles/wordcount")
    
        spark.stop()
    
    if __name__ == "__main__":
        main()
    
  2. Sostituire <storageAccountName> con il nome del proprio account di archiviazione di Azure. Salvare quindi il file.

  3. Nell'Archivio BLOB di Azure creare un contenitore denominato adftutorial, se non esiste.

  4. Creare una cartella denominata spark.

  5. Creare una sottocartella denominata script nella cartella spark.

  6. Caricare il file WordCount_Spark.py nella sottocartella script.

Caricare il file di input

  1. Creare un file denominato minecraftstory.txt con del testo. Il programma Spark conta il numero di parole in questo testo.
  2. Creare una sottocartella denominata inputfiles nella cartella spark.
  3. Caricare il file minecraftstory.txt nella sottocartella inputfiles.

Creare una data factory

Seguire la procedura descritta nell'articolo Avvio rapido: Creare una data factory usando il portale di Azure per creare una data factory se non ne è già disponibile una da usare.

Creare servizi collegati

In questa sezione vengono creati due servizi collegati:

  • Un servizio collegato Archiviazione di Azure che collega un account di archiviazione di Azure alla data factory. Questo archivio viene usato dal cluster HDInsight su richiesta. Contiene anche lo script Spark da eseguire.
  • Un servizio collegato HDInsight su richiesta. Azure Data Factory crea automaticamente un cluster HDInsight ed esegue il programma Spark. Elimina quindi il cluster HDInsight dopo un tempo di inattività preconfigurato.

Creare un servizio collegato Archiviazione di Azure

  1. Nella home page passare alla scheda Gestisci nel pannello sinistro.

    Screenshot che mostra la scheda Gestisci.

  2. Selezionare Connessioni nella parte inferiore della finestra e quindi + Nuovo.

    Pulsanti per la creazione di una nuova connessione

  3. Nella finestra New Linked Service (Nuovo servizio collegato) selezionare Archivio dati>Archiviazione BLOB di Azure e quindi selezionare Continua.

    Selezione del

  4. Per Nome account di archiviazione selezionare il nome dell'elenco e quindi selezionare Salva.

    Casella per specificare il nome dell'account di archiviazione

Creare un servizio collegato HDInsight su richiesta

  1. Selezionare il pulsante + Nuovo per creare un altro servizio collegato.

  2. Nella finestra New Linked Service (Nuovo servizio collegato) selezionare Calcolo>Azure HDInsight e quindi selezionare Continua.

    Selezione del

  3. Nella finestra New Linked Service (Nuovo servizio collegato) completare questa procedura:

    a. Per Nome immettere AzureHDInsightLinkedService.

    b. Per Tipo verificare che sia selezionata l'opzione On-demand HDInsight (HDInsight su richiesta).

    c. Per Azure Storage Linked Service (Servizio collegato Archiviazione di Azure) selezionare AzureBlobStorage1. Questo servizio collegato è stato creato in precedenza. Se è stato usato un nome diverso, specificare il nome corretto qui.

    d. Per Tipo di cluster selezionare spark.

    e. Per ID entità servizio immettere l'ID dell'entità servizio autorizzata a creare un cluster HDInsight.

    Questa entità servizio deve essere un membro del ruolo Collaboratore della sottoscrizione o del gruppo di risorse in cui viene creato il cluster. Per altre informazioni, vedere Creare un'applicazione Microsoft Entra e un'entità servizio. L'ID entità servizio equivale all'ID applicazione e una chiave entità servizio equivale al valore di un segreto client.

    f. Per Chiave dell'entità servizio immettere la chiave.

    g. Per Gruppo di risorse selezionare lo stesso gruppo di risorse usato durante la creazione della data factory. Il cluster Spark viene creato in questo gruppo di risorse.

    h. Espandere Tipo di sistema operativo.

    i. Immettere un nome in Nome dell'utente del cluster.

    j. Immettere la password del cluster per l'utente.

    k. Selezionare Fine.

    Impostazioni servizio collegato HDInsight

Nota

Azure HDInsight limita il numero totale di core che è possibile usare in ogni area di Azure supportata. Per il servizio collegato HDInsight su richiesta, il cluster HDInsight viene creato nella stessa posizione dell'archivio di Azure usato come risorsa di archiviazione primaria. Assicurarsi che siano disponibili sufficienti quote di core per la creazione del cluster. Per altre informazioni, vedere Configurare i cluster di HDInsight con Hadoop, Spark, Kafka e altro ancora.

Creare una pipeline

  1. Selezionare il pulsante + (segno più) e quindi selezionare Pipeline dal menu.

    Pulsanti per la creazione di una nuova pipeline

  2. Nella casella degli strumenti Attività espandere HDInsight. Trascinare l'attività Spark dalla casella degli strumenti Attività all'area di progettazione della pipeline.

    Trascinamento dell'attività Spark

  3. Nelle proprietà della finestra dell'attività Spark in basso completare questa procedura:

    a. Passare alla scheda HDI Cluster (Cluster HDInsight).

    b. Selezionare il servizio AzureHDInsightLinkedService creato nella procedura precedente.

    Specificare il servizio collegato HDInsight

  4. Passare alla scheda Script/Jar e completare questa procedura:

    a. Per Job Linked Service (Servizio collegato a processo) selezionare AzureBlobStorage1.

    b. Selezionare Sfoglia risorsa di archiviazione.

    Specifica dello script Spark in

    c. Passare alla cartella adftutorial/spark/script, selezionare WordCount_Spark.py e quindi Fine.

  5. Per convalidare la pipeline, selezionare il pulsante Convalida sulla barra degli strumenti. Selezionare il pulsante >> (freccia destra) per chiudere la finestra di convalida.

  6. Selezionare Pubblica tutti. L'interfaccia utente di Data Factory pubblicherà le entità (servizi collegati e pipeline) nel servizio Azure Data Factory.

Attivare un'esecuzione della pipeline

Selezionare Aggiungi trigger nella barra degli strumenti, quindi selezionare Attiva adesso.

Monitorare l'esecuzione della pipeline

  1. Passare alla scheda Monitoraggio . Verificare che venga visualizzata un'esecuzione della pipeline. La creazione di un cluster Spark richiede circa 20 minuti.

  2. Selezionare periodicamente Aggiorna per controllare lo stato dell'esecuzione della pipeline.

    Scheda per il monitoraggio delle esecuzioni della pipeline, con

  3. Per visualizzare le esecuzioni di attività associate all'esecuzione della pipeline, selezionare View Activity Runs (Visualizza le esecuzioni di attività) nella colonna Azioni.

    Stato dell'esecuzione della pipeline

    È possibile tornare alla visualizzazione delle sessioni della pipeline selezionando il collegamento Tutte le sessioni della pipeline nella parte superiore.

Verificare l'output

Verificare che il file di output sia stato creato nella cartella spark/otuputfiles/wordcount del contenitore adftutorial.

Percorso del file di output

Il file dovrebbe contenere ogni parola del file di testo di input e il numero di occorrenze della parola nel file. Ad esempio:

(u'This', 1)
(u'a', 1)
(u'is', 1)
(u'test', 1)
(u'file', 1)

La pipeline in questo esempio trasforma i dati usando un'attività Spark e un servizio collegato HDInsight su richiesta. Contenuto del modulo:

  • Creare una data factory.
  • Creare una pipeline che usa un'attività Spark.
  • Attivare un'esecuzione della pipeline.
  • Monitorare l'esecuzione della pipeline.

Per informazioni su come trasformare i dati tramite l'esecuzione di uno script Hive in un cluster Azure HDInsight che si trova in una rete virtuale, passare all'esercitazione successiva: