Un nodo E-MapReduce (EMR) Spark SQL utiliza un motor de consultas SQL distribuido para procesar datos estructurados y mejorar la eficiencia en la ejecución de trabajos.
Requisitos previos
-
Para personalizar el entorno de componentes antes del desarrollo de nodos, cree una custom image basada en la imagen oficial
dataworks_emr_base_task_pody use the image in DataStudio.Por ejemplo, puede reemplazar un paquete JAR de Spark o depender de
libraries,filesoJAR packagesespecíficos al crear una imagen personalizada. Registre un clúster de EMR en DataWorks. Para obtener más información, consulte Legacy Data Development: Bind EMR compute resources.
Los usuarios de RAM deben contar con los permisos obligatorios. El propietario o administrador del espacio de trabajo debe agregar al usuario de RAM al espacio de trabajo y asignarle el rol Development o Workspace Administrator. El rol Workspace Administrator otorga permisos amplios; asígnelo con precaución. Para obtener más información, consulte Add members to a workspace.
Adquiera y configure un resource group, lo que incluye vincularlo a un espacio de trabajo y definir su configuración de red. Para obtener más información, consulte Use a serverless resource group.
Cree un flujo de negocio. En DataStudio, todos los nodos de desarrollo se organizan en flujos de negocio. Para obtener más información, consulte Create a business flow.
Si sus tareas requieren un entorno de desarrollo específico, utilice DataWorks para construir una imagen personalizada con los componentes necesarios. Para obtener más información, consulte Custom images.
Limitaciones
Este tipo de tarea solo se puede ejecutar en un serverless resource group (recomendado) o en un resource group exclusivo para programación. Si necesita utilizar una imagen en el desarrollo de datos, debe usar un resource group serverless.
Para gestionar metadatos de un clúster DataLake o un clúster personalizado en DataWorks, configure EMR-HOOK en el clúster. Sin esta configuración, DataWorks no podrá mostrar metadatos en tiempo real, generar registros de auditoría, proporcionar linaje de datos ni realizar tareas de gobernanza relacionadas con EMR. Para obtener más información sobre cómo configurar EMR-HOOK, consulte Configure EMR-HOOK for Spark SQL.
El linaje de datos es compatible con clústeres EMR Serverless Spark, pero no con clústeres EMR on ACK Spark.
El registro visual de funciones es compatible con clústeres DataLake y clústeres personalizados, pero no con clústeres EMR on ACK Spark ni con clústeres EMR Serverless Spark.
Notes
Si ha habilitado el control de acceso Ranger para Spark en el clúster de 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.
Paso 1: Crear un nodo
-
Inicie sesión en la consola de DataWorks. En la región objetivo, haga clic en en el panel de navegación izquierdo. Seleccione un espacio de trabajo en la lista desplegable y haga clic en Go to Data Development.
-
Cree un nodo EMR Spark SQL.
-
Haga clic con el botón derecho en el flujo de negocio objetivo y elija .
NotaTambién puede pasar el cursor sobre Create y elegir .
-
En el cuadro de diálogo Create Node, establezca los campos Name, Compute Engine Instance, Node Type y Path. Haga clic en Confirm para abrir el editor de nodos.
NotaEl nombre del nodo puede contener letras mayúsculas, letras minúsculas, caracteres chinos, dígitos, guiones bajos (_) y puntos (.).
-
Paso 2: Desarrollar la tarea
En el editor de nodos EMR Spark SQL, haga doble clic en el nodo creado para abrir la página de desarrollo de tareas.
Escribir código SQL
Defina variables con el formato ${variable_name} y asígneles valores en el panel Scheduling Settings > Scheduling Parameter para habilitar el paso dinámico de parámetros durante las ejecuciones programadas. Para obtener más información sobre los formatos compatibles, consulte Formats of scheduling parameters. A continuación se proporciona un código de ejemplo.
SHOW TABLES;
-- Use ${var} to define a variable named var. If you assign the ${yyyymmdd} value to this variable, you can create a table whose name is suffixed with the business date.
CREATE TABLE IF NOT EXISTS userinfo_new_${var} (
ip STRING COMMENT'IP address',
uid STRING COMMENT'User ID'
)PARTITIONED BY(
dt STRING
); -- You can use this variable together with scheduling parameters.
El tamaño de una instrucción SQL no puede superar los 130 KB.
Si hay varios recursos de cómputo de EMR vinculados a su espacio de trabajo, seleccione el que requiera para su tarea. Este paso no es necesario si solo hay un recurso vinculado.
(Opcional) Configuración avanzada
Configure las propiedades específicas de Spark en la configuración avanzada del nodo. Para obtener más información sobre las propiedades de Spark, consulte Configuración de Spark. Los parámetros avanzados disponibles varían según el tipo de clúster de EMR, como se describe en las siguientes tablas.
Datalake and custom: EMR on ECS
|
Parámetro |
Descripción |
|
queue |
La cola de programación a la que se envían los trabajos. Valor predeterminado: 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 SQL. Valores válidos:
Nota
Este parámetro solo se puede utilizar para ejecuciones de prueba en el entorno de desarrollo. |
|
ENABLE_SPARKSQL_JDBC |
El método utilizado para enviar código SQL. Valores válidos:
|
|
DATAWORKS_SESSION_DISABLE |
Este parámetro solo aplica para ejecuciones de prueba en el entorno de desarrollo. Valores válidos:
Nota
Cuando este parámetro se establece en |
|
Otros |
Agregue parámetros personalizados de Spark Configuration. Utilice el siguiente formato: Nota
|
EMR serverless spark
Para obtener más información sobre la configuración de parámetros, consulte Set parameters for submitting a Spark job.
|
Parámetro |
Descripción |
|
FLOW_SKIP_SQL_ANALYZE |
El modo de ejecución de SQL. Valores válidos:
Nota
Este parámetro solo se puede utilizar para ejecuciones de prueba en el entorno de desarrollo. |
|
DATAWORKS_SESSION_DISABLE |
Especifica el método de envío de la tarea. Cuando ejecuta una tarea en Data Development, esta se envía a SQL Compute de forma predeterminada. Puede usar este parámetro para especificar si la tarea se envía a SQL Compute o a una cola.
|
|
SERVERLESS_RELEASE_VERSION |
La versión del motor Spark. De forma predeterminada, se utiliza la Default Engine Version configurada para el clúster en la página Cluster Management del Management Center. Establezca este parámetro para anular el valor predeterminado para una tarea específica. Nota
El parámetro |
|
SERVERLESS_QUEUE_NAME |
La cola de recursos a la que se envían las tareas. Cuando una tarea se envía a una cola, se utiliza la Default Resource Queue configurada para el clúster en la página Cluster Management del Management Center de forma predeterminada. Si requiere aislamiento y gestión de recursos, puede agregar colas. Para obtener más información, consulte Manage resource queues. Opciones de configuración:
Nota
|
|
SERVERLESS_SQL_COMPUTE |
La sesión de SQL Compute que desea utilizar. De forma predeterminada, se usa el Default SQL Compute configurado para el clúster en la página Cluster Management del Management Center. Si desea utilizar diferentes sesiones de SQL Compute para distintas tareas, puede especificarlas aquí. Para obtener más información sobre cómo crear y gestionar sesiones de SQL Compute, consulte Manage SQL Compute sessions. |
|
Otros |
Agregue parámetros personalizados de Spark Configuration. Utilice el siguiente formato: Nota
DataWorks permite establecer parámetros globales de Spark a nivel de espacio de trabajo para distintos módulos de DataWorks. Puede especificar si los parámetros globales de Spark tienen prioridad sobre los parámetros de Spark dentro de un módulo específico. Para obtener más información, consulte Set global Spark parameters. |
Guardar y ejecutar la tarea
En la barra de herramientas, haga clic en el icono
Guardar para guardar sus instrucciones SQL, y haga clic en el icono
Ejecutar para ejecutar la tarea SQL.
En el cuadro de diálogo de ejecución, seleccione un resource group que tenga una conexión de red exitosa con su servicio Spark. Si el código del nodo utiliza variables, asigne valores constantes a las variables durante la ejecución de depuración. Para configurar el resource group y los parámetros para ejecuciones programadas, consulte Configure node scheduling. Para obtener más información sobre la depuración de tareas, consulte Task debugging process.
Si necesita cambiar los valores de los parámetros en el código, haga clic en Advanced Run en la barra de herramientas. Para obtener más información sobre la lógica de asignación de valores de parámetros, consulte What are the differences in value assignment logic among Run, Advanced Run, and smoke testing in the development environment?.
Spark: EMR on ACK
|
Parámetro |
Descripción |
|
FLOW_SKIP_SQL_ANALYZE |
El modo de ejecución de SQL. Valores válidos:
Nota
Este parámetro solo se puede utilizar para ejecuciones de prueba en el entorno de desarrollo. |
|
Otros |
Agregue parámetros personalizados de Spark Configuration. Utilice el siguiente formato: Nota
DataWorks permite establecer parámetros globales de Spark a nivel de espacio de trabajo para distintos módulos de DataWorks. Puede especificar si los parámetros globales de Spark tienen prioridad sobre los parámetros de Spark dentro de un módulo específico. Para obtener más información, consulte Set global Spark parameters. |
Hadoop: EMR on ECS
|
Parámetro |
Descripción |
|
queue |
La cola de programación a la que se envían los trabajos. Valor predeterminado: 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 SQL. Valores válidos:
Nota
Este parámetro solo se puede utilizar para ejecuciones de prueba en el entorno de desarrollo. |
|
USE_GATEWAY |
Especifica si se debe enviar el trabajo del nodo a través de un clúster de gateway. Valores válidos:
Nota
Si no hay ningún clúster de gateway asociado al clúster donde reside el nodo, los envíos posteriores de trabajos de EMR fallarán si establece manualmente este parámetro en |
|
Otros |
Agregue parámetros personalizados de Spark Configuration. Utilice el siguiente formato: Nota
|
Ejecutar la tarea
-
En la barra de herramientas, haga clic en el icono
Ejecutar. En el cuadro de diálogo Parameter, seleccione el resource group de programación creado y haga clic en Running.NotaPara acceder a recursos de cómputo en una red pública o en una Virtual Private Cloud (VPC), debe utilizar un resource group de programación que haya pasado una prueba de conectividad con los recursos de cómputo. Para obtener más información, consulte Network connectivity.
Si necesita cambiar el resource group para ejecuciones posteriores de la tarea, puede hacer clic en el icono Running with Parameters
y seleccionar el resource group deseado.Cuando utiliza un nodo EMR Spark SQL para consultar datos, se pueden devolver hasta 10,000 registros como máximo, y el tamaño total de los datos no puede superar los 10 MB.
Haga clic en el icono
Guardar para guardar las instrucciones SQL.-
(Opcional) Realice una prueba de humo.
Si desea realizar una prueba de humo en el entorno de desarrollo, puede ejecutarla después de ejecutar o confirmar el nodo. Para obtener más información, consulte Perform a smoke test.
Paso 3: Configurar la programación
Si desea que el sistema ejecute periódicamente una tarea en el nodo, puede hacer clic en Properties en el panel de navegación derecho de la pestaña de configuración del nodo para configurar las propiedades de programación de la tarea según sus requisitos de negocio. Para obtener más información, consulte Overview.
Debe configurar las propiedades Rerun attribute y Parent Nodes del nodo antes de poder enviarlo.
-
Si necesita personalizar el entorno de componentes, puede crear una custom image basada en la imagen oficial
dataworks_emr_base_task_pody use it in DataStudio.Por ejemplo, puede reemplazar paquetes JAR de Spark o incluir
libraries,filesoJAR packagesespecíficos al crear una imagen personalizada.
Paso 4: Desplegar la tarea
Una vez configurada una tarea en un nodo, debe confirmarla y desplegarla. Después de confirmar y desplegar la tarea, el sistema la ejecuta de forma regular según las configuraciones de programación.
Haga clic en el icono
en la barra de herramientas superior para guardar la tarea.-
Haga clic en el icono
en la barra de herramientas superior para confirmar la tarea.En el cuadro de diálogo Submit, configure el parámetro Change description. Luego, determine si desea revisar el código de la tarea después de confirmarla según sus requisitos de negocio.
NotaDebe configurar los parámetros Rerun y Parent Nodes en la pestaña Properties antes de confirmar la tarea.
Puede utilizar la función de revisión de código para garantizar la calidad del código de las tareas y prevenir errores de ejecución causados por código inválido. Si habilita la función de revisión de código, el código de la tarea confirmado solo se podrá desplegar después de aprobar dicha revisión. Para obtener más información, consulte Code review.
Si utiliza un espacio de trabajo en modo estándar, debe desplegar la tarea en el entorno de producción después de confirmarla. Para desplegar una tarea en un nodo, haga clic en Deploy en la esquina superior derecha de la pestaña de configuración del nodo. Para obtener más información, consulte Deploy a node.
Más operaciones
Después de confirmar y desplegar la tarea, esta se ejecuta periódicamente según las configuraciones de programación. Puede hacer clic en Operation Center en la esquina superior derecha de la pestaña de configuración del nodo correspondiente para ir a Operation Center y ver el estado de programación de la tarea. Para obtener más información, consulte Manage scheduled tasks.
Preguntas frecuentes
Antes de enviar una tarea EMR Spark SQL a SQL Compute desde Data Development, compruebe que la sesión de SQL Compute se encuentre en estado Running. De lo contrario, la tarea fallará. Para obtener más información sobre cómo verificar el estado, consulte Manage SQL Compute sessions.