Elaborare i dati eseguendo script U-SQL in Azure Data Lake Analytics con Azure Data Factory e Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Una pipeline in un'area di lavoro di Azure Data Factory o Synapse Analytics elabora i dati nei servizi di archiviazione collegati usando servizi di calcolo collegati. Contiene una sequenza di attività in cui ogni attività esegue una specifica operazione di elaborazione. Questo articolo descrive l'attività U-SQL di Data Lake Analytics che esegue uno script U-SQL in un servizio di calcolo collegato di Azure Data Lake Analytics.

Creare un account di Azure Data Lake Analytics prima di creare una pipeline con un'attività U-SQL di Data Lake Analytics. Per altre informazioni su Azure Data Lake Analytics, vedere Introduzione ad Azure Data Lake con l'SDK .NET.

Aggiungere un'attività U-SQL per Azure Data Lake Analytics a una pipeline con l'interfaccia utente

Per usare un'attività U-SQL per Azure Data Lake Analytics in una pipeline, seguire questa procedura:

  1. Cercare Data Lake nel riquadro Attività pipeline e trascinare un'attività U-SQL nell'area di disegno della pipeline.

  2. Selezionare la nuova attività U-SQL nell'area di disegno, se non è già selezionata.

  3. Selezionare la scheda Account ADLA per selezionare o creare un nuovo servizio collegato di Azure Data Lake Analytics che verrà usato per eseguire l'attività U-SQL.

    Shows the UI for a U-SQL activity.

  4. Selezionare la scheda Script per selezionare o creare un nuovo servizio collegato di archiviazione e un percorso all'interno del percorso di archiviazione, che ospiterà lo script.

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

Servizio collegato di Azure Data Lake Analytics

Si crea un servizio collegato di Azure Data Lake Analytics per collegare un servizio di calcolo di Azure Data Lake Analytics a un'area di lavoro di Azure Data Factory o Synapse Analytics. L'attività U-SQL di Data Lake Analytics nella pipeline fa riferimento a questo servizio collegato.

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

Proprietà Descrizione Richiesto
type La proprietà type deve essere impostata su AzureDataLakeAnalytics.
accountName Nome dell'account di Azure Data Lake Analytics.
dataLakeAnalyticsUri URI di Azure Data Lake Analytics. No
subscriptionId ID sottoscrizione di Azure No
resourceGroupName Nome del gruppo di risorse di Azure No

Autenticazione dell'entità servizio

Per connettersi al servizio Azure Data Lake Analytics, il servizio collegato di Azure Data Lake Analytics richiede l'autenticazione di un'entità servizio. Per usare l'autenticazione dell'entità servizio, registrare un'entità applicazione in Microsoft Entra ID e concedergli l'accesso sia a Data Lake Analytics che a Data Lake Store usato. Per la procedura dettaglia, vedere Autenticazione da servizio a servizio. Prendere nota dei valori seguenti che si usano per definire il servizio collegato:

  • ID applicazione
  • Chiave applicazione
  • ID tenant

Concedere l'autorizzazione dell'entità servizio ad Azure Data Lake Analytics usando l'Aggiunta guidata utente.

Usare l'autenticazione basata su entità servizio specificando le proprietà seguenti:

Proprietà Descrizione Richiesto
servicePrincipalId Specificare l'ID client dell'applicazione.
servicePrincipalKey Specificare la chiave dell'applicazione.
tenant Specificare le informazioni sul tenant (nome di dominio o ID tenant) in cui si trova l'applicazione. È possibile recuperarlo passando il cursore del mouse sull'angolo superiore destro del portale di Azure.

Esempio: autenticazione basata su entità servizio

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

Per altre informazioni sul servizio collegato, vedere Servizi collegati di calcolo.

Attività U-SQL di Data Lake Analytics

Il frammento JSON seguente definisce una pipeline con un'attività U-SQL di Data Lake Analytics. La definizione dell'attività contiene un riferimento al servizio collegato di Azure Data Lake Analytics creato in precedenza. Per eseguire uno script U-SQL di Data Lake Analytics, il servizio invia lo script specificato a Data Lake Analytics e gli input e gli output necessari vengono definiti nello script per Data Lake Analytics per recuperare e restituire l'output.

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

Nella tabella seguente vengono descritti i nomi e le descrizioni delle proprietà specifiche per questa attività.

Proprietà Descrizione Richiesto
name Nome dell'attività nella pipeline
description Testo che descrive l'attività. No
Tipo Per l'attività U-SQL di Data Lake Analytics, il tipo corrisponde a DataLakeAnalyticsU-SQL.
linkedServiceName Servizio collegato ad Azure Data Lake Analytics. Per informazioni su questo servizio collegato, vedere l'articolo Servizi collegati di calcolo.
scriptPath Percorso della cartella contenente lo script U-SQL. Il nome del file distingue tra maiuscole e minuscole.
scriptLinkedService Servizio collegato che collega Azure Data Lake Store o Archiviazione di Azure che contiene lo script
degreeOfParallelism Il numero massimo di nodi usati contemporaneamente per eseguire il processo. No
priority Determina quali processi rispetto a tutti gli altri disponibili nella coda devono essere selezionati per essere eseguiti per primi. Più è basso il numero, maggiore sarà la priorità. No
parameters Parametri da passare allo script U-SQL. No
runtimeVersion Versione di runtime del motore di U-SQL da usare. No
compilationMode

Modalità di compilazione di U-SQL. Deve corrispondere a uno dei valori seguenti: Semantic: consente di eseguire solo controlli semantici e i controlli di integrità necessari. Full: consente di eseguire una compilazione completa, inclusi il controllo della sintassi, l'ottimizzazione, la generazione di codice e così via. SingleBox: consente di eseguire una compilazione completa usando SingleBox come impostazione di TargetType. Se per questa proprietà non si specifica alcun valore, il server determina la modalità di compilazione ottimale.

No

Per la definizione dello script, vedere SearchLogProcessing.txt.

Script U-SQL di esempio

@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);

Nell'esempio di script precedente, l'input e l'output dello script vengono definiti nei parametri @in e @out . I valori per i parametri @in e @out nello script U-SQL vengono passati dinamicamente dal servizio usando la sezione 'parameters'.

È possibile specificare anche altre proprietà come degreeOfParallelism e priorità nella definizione della pipeline per i processi in esecuzione sul servizio Azure Data Lake Analytics.

Parametri dinamici

Nell'esempio di definizione di pipeline i parametri in e out vengono assegnati con valori hardcoded.

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

È anche possibile usare parametri dinamici. Ad esempio:

"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 questo caso, i file di input vengono prelevati dalla cartella /datalake/input e i file di output vengono generati nella cartella /datalake/output. I nomi dei file sono dinamici in base all'ora di inizio della finestra passata quando viene attivata la pipeline.

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