Umwandlung von Daten mithilfe von Spark-Aktivitäten in Azure Data Factory und Synapse Analytics

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

Die Spark-Aktivität in einer Data Factory und Synapse Pipelines führt ein Spark-Programm auf ihrem eigenen oder On-Demand-HDInsight-Cluster aus. Dieser Artikel baut auf dem Artikel zu Datentransformationsaktivitäten auf, der eine allgemeine Übersicht über die Datentransformation und die unterstützten Transformationsaktivitäten bietet. Wenn Sie einen mit Spark verknüpften On-Demand-Dienst verwenden, erstellt der Dienst automatisch einen Spark-Cluster für Sie, um die Daten just-in-time zu verarbeiten, und löscht den Cluster, sobald die Verarbeitung abgeschlossen ist.

Hinzufügen einer Spark-Aktivität zu einer Pipeline mit Benutzeroberfläche

Führen Sie die folgenden Schritte aus, um eine Spark-Aktivität in einer Pipeline zu verwenden:

  1. Suchen Sie im Bereich mit den Pipelineaktivitäten nach Spark, und ziehen Sie eine Spark-Aktivität in den Pipelinebereich.

  2. Wählen Sie die neue Spark-Aktivität im Canvas aus, wenn sie noch nicht ausgewählt ist.

  3. Wählen Sie die Registerkarte HDI-Cluster aus, um einen neuen verknüpften Dienst für einen HDInsight-Cluster auszuwählen oder zu erstellen, der zum Ausführen der Spark-Aktivität verwendet wird.

    Shows the UI for a Spark activity.

  4. Wählen Sie die Registerkarte Skript/JAR aus, um einen neuen mit einem Auftrag verknüpften Dienst für ein Azure Storage Konto auszuwählen oder zu erstellen, das Ihr Skript hosten soll. Geben Sie einen Pfad zu der Datei an, die dort ausgeführt werden soll. Sie können auch erweiterte Details konfigurieren, z. B. einen Proxybenutzer, eine Debugkonfiguration sowie Argumente und Spark-Konfigurationsparameter, die an das Skript übergeben werden sollen.

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

Eigenschaften von Spark-Aktivitäten

Dies ist die JSON-Beispieldefinition einer Spark-Aktivität:

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

Die folgende Tabelle beschreibt die JSON-Eigenschaften, die in der JSON-Definition verwendet werden:

Eigenschaft Beschreibung Erforderlich
name Der Name der Aktivität in der Pipeline. Ja
description Ein Text, der beschreibt, was mit der Aktivität ausgeführt wird. Nein
type Für die Spark-Aktivität ist der Aktivitätstyp „HDInsightSpark“. Ja
linkedServiceName Name des mit HDInsight Spark verknüpften Diensts, in dem das Spark-Programm ausgeführt wird. Weitere Informationen zu diesem verknüpften Dienst finden Sie im Artikel Von Azure Data Factory unterstützten Compute-Umgebungen. Ja
SparkJobLinkedService Der verknüpfte Azure Storage-Dienst, der die Datei sowie die Abhängigkeiten und Protokolle für den Spark-Auftrag enthält. Hier werden nur die verknüpften Azure Blob Storage und ADLS Gen2 -Dienste unterstützt. Wenn Sie für diese Eigenschaft keinen Wert angeben, wird der Speicher verwendet, der dem HDInsight-Cluster zugeordnet ist. Der Wert dieser Eigenschaft darf nur ein mit Azure Storage verknüpfter Dienst sein. Nein
rootPath Der Azure-Blobcontainer und -ordner mit der Spark-Datei. Beim Dateinamen muss die Groß-/Kleinschreibung beachtet werden. Details zur Struktur dieses Ordners finden Sie im Abschnitt „Ordnerstruktur“ (nächster Abschnitt). Ja
entryFilePath Der relative Pfad zum Stammordner des Spark-Codes bzw. -Pakets. Die Eingabedatei muss eine Python-Datei oder eine JAR-Datei sein. Ja
className Die Java-/Spark-Hauptklasse der Anwendung. Nein
Argumente Eine Liste der Befehlszeilenargumente für das Spark-Programm. Nein
proxyUser Das Benutzerkonto, dessen Identität angenommen werden soll, um das Spark-Programm auszuführen. Nein
sparkConfig Geben Sie Werte für die Spark-Konfigurationseigenschaften an, die im Thema Spark-Konfiguration – Anwendungseigenschaften aufgeführt sind. Nein
getDebugInfo Gibt an, ob die Spark-Protokolldateien in den Azure-Speicher kopiert werden, der vom HDInsight-Cluster verwendet (oder) von sparkJobLinkedService angegeben wird. Zulässige Werte: „None“, „Always“ oder „Failure“. Standardwert: Keine. Nein

Ordnerstruktur

Spark-Aufträge lassen sich besser erweitern als Pig- oder Hive-Aufträge. Bei Spark-Aufträgen können Sie mehrere Abhängigkeiten wie z. B. JAR-Pakete (im Java CLASSPATH platziert), Python-Dateien (im PYTHONPATH platziert) sowie beliebige andere Dateien bereitstellen.

Erstellen Sie folgende Ordnerstruktur in Azure Blob Storage, auf den der verknüpfte HDInsight-Dienst verweist. Laden Sie dann abhängige Dateien in die entsprechenden Unterordner in dem Stammordner hoch, der von entryFilePath repräsentiert wird. Python-Dateien werden beispielsweise in den Unterordner „pyFiles“ und JAR-Dateien in den Unterordner „jars“ des Stammordners hochgeladen. Zur Laufzeit erwartet der Dienst die folgende Ordnerstruktur im Azure Blob-Speicher:

Pfad BESCHREIBUNG Erforderlich type
. (Stamm) Der Stammpfad des Spark-Auftrags im verknüpften Speicherdienst. Ja Ordner
<benutzerdefiniert> Der Pfad, der auf die Eingabedatei des Spark-Auftrags zeigt. Ja Datei
./jars Alle Dateien in diesem Ordner werden hochgeladen und im Java-CLASSPATH des Clusters platziert Nein Ordner
./pyFiles Alle Dateien in diesem Ordner werden hochgeladen und im PYTHONPATH des Clusters platziert. Nein Ordner
./files Alle Dateien in diesem Ordner werden hochgeladen und im Executor-Arbeitsverzeichnis platziert. Nein Ordner
./archives Alle Dateien in diesem Ordner sind nicht komprimiert. Nein Ordner
./logs Der Ordner, der die Protokolle aus dem Spark-Cluster enthält. Nein Ordner

Hier finden Sie ein Beispiel für einen Speicher mit zwei Spark-Auftragsdateien in der Azure Blob Storage-Instanz, auf die der verknüpfte HDInsight-Dienst verweist.

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
	

In den folgenden Artikeln erfahren Sie, wie Daten auf andere Weisen transformiert werden: