Verarbeiten von Daten durch Ausführen von U-SQL-Skripts für Azure Data Lake Analytics mit 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!

Eine Pipeline in einem Azure Data Factory- oder Synapse Analytics-Arbeitsbereich verarbeitet Daten in verknüpften Speicherdiensten mithilfe verknüpfter Computedienste. Sie enthält eine Abfolge von Aktivitäten, wobei jede Aktivität einen bestimmten Verarbeitungsvorgang ausführt. In diesem Kapitel wird die U-SQL-Aktivität von Data Lake Analytics beschrieben, die ein U-SQL-Skript auf einem mit Azure Data Lake Analytics verknüpften Computedienst ausführt.

Erstellen Sie ein Azure Data Lake Analytics-Konto, bevor Sie mit einer U-SQL-Aktivität von Data Lake Analytics eine Pipeline erstellen. Weitere Informationen zu Azure Data Lake Analytics finden Sie unter Erste Schritte mit Azure Data Lake Analytics.

Hinzufügen einer U-SQL-Aktivität für Azure Data Lake Analytics einer Pipeline mit Benutzeroberfläche

Führen Sie die folgenden Schritte aus, um eine U-SQL-Aktivität für Azure Data Lake Analytics in einer Pipeline zu verwenden:

  1. Suchen Sie im Bereich mit den Pipelineaktivitäten nach Data Lake, und ziehen Sie eine U-SQL-Aktivität in den Pipelinecanvas.

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

  3. Wählen Sie die Registerkarte ADLA-Konto aus, um einen neuen mit verknüpften Azure Data Lake Analytics Dienst auszuwählen oder zu erstellen, der zum Ausführen der U-SQL-Aktivität verwendet wird.

    Shows the UI for a U-SQL activity.

  4. Wählen Sie die Registerkarte Skript aus, um einen neuen verknüpften Speicherdienst und einen Pfad innerhalb des Speicherorts auszuwählen oder zu erstellen, der das Skript hosten soll.

    Shows the UI for the Script tab for a U-SQL activity.

Mit Azure Data Lake Analytics verknüpfter Dienst

Sie erstellen einen mit Azure Data Lake Analytics verknüpften Dienst, um einen Azure Data Lake Analytics-Computedienst mit einem Azure Data Factory- oder Synapse Analytics-Arbeitsbereich zu verknüpfen. Die Data Lake Analytics-U-SQL-Aktivität in der Pipeline verweist auf diesen verknüpften Dienst.

Die folgende Tabelle enthält Beschreibungen der allgemeinen Eigenschaften, die in der JSON-Definition verwendet werden.

Eigenschaft Beschreibung Erforderlich
type Legen Sie die type-Eigenschaft auf AzureDataLakeAnalytics fest. Ja
accountName Name des Azure Data Lake Analytics-Kontos. Ja
dataLakeAnalyticsUri URI des Azure Data Lake Analytics-Kontos. Nein
subscriptionId Azure-Abonnement-ID Nein
resourceGroupName Azure-Ressourcengruppenname Nein

Dienstprinzipalauthentifizierung

Der mit Azure Data Lake Analytics verknüpfte Dienst erfordert für die Verbindung mit dem Azure Data Lake Analytics-Dienst eine Dienstprinzipalauthentifizierung. Um die Dienstprinzipalauthentifizierung zu verwenden, registrieren Sie eine Anwendungsentität in der Microsoft Entra-ID, und gewähren Sie ihm den Zugriff auf die data Lake Analytics und den von ihm verwendeten Datenspeicher. Eine ausführliche Anleitung finden Sie unter Dienst-zu-Dienst-Authentifizierung. Notieren Sie sich die folgenden Werte, die Sie zum Definieren des verknüpften Diensts verwenden:

  • Anwendungs-ID
  • Anwendungsschlüssel
  • Mandanten-ID

Verwenden Sie den Assistenten für das Hinzufügen von Benutzern, um Azure Data Lake Analytics die Dienstprinzipalberechtigung zu erteilen.

Verwenden Sie die Dienstprinzipalauthentifizierung, indem Sie die folgenden Eigenschaften angeben:

Eigenschaft Beschreibung Erforderlich
servicePrincipalId Geben Sie die Client-ID der Anwendung an. Ja
servicePrincipalKey Geben Sie den Schlüssel der Anwendung an. Ja
tenant Geben Sie die Mandanteninformationen (Domänenname oder Mandanten-ID) für Ihre Anwendung an. Diese können Sie abrufen, indem Sie im Azure-Portal mit der Maus auf den Bereich oben rechts zeigen. Ja

Beispiel: Dienstprinzipalauthentifizierung

