Trasformare dati nel cloud usando un'attività Spark in Azure Data FactoryTransform data in the cloud by using a Spark activity in Azure Data Factory

In questa esercitazione si usa il portale di Azure per creare una pipeline di Azure Data Factory.In this tutorial, you use the Azure portal to create an Azure Data Factory pipeline. Questa pipeline trasforma i dati usando un'attività Spark e un servizio collegato su richiesta di Azure HDInsight.This pipeline transforms data by using a Spark activity and an on-demand Azure HDInsight linked service.

In questa esercitazione vengono completati i passaggi seguenti:You perform the following steps in this tutorial:

  • Creare una data factory.Create a data factory.
  • Creare una pipeline che usa un'attività Spark.Create a pipeline that uses a Spark activity.
  • Attivare un'esecuzione della pipeline.Trigger a pipeline run.
  • Monitorare l'esecuzione della pipeline.Monitor the pipeline run.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

PrerequisitiPrerequisites

Nota

Questo articolo è stato aggiornato per usare il nuovo modulo Az di Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. È comunque possibile usare il modulo AzureRM, che continuerà a ricevere correzioni di bug almeno fino a dicembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Per altre informazioni sul nuovo modulo Az e sulla compatibilità di AzureRM, vedere Introduzione del nuovo modulo Az di Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Per istruzioni sull'installazione del modulo Az, vedere Installare Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

  • Account di archiviazione di Azure.Azure storage account. Creare uno script Python e un file di input, quindi caricarli in Archiviazione di Azure.You create a Python script and an input file, and you upload them to Azure Storage. L'output del programma Spark viene archiviato in questo account di archiviazione.The output from the Spark program is stored in this storage account. Il cluster Spark su richiesta usa lo stesso account di archiviazione come risorsa di archiviazione primaria.The on-demand Spark cluster uses the same storage account as its primary storage.

Nota

HDInsight supporta solo gli account di archiviazione per utilizzo generico di livello Standard.HdInsight supports only general-purpose storage accounts with standard tier. Assicurarsi che l'account non sia un account di archiviazione Premium o solo BLOB.Make sure that the account is not a premium or blob only storage account.

Caricare lo script Python nell'account di archiviazione BLOBUpload the Python script to your Blob storage account

  1. Creare un file Python denominato WordCount_Spark.py con il contenuto seguente:Create a Python file named WordCount_Spark.py with the following content:

    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.Replace <storageAccountName> with the name of your Azure storage account. Salvare quindi il file.Then, save the file.

  3. Nell'Archivio BLOB di Azure creare un contenitore denominato adftutorial, se non esiste.In Azure Blob storage, create a container named adftutorial if it does not exist.

  4. Creare una cartella denominata spark.Create a folder named spark.

  5. Creare una sottocartella denominata script nella cartella spark.Create a subfolder named script under the spark folder.

  6. Caricare il file WordCount_Spark.py nella sottocartella script.Upload the WordCount_Spark.py file to the script subfolder.

Caricare il file di inputUpload the input file

  1. Creare un file denominato minecraftstory.txt con del testo.Create a file named minecraftstory.txt with some text. Il programma Spark conta il numero di parole in questo testo.The Spark program counts the number of words in this text.
  2. Creare una sottocartella denominata inputfiles nella cartella spark.Create a subfolder named inputfiles in the spark folder.
  3. Caricare il file minecraftstory.txt nella sottocartella inputfiles.Upload the minecraftstory.txt file to the inputfiles subfolder.

