Trasformare i dati usando l'attività Spark in Azure Data Factory e Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

L'attività Spark in una data factory e nelle pipeline di Synapse esegue un programma Spark nel cluster HDInsight personalizzato o su richiesta . Questo articolo si basa sull'articolo relativo alle attività di trasformazione dei dati che presenta una panoramica generale della trasformazione dei dati e le attività di trasformazione supportate. Quando si usa un servizio collegato Spark su richiesta, il servizio crea automaticamente un cluster Spark per l'elaborazione just-in-time per elaborare i dati e quindi elimina il cluster al termine dell'elaborazione.

Aggiungere un'attività Spark a una pipeline con l'interfaccia utente

Per usare un'attività Spark in una pipeline, completare la procedura seguente:

  1. Cercare Spark nel riquadro Attività della pipeline e trascinare un'attività Spark nell'area di disegno della pipeline.

  2. Selezionare la nuova attività Spark nell'area di disegno se non è già selezionata.

  3. Selezionare la scheda Cluster HDI per selezionare o creare un nuovo servizio collegato a un cluster HDInsight che verrà usato per eseguire l'attività Spark.

    Shows the UI for a Spark activity.

  4. Selezionare la scheda Script/Jar per selezionare o creare un nuovo servizio collegato al processo a un account Archiviazione di Azure che ospiterà lo script. Specificare un percorso del file da eseguire. È anche possibile configurare dettagli avanzati, tra cui un utente proxy, la configurazione di debug e gli argomenti e i parametri di configurazione spark da passare allo script.

    Shows the UI for the Script / Jar tab for a Spark activity.

Proprietà dell'attività Spark

Ecco la definizione JSON di esempio di un'attività Spark:

{
    "name": "Spark Activity",
    "description": "Description",
    "type": "HDInsightSpark",
    "linkedServiceName": {
        "referenceName": "MyHDInsightLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "sparkJobLinkedService": {
            "referenceName": "MyAzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "rootPath": "adfspark",
        "entryFilePath": "test.py",
        "sparkConfig": {
            "ConfigItem1": "Value"
        },
        "getDebugInfo": "Failure",
        "arguments": [
            "SampleHadoopJobArgument1"
        ]
    }
}

La tabella seguente fornisce le descrizioni delle proprietà JSON usate nella definizione JSON:

Proprietà Descrizione Obbligatoria
name Nome dell'attività nella pipeline.
description Testo che descrive l'attività. No
type Per l'attività Spark il tipo corrisponde a HDInsightSpark.
linkedServiceName Nome del servizio collegato di HDInsight Spark in cui viene eseguito il programma Spark. Per informazioni su questo servizio collegato, vedere l'articolo Servizi collegati di calcolo.
SparkJobLinkedService Il servizio collegato di archiviazione di Azure che contiene il file di processo, le dipendenze e i log di Spark. Qui sono supportati solo i servizi collegati Archiviazione BLOB di Azure e ADLS Gen2 . Se non si specifica un valore per questa proprietà, viene usato lo spazio di archiviazione associato al cluster HDInsight. Il valore di questa proprietà può essere solo un servizio collegato di Archiviazione di Azure. No
rootPath Contenitore BLOB di Azure e cartella che contiene il file Spark. Il nome del file distingue tra maiuscole e minuscole. Per informazioni dettagliate sulla struttura della cartella, fare riferimento alla prossima sezione, relativa alla struttura delle cartelle.
entryFilePath Percorso relativo alla cartella radice del pacchetto/codice Spark. Il file di ingresso deve essere un file Python o un file JAR.
className Classe principale Java/Spark dell'applicazione No
argomenti Elenco di argomenti della riga di comando del programma Spark. No
proxyUser Account utente da rappresentare per eseguire il programma Spark No
sparkConfig Specificare i valori delle proprietà di configurazione di Spark elencati nell'argomento Spark Configuration - Application properties (Configurazione di Spark: proprietà dell'applicazione). No
getDebugInfo Specifica quando i file di log di Spark vengono copiati nell'archiviazione di Azure usata dal cluster HDInsight (o) specificata da sparkJobLinkedService. Valori consentiti: None, Always e Failure. Valore predefinito: No. No

Struttura di cartelle

I processi Spark sono più estendibili dei processi Pig/Hive. Per i processi Spark è possibile fornire più dipendenze, ad esempio pacchetti jar (inseriti in Java CLASSPATH), file Python (inseriti in PYTHONPATH) e altri file.

Creare la struttura seguente di cartelle nell'archivio BLOB di Azure a cui fa riferimento il servizio collegato HDInsight. Caricare i file dipendenti nelle sottocartelle appropriate all'interno della cartella radice rappresentata da entryFilePath. Caricare, ad esempio, i file Python nella sottocartella pyFiles e i file jar nella sottocartella jars della cartella radice. In fase di esecuzione, il servizio prevede la struttura di cartelle seguente nell'archiviazione BLOB di Azure:

Path Descrizione Obbligatorio Type
. (radice) Percorso radice del processo Spark nel servizio collegato di archiviazione Cartella
<definito dall'utente > Percorso che punta al file di ingresso del processo Spark File
./jars Tutti i file in questa cartella vengono caricati e inseriti nel percorso di classe Java del cluster No Cartella
./pyFiles Tutti i file in questa cartella vengono caricati e inseriti nel PYTHONPATH del cluster No Cartella
./files Tutti i file in questa cartella vengono caricati e inseriti nella directory di lavoro executor No Cartella
./archives Tutti i file in questa cartella sono decompressi No Cartella
./logs Cartella contenente i log del cluster Spark. No Cartella

Di seguito è riportato un esempio per una risorsa di archiviazione che contiene due file di processo Spark nell'archivio BLOB di Azure a cui fa riferimento il servizio collegato HDInsight.

SparkJob1
	main.jar
	files
		input1.txt
		input2.txt
	jars
		package1.jar
		package2.jar
	logs
	
	archives
	
	pyFiles

SparkJob2
	main.py
	pyFiles
		scrip1.py
		script2.py
	logs
	
	archives
	
	jars
	
	files
	

Passaggi successivi

Vedere gli articoli seguenti, che illustrano altre modalità di trasformazione dei dati: