Transformera data med Spark-aktivitet i Azure Data Factory och Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Spark-aktiviteten i en datafabrik och Synapse-pipelines kör ett Spark-program på ditt eget ELLER HDInsight-kluster på begäran. Den här artikeln bygger på artikeln om datatransformeringsaktiviteter , som ger en allmän översikt över datatransformering och de transformeringsaktiviteter som stöds. När du använder en länkad Spark-tjänst på begäran skapar tjänsten automatiskt ett Spark-kluster som du just-in-time kan bearbeta data och sedan tar bort klustret när bearbetningen är klar.

Lägga till en Spark-aktivitet i en pipeline med användargränssnittet

Utför följande steg för att använda en Spark-aktivitet till en pipeline:

  1. Sök efter Spark i fönstret Pipeline-aktiviteter och dra en Spark-aktivitet till pipelinearbetsytan.

  2. Välj den nya Spark-aktiviteten på arbetsytan om den inte redan är markerad.

  3. Välj fliken HDI-kluster för att välja eller skapa en ny länkad tjänst till ett HDInsight-kluster som ska användas för att köra Spark-aktiviteten.

    Visar användargränssnittet för en Spark-aktivitet.

  4. Välj fliken Skript/Jar för att välja eller skapa en ny jobblänktjänst till ett Azure Storage-konto som ska vara värd för skriptet. Ange en sökväg till filen som ska köras där. Du kan också konfigurera avancerad information, inklusive en proxyanvändare, felsökningskonfiguration och argument och Spark-konfigurationsparametrar som ska skickas till skriptet.

    Visar användargränssnittet för fliken Skript/Jar för en Spark-aktivitet.

Egenskaper för Spark-aktivitet

Här är JSON-exempeldefinitionen för en Spark-aktivitet:

{
    "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"
        ]
    }
}

I följande tabell beskrivs de JSON-egenskaper som används i JSON-definitionen:

Egenskap Beskrivning Obligatorisk
name Namnet på aktiviteten i pipelinen. Ja
beskrivning Text som beskriver vad aktiviteten gör. No
typ För Spark-aktivitet är aktivitetstypen HDInsightSpark. Ja
linkedServiceName Namnet på den länkade HDInsight Spark-tjänst som Spark-programmet körs på. Mer information om den här länkade tjänsten finns i artikeln Om länkade compute-tjänster . Ja
SparkJobLinkedService Den länkade Azure Storage-tjänsten som innehåller Spark-jobbfilen, beroenden och loggar. Endast Azure Blob Storage- och ADLS Gen2-länkade tjänster stöds här. Om du inte anger något värde för den här egenskapen används lagringen som är associerad med HDInsight-klustret. Värdet för den här egenskapen kan bara vara en länkad Azure Storage-tjänst. Inga
rootPath Azure Blob-containern och mappen som innehåller Spark-filen. Filnamnet är skiftlägeskänsligt. Mer information om strukturen för den här mappen finns i avsnittet mappstruktur (nästa avsnitt). Ja
entryFilePath Relativ sökväg till rotmappen för Spark-koden/-paketet. Postfilen måste vara antingen en Python-fil eller en .jar-fil. Ja
Classname Programmets Java/Spark-huvudklass Inga
Argument En lista över kommandoradsargument till Spark-programmet. Inga
proxyAnvändare Användarkontot som ska personifieras för att köra Spark-programmet Inga
sparkConfig Ange värden för Spark-konfigurationsegenskaper som anges i avsnittet: Spark-konfiguration – Programegenskaper. Inga
getDebugInfo Anger när Spark-loggfilerna kopieras till Azure Storage som används av HDInsight-klustret (eller) som anges av sparkJobLinkedService. Tillåtna värden: Ingen, Alltid eller Fel. Standardvärde: Ingen. Inga

Mappstrukturen

Spark-jobb är mer utökningsbara än Pig/Hive-jobb. För Spark-jobb kan du ange flera beroenden, till exempel jar-paket (placerade i Java CLASSPATH), Python-filer (placerade på PYTHONPATH) och andra filer.

Skapa följande mappstruktur i Azure Blob Storage som refereras av den länkade HDInsight-tjänsten. Ladda sedan upp beroende filer till lämpliga undermappar i rotmappen som representeras av entryFilePath. Du kan till exempel ladda upp Python-filer till undermappen pyFiles och jar-filer till jars-undermappen för rotmappen. Vid körning förväntar sig tjänsten följande mappstruktur i Azure Blob Storage:

Sökväg Beskrivning Krävs Typ
. (rot) Rotsökvägen för Spark-jobbet i den länkade lagringstjänsten Ja Mapp
<användardefinierad > Sökvägen som pekar på Spark-jobbets postfil Ja Fil
./Burkar Alla filer under den här mappen laddas upp och placeras på Java-klassökvägen i klustret Inga Mapp
./pyFiles Alla filer under den här mappen laddas upp och placeras i klustrets PYTHONPATH Inga Mapp
./Filer Alla filer under den här mappen laddas upp och placeras i executor-arbetskatalogen Inga Mapp
./Arkiv Alla filer under den här mappen är okomprimerade Inga Mapp
./Loggar Mappen som innehåller loggar från Spark-klustret. Inga Mapp

Här är ett exempel på ett lagringsutrymme som innehåller två Spark-jobbfiler i Azure Blob Storage som refereras av den länkade HDInsight-tjänsten.

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
	

Nästa steg

Se följande artiklar som förklarar hur du transformerar data på andra sätt: