Cree un nodo E-MapReduce (EMR) Spark SQL para procesar datos estructurados con un motor de consultas SQL distribuido y mejorar la eficiencia de ejecución.
Requisitos previos
-
Antes de comenzar el desarrollo del nodo, si necesita un entorno de componentes personalizado, cree una imagen personalizada basada en la imagen oficial
dataworks_emr_base_task_pody utilícela en Data Studio. Para obtener más información, consulte Create a custom image y Use images in data development.Por ejemplo, puede reemplazar paquetes JAR de Spark o agregar dependencias de
libraries,filesoJAR packagesespecíficos al crear una imagen personalizada. Cree un clúster de Alibaba Cloud EMR y regístrelo en DataWorks. Para obtener más información, consulte New Data Studio: Attach an EMR compute resource.
-
(Opcional, para usuarios de RAM) El usuario de Resource Access Management (RAM) para el desarrollo de tareas debe agregarse al espacio de trabajo y asignársele el rol Development o Workspace Administrator (este rol incluye permisos amplios y debe otorgarse con precaución). Para obtener más información, consulte Add workspace members.
Si utiliza una cuenta raíz, omita este paso.
Puede utilizar una imagen personalizada de Custom image para construir un entorno de desarrollo específico para su tarea.
Limitaciones
Los nodos EMR Shell solo pueden ejecutarse en un serverless resource group (recomendado) o en un resource group exclusivo para programación. El uso de una imagen personalizada para el desarrollo de datos requiere un resource group serverless.
-
Para gestionar metadatos de un clúster DataLake o personalizado en DataWorks, primero debe configurar EMR-HOOK en el clúster. Para obtener más información, consulte Configure EMR-HOOK for Spark SQL.
NotaSin EMR-HOOK configurado en el clúster, no podrá ver metadatos en tiempo real, generar registros de auditoría, visualizar linaje de datos ni realizar tareas de gobernanza relacionadas con EMR en DataWorks.
Los clústeres EMR on ACK Spark no admiten la visualización del linaje de datos. Los clústeres EMR Serverless Spark sí admiten esta función.
El registro de funciones mediante la interfaz de usuario es compatible con clústeres DataLake y personalizados, pero no con clústeres EMR on ACK Spark ni EMR Serverless Spark.
Notes
Si ha habilitado el control de acceso Ranger para Spark en el clúster EMR asociado al espacio de trabajo actual:
Las tareas de Spark que utilizan la imagen predeterminada admiten esta función automáticamente.
Para ejecutar una tarea de Spark con una imagen personalizada, envíe un ticket al soporte técnico para solicitar una actualización de la imagen.
Procedimiento
-
En la pestaña de configuración del nodo EMR Spark SQL, realice las siguientes operaciones de desarrollo.
Desarrollar código SQL
En el editor SQL, escriba el código de su tarea. Defina variables con el formato ${variable_name} y asigne sus valores en la sección Scheduling Settings > Scheduling Parameters, ubicada en el lado derecho de la pestaña de configuración del nodo, para pasar parámetros dinámicamente a las tareas programadas. Para obtener más información, consulte Sources and expressions of scheduling parameters. Ejemplo:
SHOW TABLES; -- Define a variable named var by using ${var}. If you set this variable to ${yyyymmdd}, you can create a table with the business date as a suffix. CREATE TABLE IF NOT EXISTS userinfo_new_${var} ( ip STRING COMMENT'IP address', uid STRING COMMENT'User ID' )PARTITIONED BY( dt STRING ); -- Can be used with scheduling parameters.
(Opcional) Configurar parámetros del nodo EMR
En la sección del panel Run Configuration, configure los siguientes parámetros:
Spark parameter: Parámetros de propiedades integrados de Spark. Para obtener más información, consulte configuración de Spark de código abierto. Puede cargar una Spark configuration template directamente desde Serverless Spark, lo que simplifica la configuración y garantiza la coherencia.
DataWorks parameters: Los parámetros avanzados disponibles varían según el tipo de clúster EMR, como se describe en la siguiente tabla.
Clúster DataLake/Clúster personalizado: EMR on ECS
Parámetro avanzado
Descripción
queue
La cola de programación para el envío de trabajos. El valor predeterminado es default. Para obtener más información sobre EMR YARN, consulte Basic queue configurations.
priority
La prioridad. Valor predeterminado: 1.
FLOW_SKIP_SQL_ANALYZE
El modo de ejecución de sentencias SQL. Valores válidos:
-
true: Se ejecutan varias sentencias SQL a la vez. -
false(predeterminado): Se ejecuta una sola sentencia SQL a la vez.
NotaEste parámetro solo es compatible con ejecuciones de prueba en el entorno de desarrollo de datos.
ENABLE_SPARKSQL_JDBC
El método utilizado para enviar código SQL. Valores válidos:
-
true: El código SQL se envía mediante JDBC. Si el clúster EMR no tiene el servicio Kyuubi, el código SQL se envía a Spark Thrift-Server. Si el clúster EMR cuenta con el servicio Kyuubi, el código SQL se envía a Kyuubi a través de JDBC y se admiten parámetros personalizados de Spark.Ambos métodos admiten linaje de metadatos. Sin embargo, las tareas enviadas a Thrift-Server carecen de información de salida para las tareas de nodo correspondientes en los metadatos.
-
false(predeterminado): El código SQL se envía mediante el método de clúster Spark-submit. En este modo, tanto Spark2 como Spark3 admiten linaje de metadatos e información de salida. También se admiten parámetros personalizados de Spark.Nota-
El método de clúster Spark-submit crea archivos y directorios temporales en el directorio
/tmpdel HDFS del clúster EMR de forma predeterminada. Asegúrese de que el directorio tenga permisos de lectura y escritura. -
Cuando utiliza el método de clúster Spark-submit, puede agregar directamente parámetros personalizados de SparkConf en las configuraciones avanzadas. DataWorks añade automáticamente los nuevos parámetros al comando cuando envía el código. Ejemplo:
"spark.driver.memory" : "2g".
-
DATAWORKS_SESSION_DISABLE
Este parámetro aplica a ejecuciones de prueba en el entorno de desarrollo. Valores válidos:
-
true: Se crea una nueva conexión JDBC cada vez que se ejecuta una sentencia SQL. -
false(predeterminado): Se reutiliza la misma conexión JDBC cuando se ejecutan diferentes sentencias SQL dentro de un solo nodo.
NotaCuando este parámetro se establece en
false, no se imprime elyarn applicationIdde Hive. Para imprimir elyarn applicationId, establezca este parámetro entrue.Otros
Parámetros personalizados de Spark Configuration. Agregue parámetros de propiedades específicos de Spark.
Formato de configuración:
"spark.eventLog.enabled" : false,"spark.eventLog.memory" : "12g". DataWorks agrega automáticamente los parámetros al código enviado al clúster EMR con el formato:--conf key=value. Para obtener más información sobre las configuraciones de parámetros, consulte Configure global Spark parameters.Nota-
DataWorks permite configurar parámetros globales de Spark a nivel de espacio de trabajo para cada módulo de DataWorks. Puede especificar si la prioridad de los parámetros globales de Spark es mayor que la de los parámetros de Spark configurados dentro de un módulo específico.
-
Para habilitar el control de acceso Ranger, agregue
spark.hadoop.fs.oss.authorization.method=rangera la global Spark parameter configurations para garantizar que el control de acceso Ranger surta efecto.
Clúster EMR Serverless Spark
Para consultar la configuración de parámetros relacionada, véase Spark task parameter settings.
Parámetro avanzado
Descripción
FLOW_SKIP_SQL_ANALYZE
El modo de ejecución de sentencias SQL. Valores válidos:
-
true: Se ejecutan varias sentencias SQL a la vez. -
false(predeterminado): Se ejecuta una sola sentencia SQL a la vez.
NotaEste parámetro solo es compatible con ejecuciones de prueba en el entorno de desarrollo de datos.
DATAWORKS_SESSION_DISABLE
El método de envío de tareas. Durante el desarrollo de datos, las tareas se envían a SQL Compute para su ejecución de forma predeterminada. Puede usar este parámetro para especificar si la tarea se ejecuta a través de SQL Compute o se envía a una cola para su ejecución.
-
true: La tarea se envía a una cola para su ejecución. De forma predeterminada, se utiliza la cola por defecto especificada al asociar el recurso de cómputo. Cuando DATAWORKS_SESSION_DISABLE se establece en true, puede configurar el parámetroSERVERLESS_QUEUE_NAMEpara especificar la cola a la que se envían las tareas durante el desarrollo de datos. -
false(predeterminado): La tarea se envía a SQL Compute para su ejecución.NotaEste parámetro solo surte efecto durante la ejecución en el desarrollo de datos, no durante las ejecuciones programadas.
SERVERLESS_RELEASE_VERSION
La versión del motor Spark. De forma predeterminada, se utiliza la Default Engine Version configurada en los ajustes del clúster bajo Compute Resource en el Management Center. Para establecer una versión diferente del motor para una tarea específica, configure este parámetro.
NotaEl parámetro
SERVERLESS_RELEASE_VERSIONen las configuraciones avanzadas solo surte efecto cuando el SQL Compute (sesión) especificado para el clúster registrado se encuentra en estado detenido en la consola de EMR Serverless Spark.SERVERLESS_QUEUE_NAME
La cola de recursos a la que se envían las tareas. Cuando una tarea se configura para enviarse a una cola para su ejecución, se utiliza la Default Resource Queue configurada en los ajustes del clúster bajo Clusters en el Management Center de forma predeterminada. Si tiene requisitos de aislamiento y gestión de recursos, puede agregar colas. Para obtener más información, consulte Manage resource queues.
Métodos de configuración:
-
Especifique la cola de recursos para el envío de tareas mediante la configuración de parámetros del nodo.
-
Especifique la cola de recursos para el envío de tareas mediante la configuración de global Spark parameters.
Nota-
El parámetro
SERVERLESS_QUEUE_NAMEen las configuraciones avanzadas solo surte efecto cuando el SQL Compute (sesión) especificado para el clúster registrado se encuentra en estado detenido en la consola de EMR Serverless Spark. -
Durante la ejecución en desarrollo de datos: Primero debe establecer
DATAWORKS_SESSION_DISABLEentruepara que las tareas se envíen a una cola para su ejecución. Solo entonces el parámetroSERVERLESS_QUEUE_NAMEsurte efecto para especificar la cola de tareas. -
Durante la ejecución programada en Operation Center: Las tareas se envían forzosamente a una cola para su ejecución y no pueden enviarse a SQL Compute.
SERVERLESS_SQL_COMPUTE
El SQL Compute (sesión SQL) que se utilizará. De forma predeterminada, se usa el Default SQL Compute configurado en los ajustes del clúster bajo Compute Resource en el Management Center. Para establecer una sesión SQL diferente para una tarea específica, configure este parámetro. Para obtener información sobre cómo crear y gestionar sesiones SQL, consulte Manage SQL Compute sessions.
Otros
Parámetros personalizados de Spark Configuration. Agregue parámetros de propiedades específicos de Spark.
Formato de configuración:
"spark.eventLog.enabled": false. DataWorks agrega automáticamente los parámetros al código enviado al clúster EMR con el formato:--conf key=value.NotaDataWorks permite configurar parámetros globales de Spark a nivel de espacio de trabajo para cada módulo de DataWorks. Puede especificar si la prioridad de los parámetros globales de Spark es mayor que la de los parámetros de Spark configurados dentro de un módulo específico. Para obtener más información sobre la configuración de parámetros globales de Spark, consulte Configure global Spark parameters.
Clúster Spark: EMR on ACK
Parámetro avanzado
Descripción
FLOW_SKIP_SQL_ANALYZE
El modo de ejecución de sentencias SQL. Valores válidos:
-
true: Se ejecutan varias sentencias SQL a la vez. -
false(predeterminado): Se ejecuta una sola sentencia SQL a la vez.
NotaEste parámetro solo es compatible con ejecuciones de prueba en el entorno de desarrollo de datos.
Otros
Parámetros personalizados de Spark Configuration. Agregue parámetros de propiedades específicos de Spark.
Formato de configuración:
"spark.eventLog.enabled": false. DataWorks agrega automáticamente los parámetros al código enviado al clúster EMR con el formato:--conf key=value.NotaDataWorks permite configurar parámetros globales de Spark a nivel de espacio de trabajo para cada módulo de DataWorks. Puede especificar si la prioridad de los parámetros globales de Spark es mayor que la de los parámetros de Spark configurados dentro de un módulo específico. Para obtener más información sobre la configuración de parámetros globales de Spark, consulte Configure global Spark parameters.
Clúster Hadoop: EMR on ECS
Parámetro avanzado
Descripción
queue
La cola de programación para el envío de trabajos. El valor predeterminado es
default. Para obtener más información sobre EMR YARN, consulte Basic queue configurations.priority
La prioridad. Valor predeterminado: 1.
FLOW_SKIP_SQL_ANALYZE
El modo de ejecución de sentencias SQL. Valores válidos:
-
true: Se ejecutan varias sentencias SQL a la vez. -
false(predeterminado): Se ejecuta una sola sentencia SQL a la vez.
NotaEste parámetro solo es compatible con ejecuciones de prueba en el entorno de desarrollo de datos.
USE_GATEWAY
Especifica si se deben enviar trabajos a través de un clúster Gateway. Valores válidos:
-
true: Los trabajos se envían a través de un clúster Gateway. -
false(predeterminado): Los trabajos no se envían a través de un clúster Gateway. En su lugar, se envían al nodo principal de forma predeterminada.
NotaSi el clúster del nodo actual no está asociado con un clúster Gateway, establecer manualmente este parámetro en
trueprovocará que fallen los envíos posteriores de trabajos EMR.Otros
Parámetros personalizados de Spark Configuration. Agregue parámetros de propiedades específicos de Spark.
Formato de configuración:
"spark.eventLog.enabled": false. DataWorks agrega automáticamente los parámetros al código enviado al clúster EMR con el formato:--conf key=value. Para obtener más información sobre las configuraciones de parámetros, consulte Configure global Spark parameters.Nota-
DataWorks permite configurar parámetros globales de Spark a nivel de espacio de trabajo para cada módulo de DataWorks. Puede especificar si la prioridad de los parámetros globales de Spark es mayor que la de los parámetros de Spark configurados dentro de un módulo específico.
-
Para habilitar el control de acceso Ranger, agregue
spark.hadoop.fs.oss.authorization.method=rangera la global Spark parameter configurations para garantizar que el control de acceso Ranger surta efecto.
Ejecutar una tarea SQL
-
En Run Configuration, seleccione y configure el Compute Resource y el Resource Group.
NotaTambién puede configurar CUs for Scheduling según los recursos necesarios para la ejecución de la tarea. El valor predeterminado de CU es
0.25.Para acceder a orígenes de datos a través de Internet o en una VPC, utilice un resource group para programación que haya pasado la prueba de conectividad con el origen de datos. Para obtener más información, consulte Configure network connectivity.
En el cuadro de diálogo de parámetros de la barra de herramientas, seleccione el origen de datos correspondiente y haga clic en Run para ejecutar la tarea SQL.
(Opcional) Configurar parámetros de asignación
Para pasar los resultados de consulta de este nodo a nodos descendentes, vaya a la sección Node Context Parameters en el panel Scheduling Settings del lado derecho y haga clic en Add Assignment Parameter. El sistema agrega automáticamente un parámetro de salida llamado
outputs. El valor de este parámetro es el resultado de la consulta de la última línea de código en este nodo. Para obtener más información, consulte Use node context parameters. -
Para ejecutar la tarea del nodo periódicamente, configure la información de programación según sus requisitos empresariales. Para obtener más información, consulte Configure schedule settings.
NotaSi necesita personalizar el entorno de componentes, puede crear una custom image basada en la imagen oficial
dataworks_emr_base_task_pody use the image in Data Development.Por ejemplo, al crear una imagen personalizada, puede reemplazar paquetes JAR de Spark o depender de
libraries,filesoJAR packagesespecíficos. Una vez configurada la tarea del nodo, debe desplegar el nodo. Para obtener más información, consulte Deploy a node.
Después de desplegar la tarea, puede consultar el estado de ejecución de las tareas programadas en Operation Center. Para obtener más información, consulte View scheduled tasks.
Preguntas frecuentes
Cuando ejecute una tarea de nodo EMR Spark SQL durante el desarrollo de datos y desee enviarla a SQL Compute para su ejecución, asegúrese de que SQL Compute se encuentre en estado Running. De lo contrario, la tarea fallará. Para comprobar el estado de SQL Compute, consulte Manage SQL Compute sessions.