Procesamiento de datos mediante la ejecución de scripts U-SQL en Azure Data Lake Analytics con Azure Data Factory y Synapse Analytics

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.

Una canalización en un área de trabajo de Azure Data Factory o Synapse Analytics procesa los datos de los servicios de almacenamiento vinculados mediante el uso de servicios de proceso vinculados. Contiene una secuencia de actividades donde cada actividad realiza una operación de procesamiento específica. En este artículo se describe la actividad U-SQL de Data Lake Analytics que ejecuta un script de U-SQL en un servicio vinculado de proceso de Azure Data Lake Analytics.

Debe crear una cuenta de Azure Data Lake Analytics antes de crear una canalización con una actividad de U-SQL de este servicio. Para obtener más información sobre Azure Data Lake Analytics, consulte el artículo de introducción a Azure Data Lake Analytics.

Adición de una actividad de U-SQL para Azure Data Lake Analytics a una canalización con la interfaz de usuario

Para usar una actividad de U-SQL para Azure Data Lake Analytics en una canalización, complete los pasos siguientes:

  1. Busque Data Lake en el panel Actividades de canalización y arrastre una actividad de U-SQL al lienzo de canalización.

  2. Seleccione la nueva actividad de U-SQL en el lienzo si aún no está seleccionada.

  3. Seleccione la pestaña Crear de ADLA para elegir o crear un nuevo servicio vinculado de Azure Data Lake Analytics que se usará para ejecutar la actividad de U-SQL.

    Shows the UI for a U-SQL activity.

  4. Seleccione la pestaña Script para seleccionar o crear un servicio vinculado de almacenamiento y una ruta de acceso dentro de la ubicación de almacenamiento, que hospedará el script.

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

Servicio vinculado de Azure Data Lake Analytics

Cree un servicio vinculado de Azure Data Lake Analytics para vincular un servicio de proceso de Azure Data Lake Analytics a un área de trabajo de Azure Data Factory o Synapse Analytics. La actividad de U-SQL de Data Lake Analytics de la canalización hace referencia a este servicio vinculado.

En la siguiente tabla se ofrecen descripciones de las propiedades genéricas que se usan en la definición de JSON.

Propiedad Descripción Obligatorio
type La propiedad type se debe establecer en: AzureDataLakeAnalytics.
accountName Nombre de la cuenta de Análisis de Azure Data Lake
dataLakeAnalyticsUri Identificador URI de Análisis de Azure Data Lake. No
subscriptionId Identificador de suscripción de Azure No
resourceGroupName Nombre del grupo de recursos de Azure No

Autenticación de entidad de servicio

El servicio vinculado de Azure Data Lake Analytics requiere una autenticación de entidad de servicio para conectarse al servicio Azure Data Lake Analytics. Para usar la autenticación de entidad de servicio, registre una entidad de aplicación en el identificador de Microsoft Entra y concédale el acceso tanto a Data Lake Analytics como a Data Lake Store que usa. Consulte Autenticación entre servicios para ver los pasos detallados. Anote los siguientes valores; los usará para definir el servicio vinculado:

  • Identificador de aplicación
  • Clave de la aplicación
  • Id. de inquilino

Conceda permiso de entidad de servicio a su instancia de Azure Data Lake Analytics mediante el Asistente para agregar usuarios.

Para usar la autenticación de la entidad de servicio, especifique las siguientes propiedades:

Propiedad Descripción Obligatorio
servicePrincipalId Especifique el id. de cliente de la aplicación.
servicePrincipalKey Especifique la clave de la aplicación.
tenant Especifique la información del inquilino (nombre de dominio o identificador de inquilino) en el que reside la aplicación. Para recuperarlo, mantenga el puntero del mouse en la esquina superior derecha de Azure Portal.

Ejemplo: Autenticación de entidad de servicio

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

Para más información sobre el servicio vinculado, consulte Servicios vinculados de Compute.

Actividad U-SQL de Análisis de Data Lake

El siguiente fragmento JSON define una canalización con una actividad U-SQL de Análisis de Data Lake. La definición de actividad tiene una referencia al servicio vinculado de Análisis de Azure Data Lake que creó anteriormente. Para ejecutar un script U-SQL de Data Lake Analytics, el servicio envía el script especificado a Data Lake Analytics y las entradas y salidas necesarias se definen en el script para que Data Lake Analytics realice la captura y resultado.

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

En la tabla siguiente se describen los nombres y descripciones de las propiedades que son específicas de esta actividad.

Propiedad Descripción Obligatorio
name Nombre de la actividad en la canalización
description Texto que describe para qué se usa la actividad. No
type Para la actividad de U-SQL de Data Lake Analytics, el tipo de actividad es DataLakeAnalyticsU-SQL.
linkedServiceName Servicio vinculado a Azure Data Lake Analytics. Para obtener más información sobre este servicio vinculado, vea el artículo Compute linked services (Servicios vinculados de procesos).
scriptPath Ruta de acceso a la carpeta que contiene el script U-SQL. El nombre del archivo distingue mayúsculas de minúsculas.
scriptLinkedService Servicio vinculado que vincula la instancia de Azure Data Lake Store o Azure Storage que contiene el script
degreeOfParallelism Número máximo de nodos que se usará de forma simultánea para ejecutar el trabajo. No
priority Determina qué trabajos de todos los están en cola deben seleccionarse para ejecutarse primero. Cuanto menor sea el número, mayor será la prioridad. No
parámetros Parámetros para pasar el script de U-SQL. No
runtimeVersion Versión en tiempo de ejecución del motor de U-SQL que se usará. No
compilationMode

Modo de compilación de U-SQL. Debe ser uno de los valores siguientes: Semantic: solo realiza comprobaciones semánticas y comprobaciones de integridad necesarias. Full: realiza la compilación completa (comprobación de sintaxis, optimización, generación de código, etc.), SingleBox: realiza la compilación completa, con la opción TargetType establecida en SingleBox. Si no se especifica ningún valor para esta propiedad, el servidor determina el modo de compilación óptimo.

No

Para ver la definición del script, consulte SearchLogProcessing.txt.

Script U-SQL de ejemplo

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

En el ejemplo anterior de script, la entrada y salida del script se definen en los parámetros @in y @out. El servicio pasa dinámicamente los valores de los parámetros @in y @out en el script de U-SQL usando la sección "parámetros".

También puede especificar otras propiedades como degreeOfParallelism y priority en la definición de canalización de los trabajos que se ejecutan en el servicio Azure Data Lake Analytics.

Parámetros dinámicos

En la definición de canalización de ejemplo, se asignan los parámetros in y out con valores codificados de forma rígida.

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

Es posible usar los parámetros dinámicos en su lugar. Por ejemplo:

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

En este caso, los archivos de entrada se siguen tomando de la carpeta /datalake/input; los de salida se generan en la carpeta /datalake/output. Los nombres de archivo son dinámicos en función del tiempo de inicio de ventana que se pasa cuando se desencadena la canalización.

Vea los siguientes artículos, en los que se explica cómo transformar datos de otras maneras: