Trasformare i dati eseguendo script U-SQL in Azure Data Lake AnalyticsTransform data by running U-SQL scripts on Azure Data Lake Analytics

Una pipeline in un'istanza di Data factory di Azure elabora i dati nei servizi di archiviazione collegati usando i servizi di calcolo collegati.A pipeline in an Azure data factory processes data in linked storage services by using linked compute services. Contiene una sequenza di attività in cui ogni attività esegue una specifica operazione di elaborazione.It contains a sequence of activities where each activity performs a specific processing operation. 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.This article describes the Data Lake Analytics U-SQL Activity that runs a U-SQL script on an Azure Data Lake Analytics compute linked service.

Creare un account di Azure Data Lake Analytics prima di creare una pipeline con un'attività U-SQL di Data Lake Analytics.Create an Azure Data Lake Analytics account before creating a pipeline with a Data Lake Analytics U-SQL Activity. Per altre informazioni su Azure Data Lake Analytics, vedere Introduzione ad Azure Data Lake con l'SDK .NET.To learn about Azure Data Lake Analytics, see Get started with Azure Data Lake Analytics.

Servizio collegato di Azure Data Lake AnalyticsAzure Data Lake Analytics linked service

Creare un servizio collegato di Azure Data Lake Analytics per collegare un servizio di calcolo di Azure Data Lake Analytics a una Data Factory di Azure.You create an Azure Data Lake Analytics linked service to link an Azure Data Lake Analytics compute service to an Azure data factory. L'attività U-SQL di Data Lake Analytics nella pipeline fa riferimento a questo servizio collegato.The Data Lake Analytics U-SQL activity in the pipeline refers to this linked service.

La tabella seguente fornisce le descrizioni delle proprietà generiche usate nella definizione JSON.The following table provides descriptions for the generic properties used in the JSON definition.

ProprietàProperty DescriptionDescription ObbligatoriaRequired
typetype La proprietà type deve essere impostata su AzureDataLakeAnalytics.The type property should be set to: AzureDataLakeAnalytics. Yes
accountNameaccountName Nome dell'account di Azure Data Lake Analytics.Azure Data Lake Analytics Account Name. Yes
dataLakeAnalyticsUridataLakeAnalyticsUri URI di Azure Data Lake Analytics.Azure Data Lake Analytics URI. NoNo
subscriptionIdsubscriptionId ID sottoscrizione di AzureAzure subscription ID NoNo
resourceGroupNameresourceGroupName Nome del gruppo di risorse di AzureAzure resource group name NoNo

Autenticazione di un'entità servizioService principal authentication

Per connettersi al servizio Azure Data Lake Analytics, il servizio collegato di Azure Data Lake Analytics richiede l'autenticazione di un'entità servizio.The Azure Data Lake Analytics linked service requires a service principal authentication to connect to the Azure Data Lake Analytics service. Per usare l'autenticazione basata su entità servizio, registrare un'entità applicazione in Azure Active Directory (Azure AD) e concedere a questa l'accesso ai servizi Data Lake Analytics e Data Lake Store che usa.To use service principal authentication, register an application entity in Azure Active Directory (Azure AD) and grant it the access to both the Data Lake Analytics and the Data Lake Store it uses. Per la procedura dettaglia, vedere Autenticazione da servizio a servizio.For detailed steps, see Service-to-service authentication. Prendere nota dei valori seguenti che si usano per definire il servizio collegato:Make note of the following values, which you use to define the linked service:

  • ID applicazioneApplication ID
  • Chiave applicazioneApplication key
  • ID tenantTenant ID

Concedere le autorizzazioni dell'entità servizio in Azure Data Lake Analytics usando l'Aggiunta guidata utente.Grant service principal permission to your Azure Data Lake Anatlyics using the Add User Wizard.

Usare l'autenticazione basata su entità servizio specificando le proprietà seguenti:Use service principal authentication by specifying the following properties:

ProprietàProperty DescriptionDescription ObbligatoriaRequired
servicePrincipalIdservicePrincipalId Specificare l'ID client dell'applicazione.Specify the application's client ID. Yes
servicePrincipalKeyservicePrincipalKey Specificare la chiave dell'applicazione.Specify the application's key. Yes
tenanttenant Specificare le informazioni sul tenant (nome di dominio o ID tenant) in cui si trova l'applicazione.Specify the tenant information (domain name or tenant ID) under which your application resides. È possibile recuperarlo passando il cursore del mouse sull'angolo superiore destro del portale di Azure.You can retrieve it by hovering the mouse in the upper-right corner of the Azure portal. Yes

Esempio: autenticazione basata su entità servizioExample: Service principal authentication

