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

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

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Spark-aktiviteten i en datafabrik och Synapse-pipelines kör ett Spark-program på eget eller på begäran HDInsight-kluster. Den här artikeln bygger på artikeln om datatransformeringsaktiviteter , som visar en allmän översikt över datatransformering och de omvandlingsaktiviteter 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 Pipelineaktiviteter 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.

    Shows the UI for a Spark activity.

  4. Välj fliken Skript/Jar för att välja eller skapa en ny jobblänkningstjä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.

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

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:

Property Beskrivning Obligatoriskt
name Namnet på aktiviteten i pipelinen. Ja
description Text som beskriver vad aktiviteten gör. Nej
type För Spark-aktivitet är aktivitetstypen HDInsightSpark. Ja
linkedServiceName Namnet på den länkade HDInsight Spark-tjänsten som Spark-programmet körs på. Mer information om den här länkade tjänsten finns i artikeln Compute linked services (Beräkningslänkade tjänster ). Ja
SparkJobLinkedService Den länkade Azure Storage-tjänsten som innehåller Spark-jobbfilen, beroenden och loggar. Här stöds endast Azure Blob Storage- och ADLS Gen2-länkade tjänster. 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. Nej
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 Nej
Argument En lista över kommandoradsargument till Spark-programmet. Nej
proxyAnvändare Användarkontot som ska personifieras för att köra Spark-programmet Nej
sparkConfig Ange värden för Spark-konfigurationsegenskaper som anges i avsnittet: Spark-konfiguration – Programegenskaper. Nej
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. Nej

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 Obligatoriskt 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å startfilen för Spark-jobbet Ja Fil
./Burkar Alla filer under den här mappen laddas upp och placeras på Java-klassökvägen i klustret Nej Mapp
./pyFiles Alla filer under den här mappen laddas upp och placeras på PYTHONPATH i klustret Nej Mapp
./Filer Alla filer under den här mappen laddas upp och placeras i arbetskatalogen för executor Nej Mapp
./Arkiv Alla filer under den här mappen är okomprimerade Nej Mapp
./Loggar Mappen som innehåller loggar från Spark-klustret. Nej Mapp

Här är ett exempel på en lagring 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
	

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