Creare una data factoryCreate a data factory

  1. Avviare il Web browser Microsoft Edge o Google Chrome.Launch Microsoft Edge or Google Chrome web browser. L'interfaccia utente di Data Factory è attualmente supportata solo nei Web browser Microsoft Edge e Google Chrome.Currently, Data Factory UI is supported only in Microsoft Edge and Google Chrome web browsers.

  2. Scegliere Nuovo dal menu a sinistra, selezionare Dati e analisi e quindi selezionare Data Factory.Select New on the left menu, select Data + Analytics, and then select Data Factory.

    Selezione di Data Factory nel riquadro "Nuovo"

  3. Nel riquadro Nuova data factory immettere ADFTutorialDataFactory in Nome.In the New data factory pane, enter ADFTutorialDataFactory under Name.

    Riquadro "Nuova data factory"

    Il nome della data factory di Azure deve essere univoco a livello globale.The name of the Azure data factory must be globally unique. Se viene visualizzato l'errore seguente, cambiare il nome della data factory.If you see the following error, change the name of the data factory. Usare, ad esempio <nomeutente>ADFTutorialDataFactory.(For example, use <yourname>ADFTutorialDataFactory). Per le regole di denominazione per gli elementi di Data Factory, vedere l'articolo Data Factory - Regole di denominazione.For naming rules for Data Factory artifacts, see the Data Factory - naming rules article.

    Errore quando un nome non è disponibile

  4. Per Sottoscrizione selezionare la sottoscrizione di Azure in cui creare la data factory.For Subscription, select your Azure subscription in which you want to create the data factory.

  5. In Gruppo di risorse eseguire una di queste operazioni:For Resource Group, take one of the following steps:

    • Selezionare Usa esistentee scegliere un gruppo di risorse esistente dall'elenco a discesa.Select Use existing, and select an existing resource group from the drop-down list.
    • Selezionare Crea nuovoe immettere un nome per il gruppo di risorse.Select Create new, and enter the name of a resource group.

    Alcuni dei passaggi di questa guida introduttiva presuppongono l'uso del nome ADFTutorialResourceGroup per il gruppo di risorse.Some of the steps in this quickstart assume that you use the name ADFTutorialResourceGroup for the resource group. Per informazioni sui gruppi di risorse, vedere l'articolo relativo all'uso di gruppi di risorse per la gestione delle risorse di Azure.To learn about resource groups, see Using resource groups to manage your Azure resources.

  6. Per Versione selezionare V2.For Version, select V2.

  7. Per Località selezionare la località per la data factory.For Location, select the location for the data factory.

    Per un elenco di aree di Azure in cui Data Factory è attualmente disponibile, selezionare le aree di interesse nella pagina seguente, quindi espandere Analytics per individuare Data Factory: Prodotti disponibili in base all'area.For a list of Azure regions in which Data Factory is currently available, select the regions that interest you on the following page, and then expand Analytics to locate Data Factory: Products available by region. Gli archivi dati (ad esempio, Archiviazione di Azure e il database SQL di Azure) e le risorse di calcolo (ad esempio HDInsight) usati da Data Factory possono trovarsi in altre aree.The data stores (like Azure Storage and Azure SQL Database) and computes (like HDInsight) that Data Factory uses can be in other regions.

  8. Selezionare Create (Crea).Select Create.

  9. Al termine della creazione verrà visualizzata la pagina Data factory.After the creation is complete, you see the Data factory page. Selezionare il riquadro Crea e monitora per avviare l'applicazione dell'interfaccia utente di Data Factory in una scheda separata.Select the Author & Monitor tile to start the Data Factory UI application on a separate tab.

    Home page della data factory, con il riquadro "Crea e monitora"

Creare servizi collegatiCreate linked services

In questa sezione vengono creati due servizi collegati:You author two linked services in this section:

  • Un servizio collegato Archiviazione di Azure che collega un account di archiviazione di Azure alla data factory.An Azure Storage linked service that links an Azure storage account to the data factory. Questo archivio viene usato dal cluster HDInsight su richiesta.This storage is used by the on-demand HDInsight cluster. Contiene anche lo script Spark da eseguire.It also contains the Spark script to be run.
  • Un servizio collegato HDInsight su richiesta.An on-demand HDInsight linked service. Azure Data Factory crea automaticamente un cluster HDInsight ed esegue il programma Spark.Azure Data Factory automatically creates an HDInsight cluster and runs the Spark program. Elimina quindi il cluster HDInsight dopo un tempo di inattività preconfigurato.It then deletes the HDInsight cluster after the cluster is idle for a preconfigured time.

Creare un servizio collegato Archiviazione di AzureCreate an Azure Storage linked service

  1. Nella pagina Attività iniziali passare alla scheda Modifica nel pannello a sinistra.On the Let's get started page, switch to the Edit tab in the left panel.

    Pagina "Attività iniziali"

  2. Selezionare Connessioni nella parte inferiore della finestra e quindi + Nuovo.Select Connections at the bottom of the window, and then select + New.

    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.In the New Linked Service window, select Data Store > Azure Blob Storage, and then select Continue.

    Selezione del riquadro "Archiviazione BLOB di Azure"

  4. Per Nome account di archiviazione selezionare il nome dell'elenco e quindi selezionare Salva.For Storage account name, select the name from the list, and then select Save.

    Casella per specificare il nome dell'account di archiviazione