{
    "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.To learn more about the linked service, see Compute linked services.

Attività U-SQL di Data Lake AnalyticsData Lake Analytics U-SQL Activity

Il frammento JSON seguente definisce una pipeline con un'attività U-SQL di Data Lake Analytics.The following JSON snippet defines a pipeline with a Data Lake Analytics U-SQL Activity. La definizione dell'attività contiene un riferimento al servizio collegato di Azure Data Lake Analytics creato in precedenza.The activity definition has a reference to the Azure Data Lake Analytics linked service you created earlier. Per eseguire uno script U-SQL di Data Lake Analytics, Data Factory invia lo script specificato a Data Lake Analytics. I valori di input e output che Data Lake Analytics deve recuperare e generare sono definiti all'interno dello script.To execute a Data Lake Analytics U-SQL script, Data Factory submits the script you specified to the Data Lake Analytics, and the required inputs and outputs is defined in the script for Data Lake Analytics to fetch and 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à.The following table describes names and descriptions of properties that are specific to this activity.

ProprietàProperty DescriptionDescription ObbligatoriaRequired
namename Nome dell'attività nella pipelineName of the activity in the pipeline Yes
descriptiondescription Testo che descrive l'attività.Text describing what the activity does. NoNo
typetype Per l'attività U-SQL di Data Lake Analytics, il tipo corrisponde a DataLakeAnalyticsU-SQL.For Data Lake Analytics U-SQL activity, the activity type is DataLakeAnalyticsU-SQL. Yes
linkedServiceNamelinkedServiceName Servizio collegato ad Azure Data Lake Analytics.Linked Service to Azure Data Lake Analytics. Per informazioni su questo servizio collegato, vedere l'articolo Servizi collegati di calcolo.To learn about this linked service, see Compute linked services article. Yes
scriptPathscriptPath Percorso della cartella contenente lo script U-SQL.Path to folder that contains the U-SQL script. Il nome del file distingue tra maiuscole e minuscole.Name of the file is case-sensitive. Yes
scriptLinkedServicescriptLinkedService Servizio collegato che collega alla data factory l'archivio Azure Data Lake Store o Archiviazione di Azure contenente lo scriptLinked service that links the Azure Data Lake Store or Azure Storage that contains the script to the data factory Yes
degreeOfParallelismdegreeOfParallelism Il numero massimo di nodi usati contemporaneamente per eseguire il processo.The maximum number of nodes simultaneously used to run the job. NoNo
prioritypriority Determina quali processi rispetto a tutti gli altri disponibili nella coda devono essere selezionati per essere eseguiti per primi.Determines which jobs out of all that are queued should be selected to run first. Più è basso il numero, maggiore sarà la priorità.The lower the number, the higher the priority. NoNo
Parametriparameters Parametri da passare allo script U-SQL.Parameters to pass into the U-SQL script. NoNo
runtimeVersionruntimeVersion Versione di runtime del motore di U-SQL da usare.Runtime version of the U-SQL engine to use. NoNo
compilationModecompilationMode

Modalità di compilazione di U-SQL.Compilation mode of 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.Must be one of these values: Semantic: Only perform semantic checks and necessary sanity checks, Full: Perform the full compilation, including syntax check, optimization, code generation, etc., SingleBox: Perform the full compilation, with TargetType setting to SingleBox. Se per questa proprietà non si specifica alcun valore, il server determina la modalità di compilazione ottimale.If you don't specify a value for this property, the server determines the optimal compilation mode.

NoNo

Per la definizione dello script, vedere SearchLogProcessing.txt.See SearchLogProcessing.txt for the script definition.

Script U-SQL di esempioSample U-SQL script

@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 sono definiti in @in e @parametri out .In above script example, the input and output to the script is defined in @in and @out parameters. I valori per @in e @parametri out nello script U-SQL vengono passati in modo dinamico da data factory usando la sezione "Parameters".The values for @in and @out parameters in the U-SQL script are passed dynamically by Data Factory using the ‘parameters’ section.

È possibile specificare anche altre proprietà come degreeOfParallelism e priorità nella definizione della pipeline per i processi in esecuzione sul servizio Azure Data Lake Analytics.You can specify other properties such as degreeOfParallelism and priority as well in your pipeline definition for the jobs that run on the Azure Data Lake Analytics service.

Parametri dinamiciDynamic parameters

Nell'esempio di definizione di pipeline i parametri in e out vengono assegnati con valori hardcoded.In the sample pipeline definition, in and out parameters are assigned with hard-coded values.

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

È anche possibile usare parametri dinamici.It is possible to use dynamic parameters instead. ad esempio:For example:

"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.In this case, input files are still picked up from the /datalake/input folder and output files are generated in the /datalake/output folder. I nomi dei file sono dinamici in base all'ora di inizio della finestra passata quando viene attivata la pipeline.The file names are dynamic based on the window start time being passed in when pipeline gets triggered.

Passaggi successiviNext steps

Vedere gli articoli seguenti che illustrano come trasformare i dati in altri modi:See the following articles that explain how to transform data in other ways: