Dataplex admite la programación de la ejecución de códigos personalizados, ya sea como una ejecución única, de forma periódica o a pedido. La opción a pedido se encuentra en vista previa y solo está disponible a través de la API. Puedes programar transformaciones de datos de clientes con Spark (Java), PySpark (limitado a la versión 3.2 de Spark) o Spark SQL. Dataplex ejecuta el código mediante el procesamiento sin servidores de Spark y un programador sin servidores integrado.
Terminología
- Tarea
- Una tarea de Dataplex representa el trabajo que deseas que realice en una programación. Encapsula tu código, tus parámetros y el programa.
- Job
Un trabajo representa una sola ejecución de una tarea de Dataplex. Por ejemplo, si una tarea está programada para ejecutarse a diario, Dataplex creará un trabajo todos los días.
En el caso de los trabajos creados a partir del 10 de mayo de 2023, el campo Activador muestra el tipo de activador de ejecución del trabajo.
Los siguientes son los tipos de activadores de ejecución del trabajo:
RUN_REQUEST: Indica que el trabajo se ejecutó debido a que se llamó a la API de
RunTask
.TASK_CONFIG: Indica que el trabajo se ejecutó debido a la configuración
TriggerSpec
de la tarea.
Modos de programación
Dataplex admite los siguientes modos de programación:
- Ejecutar una vez
- Usa este modo para ejecutar tu tarea solo una vez. Puedes elegir ejecutarla de inmediato o en un momento determinado en el futuro. Si ejecutas la tarea de inmediato, es posible que la ejecución tarde hasta dos minutos en comenzar.
- Ejecutar según una programación
- Usa este modo para ejecutar la tarea en una frecuencia repetida. Las repeticiones admitidas son diarias, semanales, mensuales o personalizadas.
- Ejecutar bajo demanda
Usa este modo para ejecutar una tarea creada a pedido antes. El modo de ejecución a pedido solo es compatible con la API de
RunTask
. Cuando tu trabajo se ejecuta a pedido, Dataplex usa parámetros existentes para crearlo. Puedes especificar los argumentosExecutionSpec
y las etiquetas para ejecutar el trabajo.
Antes de comenzar
Habilita la API de Dataproc
Habilita el Acceso privado a Google para la red y la subred. Habilita el Acceso privado a Google en la red que usas con las tareas de Dataplex. Si no especificas una red o una subred cuando creas la tarea de Dataplex, este usará la subred predeterminada y deberás habilitar el Acceso privado a Google para la subred predeterminada.
Crea una cuenta de servicio. Se requiere una cuenta de servicio para programar cualquier tarea de Dataplex. La cuenta de servicio debe pertenecer al proyecto en el que ejecutas las tareas. La cuenta de servicio debe tener los siguientes permisos:
Acceso a los datos de BigQuery o Cloud Storage que se procesan
Permiso de trabajador de Dataproc en el proyecto en el que ejecutas la tarea.
Si la tarea necesita leer o actualizar la instancia de Dataproc Metastore adjunta al lake, la cuenta de servicio necesita la función Visualizador o editor de Dataproc Metastore. Esta función se debe otorgar en el proyecto en el que se configura el lake de Dataplex.
Si la tarea es un trabajo de Spark SQL, debes otorgar la función de desarrollador de Dataplex a la cuenta de servicio. Esta función se debe otorgar en el proyecto en el que se configura el lake de Dataplex.
Si la tarea es un trabajo de Spark SQL, necesitas permisos de administrador de Cloud Storage en el bucket en el que se escriben los resultados.
Para programar y ejecutar tareas de Spark SQL y Spark personalizadas, debes tener las funciones de IAM Lector de metadatos de Dataplex (
roles/dataplex.metadataReader
), Visualizador de Dataplex (roles/dataplex.viewer
) y Usuario de metadatos de Dataproc Metastore (roles/metastore.metadataUser
) en tu cuenta de servicio.
Otorga al usuario que envía el trabajo la función de Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio. Para obtener instrucciones, consulta Administra el acceso a cuentas de servicio.Otorga permisos a la cuenta de servicio del dataplex para que la use. Puedes encontrar la cuenta de servicio del lake de Dataplex en la página Detalles del lago de Google Cloud Console.
Si el proyecto que contiene tu lake de Dataplex es diferente del proyecto en el que se va a ejecutar la tarea, otorga a la cuenta de servicio del lake de Dataplex la función de Editor de Dataproc en el proyecto en el que ejecutarás la tarea.
Colocar los artefactos de código necesarios (JAR, Python o archivos de secuencia de comandos SQL) o los archivos archivados (
.jar
,.tar
,.tar.gz
,.tgz
,.zip
) en una ruta de Cloud StorageAsegúrate de que la cuenta de servicio tenga el permiso
storage.objects.get
requerido para el bucket de Cloud Storage que almacena estos artefactos de código.
Programa una tarea de Spark (Java o Python)
Consola
En la consola de Google Cloud, ve a la página Dataplex:
Navega a la vista Process.
Haz clic en Crear tarea.
En Crear tarea personalizada de Spark, haga clic en Crear tarea.
Elige un lake de Dataplex.
Proporciona un nombre de tarea.
Crea un ID para tu tarea.
En la sección Configuración de la tarea, en Tipo, selecciona Spark o PySpark.
Ingresa los argumentos relevantes.
En el campo Cuenta de servicio, ingresa una cuenta de servicio de usuario con la que pueda ejecutarse tu tarea de Spark personalizada.
Haz clic en Continuar.
Opcional: Establecer programación: Selecciona Ejecutar una vez o Repetir. Completa los campos obligatorios.
Haz clic en Continuar.
Opcional: Personalizar recursos y Agregar parámetros de configuración adicionales.
Haz clic en Crear.
gcloud
Puedes programar una tarea de Spark (Java / Python) con el comando de gcloud CLI. En la siguiente tabla, se enumeran los parámetros obligatorios y opcionales que se deben usar:
Parámetro | Descripción |
---|---|
--lake |
El ID del lake para el recurso de lake del servicio de Dataplex. |
--location |
Es la ubicación del servicio de Dataplex. |
--spark-main-class |
Es la clase de conductor principal. El archivo jar que contiene la clase debe estar en el CLASSPATH predeterminado.
|
--spark-main-jar-file-uri |
El URI de Cloud Storage del archivo jar que contiene la clase principal.
|
--spark-archive-uris |
Opcional: Los URI de Cloud Storage de los archivos que se extraerán en el directorio de trabajo de cada ejecutor. Tipos de archivos compatibles: .jar , .tar , .tar.gz , .tgz y .zip .
|
--spark-file-uris |
Opcional: Los URI de Cloud Storage de los archivos que se colocarán en el directorio de trabajo de cada ejecutor. |
--batch-executors-count |
La cantidad total de ejecutores de trabajos (opcional). El valor predeterminado es 2. |
--batch-max-executors-count |
La cantidad máxima de ejecutores configurables (opcional). El valor predeterminado es 1,000. Si batch-max-executors-count es mayor que
batch-executors-count , entonces Dataplex habilita
el ajuste de escala automático.
|
--container-image-java-jars |
Una lista de JARS de Java para agregar a la ruta de clase (opcional) La entrada válida
incluye los URI de Cloud Storage para objetos binarios de jar. Por ejemplo, gs://bucket-name/my/path/to/file.jar .
|
--container-image-properties |
Opcional: Claves de propiedad, especificadas en un formato prefix:property .Por ejemplo, core:hadoop.tmp.dir .Para obtener más información, consulta Propiedades del clúster. |
--vpc-network-tags |
Opcional: Una lista de etiquetas de red para aplicar al trabajo. |
--vpc-network-name |
La red de nube privada virtual en la que se ejecuta el trabajo (opcional). De forma predeterminada, Dataplex usa la red de VPC llamada Default dentro del proyecto. Solo debes usar --vpc-network-name o --vpc-sub-network-name .
|
--vpc-sub-network-name |
La subred de VPC en la que se ejecuta el trabajo (opcional).
Solo debes usar --vpc-sub-network-name o --vpc-network-name .
|
--trigger-type |
Tipo de activador de la tarea especificada por el usuario. Los valores deben ser uno de los siguientes:ON_DEMAND : La tarea se ejecuta una vez poco después de crearla.RECURRING : La tarea se ejecuta periódicamente según un programa.
|
--trigger-start-time |
La hora de la primera ejecución de la tarea (opcional). El formato es “{year}-{month}-{day}T{hour}:{min}:{sec}Z”, y la zona horaria es UTC. Por ejemplo, "2017-01-15T01:30:00Z" codifica a las 01:30 UTC el 15 de enero de 2017. Si no se especifica este valor, la tarea se ejecutará después de que se envíe si el tipo de activador es ON_DEMAND o según la programación especificada si el tipo de activador es RECURRING .
|
--trigger-disabled |
Opcional: Evita que la tarea se ejecute. Este parámetro no cancela las tareas que ya están en ejecución, sino que inhabilita temporalmente las tareas RECURRING .
|
--trigger-max-retires |
La cantidad de intentos de reintento antes de la anulación (opcional). Establece el valor en cero para no intentar reintentar una tarea con errores nunca. |
--trigger-schedule |
Programación cron para ejecutar tareas periódicamente. |
--description |
Opcional: Descripción de la tarea. |
--display-name |
Opcional: Nombre visible de la tarea. |
--labels |
Lista de pares de etiquetas KEY=VALUE para agregar (opcional). |
--execution-args |
Los argumentos para pasar a la tarea (opcional). Los argumentos pueden ser una combinación de
pares clave-valor. Puedes pasar una lista separada por comas de pares clave-valor como argumentos de ejecución. Para pasar argumentos posicionales, establece la clave en TASK_ARGS y el valor en una string separada por comas de todos los argumentos posicionales. Para usar un delimitador que no sea una coma, consulta Escape.En caso de que key-value y los argumentos posicionales se pasen juntos, TASK_ARGS se pasará como el último argumento.
|
--execution-service-account |
Cuenta de servicio que se usará para ejecutar una tarea. |
--max-job-execution-lifetime |
La duración máxima antes de que venza la ejecución del trabajo (opcional). |
--container-image |
Opcional: Imagen de contenedor personalizada para el entorno de ejecución del trabajo. Si no se especifica, se usará una imagen de contenedor predeterminada. |
--kms-key |
La clave de Cloud KMS que se usará para la encriptación, en el siguiente formato:projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}
|
Ejemplo de Java:
glcoud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=ON_DEMAND –spark-main-jar-file-uri=<gcs location to java file> --execution-service-account=<service-account-email> --trigger-start-time=<timestamp after which job starts ex. 2099-01-01T00:00:00Z> --labels=key1=value1,key2=value3,key3=value3 --execution-args=arg1=value1,arg2=value3,arg3=value3 <task-id>
Ejemplo de PySpark:
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=RECURRING --trigger-schedule=<Cron schedule https://en.wikipedia.org/wiki/Cron> --spark-python-script-file=<gcs location to python script> --execution-service-account=<service-account-email> --execution-args=^::^arg1=value1::arg2=value2::TASK_ARGS="pos-arg1, pos-arg2" <task-id>
REST
Para crear una tarea, usa el Explorador de API.
Programa una tarea de Spark SQL
gcloud
Para programar una tarea de Spark SQL, ejecuta el mismo comando de gcloud CLI que en la tarea de Spark (Java o Python), con los siguientes parámetros adicionales:
Parámetro | Descripción |
---|---|
--spark-sql-script |
Es el texto de la consulta en SQL. Se requiere spark-sql-script o spark-sql-script-file . |
--spark-sql-script-file |
Una referencia a un archivo de consulta. Este valor puede ser el URI de Cloud Storage del archivo de consulta o la ruta al contenido de la secuencia de comandos de SQL.
Se requiere spark-sql-script o spark-sql-script-file . |
--execution-args |
Para las tareas de Spark SQL, los siguientes argumentos son obligatorios y deben pasarse como argumentos posicionales:--output_location, <GCS uri of the output directory> --output_format, <output file format> .Los formatos admitidos son csv, json, parquet y orc. |
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --execution-service-account=<service-account-email> --trigger-type=ON_DEMAND --spark-sql-script=<sql-script> --execution-args=^::^TASK_ARGS="--output_location, <gcs folder location>, --output_format, json" <sql-task-id>
REST
Para crear una tarea, usa el Explorador de API.
Supervisa tu tarea
Consola
En la consola de Google Cloud, ve a la página Dataplex:
Navega a la vista Process.
En la pestaña Tareas, hay una lista de las tareas filtradas según el tipo de plantilla.
En la columna Nombre, haz clic en cualquier tarea que desees ver.
Haz clic en el ID del trabajo de la tarea que deseas ver.
Se abrirá la página de Dataproc en Google Cloud Console que te permitirá ver los detalles de supervisión y resultados.
gcloud
En la siguiente tabla, se enumeran los comandos de gcloud CLI para supervisar tus tareas.
Acción | Comando de gcloud CLI |
---|---|
Enumera tareas | gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id> |
Visualiza los detalles de la tarea | gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Muestra una lista de los trabajos de una tarea | gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> |
Visualiza los detalles del trabajo | gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
Dataplex ejecuta trabajos en Dataproc sin servidores (lotes). Para ver los registros de ejecución de un trabajo de Dataplex, sigue estos pasos:
Obtén el ID de trabajo de Dataproc sin servidores (lotes). Ejecuta el siguiente comando:
gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
Consulta los registros. Ejecuta el siguiente comando con el ID de trabajo que obtuviste cuando ejecutaste el comando anterior:
gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
REST
Para get
o list
una tarea o trabajo, usa el Explorador de API.
Administrar la programación
En la consola de Google Cloud, en Dataplex, puedes editar la programación de una tarea, borrarla o cancelar un trabajo en curso. En la siguiente tabla, se enumeran los comandos de gcloud CLI para estas acciones.
Acción | Comando de gcloud CLI |
---|---|
Editar programación de tareas | gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id> |
Borrar una tarea | gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Cancelar un trabajo | gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
¿Qué sigue?
- Consulta Plantillas de Dataproc.
- Prueba una plantilla compilada previamente para mover datos de forma incremental de recursos de Dataplex Cloud Storage a BigQuery.
- Consulta Configura alertas y notificaciones para tareas de Dataplex.