Creare un servizio collegato HDInsight su richiestaCreate an on-demand HDInsight linked service

  1. Selezionare il pulsante + Nuovo per creare un altro servizio collegato.Select the + New button again to create another linked service.

  2. Nella finestra New Linked Service (Nuovo servizio collegato) selezionare Calcolo > Azure HDInsight e quindi selezionare Continua.In the New Linked Service window, select Compute > Azure HDInsight, and then select Continue.

    Selezione del riquadro "Azure HDInsight"

  3. Nella finestra New Linked Service (Nuovo servizio collegato) completare questa procedura:In the New Linked Service window, complete the following steps:

    a.a. Per Nome immettere AzureHDInsightLinkedService.For Name, enter AzureHDInsightLinkedService.

    b.b. Per Tipo verificare che sia selezionata l'opzione On-demand HDInsight (HDInsight su richiesta).For Type, confirm that On-demand HDInsight is selected.

    c.c. Per Azure Storage Linked Service (Servizio collegato Archiviazione di Azure) selezionare AzureBlobStorage1.For Azure Storage Linked Service, select AzureBlobStorage1. Questo servizio collegato è stato creato in precedenza.You created this linked service earlier. Se è stato usato un nome diverso, specificare il nome corretto qui.If you used a different name, specify the right name here.

    d.d. Per Tipo di cluster selezionare spark.For Cluster type, select spark.

    e.e. Per ID entità servizio immettere l'ID dell'entità servizio autorizzata a creare un cluster HDInsight.For Service principal id, enter the ID of the service principal that has permission to create an HDInsight cluster.

    Questa entità servizio deve essere un membro del ruolo Collaboratore della sottoscrizione o del gruppo di risorse in cui viene creato il cluster.This service principal needs to be a member of the Contributor role of the subscription or the resource group in which the cluster is created. Per altre informazioni, vedere Creare un'applicazione e un'entità servizio di Azure Active Directory.For more information, see Create an Azure Active Directory application and service principal. L'ID entità servizio equivale all'ID applicazione e una chiave entità servizio equivale al valore di un segreto client.The Service principal id is equivalent to the Application ID, and a Service principal key is equivalent to the value for a Client secret.

    f.f. Per Chiave dell'entità servizio immettere la chiave.For Service principal key, enter the key.

    g.g. Per Gruppo di risorse selezionare lo stesso gruppo di risorse usato durante la creazione della data factory.For Resource group, select the same resource group that you used when you created the data factory. Il cluster Spark viene creato in questo gruppo di risorse.The Spark cluster is created in this resource group.

    h.h. Espandere Tipo di sistema operativo.Expand OS type.

    i.i. Immettere un nome in Nome dell'utente del cluster.Enter a name for Cluster user name.

    j.j. Immettere la password del cluster per l'utente.Enter the Cluster password for the user.

    k.k. Selezionare Fine.Select Finish.

    Impostazioni servizio collegato HDInsight

Nota

Azure HDInsight limita il numero totale di core che è possibile usare in ogni area di Azure supportata.Azure HDInsight limits the total number of cores that you can use in each Azure region that it supports. 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.For the on-demand HDInsight linked service, the HDInsight cluster is created in the same Azure Storage location that's used as its primary storage. Assicurarsi che siano disponibili sufficienti quote di core per la creazione del cluster.Ensure that you have enough core quotas for the cluster to be created successfully. Per altre informazioni, vedere Configurare i cluster di HDInsight con Hadoop, Spark, Kafka e altro ancora.For more information, see Set up clusters in HDInsight with Hadoop, Spark, Kafka, and more.

