Transformación de datos mediante la actividad de Spark en 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.

La actividad de Spark en canalizaciones de Data Factory y Synapse ejecuta un programa de Spark en su propio clúster de HDInsight o a petición. Este artículo se basa en el artículo sobre actividades de transformación de datos , que presenta información general de la transformación de datos y las actividades de transformación admitidas. Cuando se usa un servicio vinculado a Spark a petición, el servicio crea automáticamente un clúster Just-in-Time para procesar los datos y, luego, lo elimina una vez finalizado el procesamiento.

Adición de una actividad de Spark a una canalización con la interfaz de usuario

Para usar una actividad de Spark en una canalización, complete los pasos siguientes:

  1. Busque Spark en el panel Actividades de canalización y arrastre una actividad de Spark al lienzo de canalización.

  2. Seleccione la nueva actividad de Spark en el lienzo si aún no lo ha hecho.

  3. Seleccione la pestaña HDI Cluster (Clúster de HDI) para elegir o crear un servicio vinculado a un clúster de HDInsight que se usará para ejecutar la actividad de Spark.

    Shows the UI for a Spark activity.

  4. Seleccionar la pestaña Script/Jar para elegir o crear un servicio vinculado de trabajo en una cuenta de Azure Storage en la que se hospedará el script. Especifique una ruta de acceso al archivo que se va a ejecutar allí. También puede configurar detalles avanzados, como un usuario de proxy, la configuración de depuración y los argumentos y parámetros de configuración de Spark que se pasarán al script.

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

Propiedades de la actividad de Spark

Esta es la definición de JSON de ejemplo de una actividad de Spark:

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

En la siguiente tabla se describen las propiedades JSON que se usan en la definición de JSON:

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 Spark, el tipo de actividad es HDInsightSpark.
linkedServiceName Nombre del servicio vinculado de HDInsight Spark en el que se ejecuta el programa de Spark. Para obtener más información sobre este servicio vinculado, vea el artículo Compute linked services (Servicios vinculados de procesos).
SparkJobLinkedService El servicio vinculado de Azure Storage que contiene los registros, las dependencias y los archivos de trabajos de Spark. En este caso solo se admiten servicios vinculados a Azure Blob Storage y ADLS Gen2 . Si no especifica un valor para esta propiedad, se usa el almacenamiento asociado con el clúster de HDInsight. El valor de esta propiedad solo puede ser un servicio vinculado de Azure Storage. No
rootPath Contenedor de blobs de Azure y la carpeta que contiene el archivo de Spark. El nombre del archivo distingue mayúsculas de minúsculas. Vea la sección sobre la estructura de carpetas (sección siguiente) para obtener más información sobre la estructura de esta carpeta.
entryFilePath Ruta de acceso relativa a la carpeta raíz del código o el paquete de Spark. El archivo de entrada debe ser un archivo de Python o un archivo .jar.
className Clase principal de Spark o Java de la aplicación. No
argumentos Lista de argumentos de línea de comandos del programa de Spark. No
proxyUser Cuenta de usuario de suplantación para ejecutar el programa de Spark. No
sparkConfig Especifique valores para las propiedades de configuración de Spark indicadas en el tema: Spark Configuration - Application properties (Configuración de Spark: Propiedades de aplicación). No
getDebugInfo Especifica si se copian los archivos de registro de Spark en el almacenamiento de Azure que usa el clúster de HDInsight que especifica sparkJobLinkedService. Valores permitidos: Ninguno, Siempre o Error. Valor predeterminado: Ninguno. No

Estructura de carpetas

Los trabajos de Spark son más extensibles que los de Pig y Hive. En los trabajos de Spark, puede proporcionar varias dependencias como paquetes JAR (ubicados en la CLASSPATH de Java), archivos de Python (ubicados en la ruta PYTHONPATH) y cualquier otro archivo.

Cree la siguiente estructura de carpetas en la instancia de Azure Blob Storage a la que hace referencia el servicio vinculado de HDInsight. Luego, cargue los archivos dependientes en las subcarpetas adecuadas de la carpeta raíz que representa entryFilePath. Por ejemplo, cargue los archivos de Python en la subcarpeta pyFiles y los archivos JAR en la subcarpeta jars de la carpeta raíz. En el entorno de tiempo de ejecución, el servicio espera la siguiente estructura de carpetas en Azure Blob Storage:

Ruta de acceso Descripción Obligatorio Tipo
. (raíz) Ruta de acceso raíz del trabajo de Spark en el servicio vinculado de almacenamiento. Carpeta
<Definida por el usuario> Ruta de acceso que apunta al archivo de entrada del trabajo de Spark. Archivo
./jars Todos los archivos de esta carpeta se cargan y se colocan en la ruta CLASSPATH de Java del clúster No Carpeta
./pyFiles Todos los archivos de esta carpeta se cargan y se colocan en la ruta PYTHONPATH del clúster. No Carpeta
./files Todos los archivos de esta carpeta se cargan y se colocan en el directorio de trabajo del ejecutor. No Carpeta
./archives Todos los archivos de esta carpeta están sin comprimir. No Carpeta
./logs Carpeta que contiene los registros del clúster de Spark. No Carpeta

Este es un ejemplo de un almacenamiento que contiene dos archivos de trabajos de Spark en la instancia de Azure Blob Storage a la que hace referencia el servicio vinculado de HDInsight.

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
	

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