{
    "name": "AzureDataLakeAnalyticsLinkedService",
    "properties": {
        "type": "AzureDataLakeAnalytics",
        "typeProperties": {
            "accountName": "<account name>",
            "dataLakeAnalyticsUri": "<azure data lake analytics URI>",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "value": "<service principal key>",
                "type": "SecureString"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<optional, subscription id of ADLA>",
            "resourceGroupName": "<optional, resource group name of ADLA>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }       
    }
}

Weitere Informationen zu diesem verknüpften Dienst finden Sie im Artikel Von Azure Data Factory unterstützten Compute-Umgebungen.

U-SQL-Aktivität für Data Lake Analytics

Der folgende JSON-Ausschnitt definiert eine Pipeline mit einer U-SQL-Aktivität für Data Lake Analytics. Die Aktivitätsdefinition verwendet einen Verweis auf den zuvor erstellten mit Azure Data Lake Analytics verknüpften Dienst. Um ein U-SQL-Skript für Data Lake Analytics auszuführen, übermittelt der Dienst das von Ihnen angegebene Skript an Data Lake Analytics. Die erforderlichen Ein- und Ausgaben werden im Skript definiert, damit Data Lake Analytics sie abruft und ausgibt.

{
    "name": "ADLA U-SQL Activity",
    "description": "description",
    "type": "DataLakeAnalyticsU-SQL",
    "linkedServiceName": {
        "referenceName": "<linked service name of Azure Data Lake Analytics>",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "scriptLinkedService": {
            "referenceName": "<linked service name of Azure Data Lake Store or Azure Storage which contains the U-SQL script>",
            "type": "LinkedServiceReference"
        },
        "scriptPath": "scripts\\kona\\SearchLogProcessing.txt",
        "degreeOfParallelism": 3,
        "priority": 100,
        "parameters": {
            "in": "/datalake/input/SearchLog.tsv",
            "out": "/datalake/output/Result.tsv"
        }
    }   
}

Die folgende Tabelle beschreibt die Namen und Eigenschaften, die für diese Aktivität spezifisch sind.

Eigenschaft Beschreibung Erforderlich
name 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 Data Lake Analytics-U-SQL-Aktivität ist der Aktivitätstyp DataLakeAnalyticsU-SQL. Ja
linkedServiceName Mit Azure Data Lake Analytics verknüpfter Dienst. Weitere Informationen zu diesem verknüpften Dienst finden Sie im Artikel Von Azure Data Factory unterstützten Compute-Umgebungen. Ja
scriptPath Der Pfad zum Ordner, der das U-SQL-Skript enthält. Beim Dateinamen wird Groß-/Kleinschreibung unterschieden. Ja
scriptLinkedService Verknüpfter Dienst, der eine Verknüpfung mit der Azure Data Lake Store- oder Azure Storage-Instanz herstellt, die das Skript enthält. Ja
degreeOfParallelism Die maximale Anzahl von Knoten, die zum Ausführen des Auftrags gleichzeitig verwendet werden. Nein
priority Bestimmt, welche der in der Warteschlange befindlichen Aufträge als erstes ausgeführt werden. Je niedriger die Zahl, desto höher die Priorität. Nein
parameters Parameter, die an das U-SQL-Skript übergeben werden sollen. Nein
runtimeVersion Die Runtimeversion der zu verwendenden U-SQL-Engine. Nein
compilationMode

Der Kompilierungsmodus von U-SQL. Muss einen der folgenden Werte aufweisen: Semantic: Es werden nur Semantiküberprüfungen und erforderliche Integritätsprüfungen durchgeführt. Full: Es wird die vollständige Kompilierung ausgeführt, einschließlich Syntaxprüfung, Optimierung, Codegenerierung usw. SingleBox: Es wird die vollständige Kompilierung durchgeführt, wobei die TargetType-Einstellung auf „SingleBox“ festgelegt ist. Wenn Sie für diese Eigenschaft keinen Wert angeben, bestimmt der Server den optimalen Kompilierungsmodus.

Nein

Die Skriptdefinition finden Sie unter SearchLogProcessing.txt.

U-SQL-Beispielskript

@searchlog =
    EXTRACT UserId          int,
            Start           DateTime,
            Region          string,
            Query           string,
            Duration        int,
            Urls            string,
            ClickedUrls     string
    FROM @in
    USING Extractors.Tsv(nullEscape:"#NULL#");

@rs1 =
    SELECT Start, Region, Duration
    FROM @searchlog
WHERE Region == "en-gb";

@rs1 =
    SELECT Start, Region, Duration
    FROM @rs1
    WHERE Start <= DateTime.Parse("2012/02/19");

OUTPUT @rs1   
    TO @out
      USING Outputters.Tsv(quoting:false, dateTimeFormat:null);

Im obigem Skriptbeispiel wird die Ein- und Ausgabe des Skripts in den Parametern @in und @out definiert. Die Werte für die Parameter @in und @out im U-SQL-Skript werden vom Dienst dynamisch mithilfe des Abschnitts „parameters“ übergeben.

Sie können in Ihrer Pipelinedefinition auch andere Eigenschaften wie etwa degreeOfParallelism oder „priority“ für die Aufträge angeben, die im Azure Data Lake Analytics-Dienst ausgeführt werden.

Dynamische Parameter

In der beispielhaften Pipelinedefinition werden die Eingabe- und Ausgabeparameter mit hartcodierten Werten zugewiesen.

"parameters": {
    "in": "/datalake/input/SearchLog.tsv",
    "out": "/datalake/output/Result.tsv"
}

Anstelle von hartcodierten Werten können dynamische Parameter verwendet werden. Beispiel:

"parameters": {
    "in": "/datalake/input/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/data.tsv",
    "out": "/datalake/output/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/result.tsv"
}

In diesem Fall werden die Eingabedateien weiterhin aus dem Ordner „/datalake/input“ abgerufen und die Ausgabedateien im Ordner „datalake/output“ generiert. Die Dateinamen sind dynamisch und basieren auf dem Start des Zeitfensters, der übergeben wird, wenn die Pipeline ausgelöst wird.

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