Creare una pipelineCreate a pipeline

  1. Selezionare il pulsante + (segno più) e quindi selezionare Pipeline dal menu.Select the + (plus) button, and then select Pipeline on the menu.

    Pulsanti per la creazione di una nuova pipeline

  2. Nella casella degli strumenti Attività espandere HDInsight.In the Activities toolbox, expand HDInsight. Trascinare l'attività Spark dalla casella degli strumenti Attività all'area di progettazione della pipeline.Drag the Spark activity from the Activities toolbox to the pipeline designer surface.

    Trascinamento dell'attività Spark

  3. Nelle proprietà della finestra dell'attività Spark in basso completare questa procedura:In the properties for the Spark activity window at the bottom, complete the following steps:

    a.a. Passare alla scheda HDI Cluster (Cluster HDInsight).Switch to the HDI Cluster tab.

    b.b. Selezionare il servizio AzureHDInsightLinkedService creato nella procedura precedente.Select AzureHDInsightLinkedService (which you created in the previous procedure).

    Specificare il servizio collegato HDInsight

  4. Passare alla scheda Script/Jar e completare questa procedura:Switch to the Script/Jar tab, and complete the following steps:

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

    b.b. Selezionare Sfoglia risorsa di archiviazione.Select Browse Storage.

    Specificare lo script Spark nella scheda "Script/Jar"

    c.c. Passare alla cartella adftutorial/spark/script, selezionare WordCount_Spark.py e quindi Fine.Browse to the adftutorial/spark/script folder, select WordCount_Spark.py, and then select Finish.

  5. Per convalidare la pipeline, selezionare il pulsante Convalida sulla barra degli strumenti.To validate the pipeline, select the Validate button on the toolbar. Selezionare il pulsante >> (freccia destra) per chiudere la finestra di convalida.Select the >> (right arrow) button to close the validation window.

    Pulsante "Convalida"

  6. Selezionare Pubblica tutti.Select Publish All. L'interfaccia utente di Data Factory pubblicherà le entità (servizi collegati e pipeline) nel servizio Azure Data Factory.The Data Factory UI publishes entities (linked services and pipeline) to the Azure Data Factory service.

    Pulsante "Pubblica tutti"

Attivare un'esecuzione della pipelineTrigger a pipeline run

Selezionare Aggiungi trigger nella barra degli strumenti, quindi selezionare Attiva adesso.Select Add Trigger on the toolbar, and then select Trigger Now.

Pulsanti "Trigger" e "Trigger Now" (Attiva adesso)

Monitorare l'esecuzione della pipelineMonitor the pipeline run

  1. Passare alla scheda Monitoraggio. Verificare che venga visualizzata un'esecuzione della pipeline.Switch to the Monitor tab. Confirm that you see a pipeline run. La creazione di un cluster Spark richiede circa 20 minuti.It takes approximately 20 minutes to create a Spark cluster.

  2. Selezionare periodicamente Aggiorna per controllare lo stato dell'esecuzione della pipeline.Select Refresh periodically to check the status of the pipeline run.

    Scheda per il monitoraggio delle esecuzioni della pipeline, con il pulsante "Aggiorna"

  3. Per visualizzare le esecuzioni di attività associate all'esecuzione della pipeline, selezionare View Activity Runs (Visualizza le esecuzioni di attività) nella colonna Azioni.To see activity runs associated with the pipeline run, select View Activity Runs in the Actions column.

    Stato dell'esecuzione della pipeline

    È possibile tornare alla visualizzazione delle sessioni della pipeline selezionando il collegamento Tutte le sessioni della pipeline nella parte superiore.You can switch back to the pipeline runs view by selecting the All Pipeline Runs link at the top.

    Visualizzazione "Esecuzioni attività"

Verificare l'outputVerify the output

Verificare che il file di output sia stato creato nella cartella spark/otuputfiles/wordcount del contenitore adftutorial.Verify that the output file is created in the spark/otuputfiles/wordcount folder of the adftutorial container.

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.The file should have each word from the input text file and the number of times the word appeared in the file. Ad esempio:For example:

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

Passaggi successiviNext steps

La pipeline in questo esempio trasforma i dati usando un'attività Spark e un servizio collegato HDInsight su richiesta.The pipeline in this sample transforms data by using a Spark activity and an on-demand HDInsight linked service. Si è appreso come:You learned how to:

  • Creare una data factory.Create a data factory.
  • Creare una pipeline che usa un'attività Spark.Create a pipeline that uses a Spark activity.
  • Attivare un'esecuzione della pipeline.Trigger a pipeline run.
  • Monitorare l'esecuzione della pipeline.Monitor the pipeline run.

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:To learn how to transform data by running a Hive script on an Azure HDInsight cluster that's in a virtual network, advance to the next tutorial: