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:
Busque Spark en el panel Actividades de canalización y arrastre una actividad de Spark al lienzo de canalización.
Seleccione la nueva actividad de Spark en el lienzo si aún no lo ha hecho.
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.
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.
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. | Sí |
description | Texto que describe para qué se usa la actividad. | No |
type | Para la actividad de Spark, el tipo de actividad es HDInsightSpark. | Sí |
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). | Sí |
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. | Sí |
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. | Sí |
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. | Sí | Carpeta |
<Definida por el usuario> | Ruta de acceso que apunta al archivo de entrada del trabajo de Spark. | Sí | 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
Contenido relacionado
Vea los siguientes artículos, en los que se explica cómo transformar datos de otras maneras: