El catálogo universal de Dataplex permite programar la ejecución de código personalizado, ya sea como ejecución única, de forma periódica o bajo demanda. La función a la carta está en vista previa y solo se puede acceder a ella 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 Universal Catalog ejecuta el código mediante el procesamiento de Spark sin servidor y un programador sin servidor integrado.
Terminología
- Tarea
- Una tarea de Dataplex Universal Catalog representa el trabajo que quieres que Dataplex Universal Catalog haga de forma programada. Encapsula el código, los parámetros y la programación.
- Tarea
Un trabajo representa una sola ejecución de una tarea de Dataplex Universal Catalog. Por ejemplo, si una tarea se programa para ejecutarse a diario, Dataplex Universal Catalog creará un trabajo cada día.
En las tareas creadas a partir del 10 de mayo del 2023, el campo Activador muestra el tipo de activador de ejecución de la tarea.
Estos son los tipos de activadores de ejecución de trabajos:
RUN_REQUEST indica que el trabajo se ha ejecutado porque se ha llamado a la API
RunTask
.TASK_CONFIG indica que el trabajo se ha ejecutado debido a la configuración
TriggerSpec
de la tarea.
Modos de programación
Dataplex Universal Catalog admite los siguientes modos de programación:
- Ejecutar una vez
- Usa este modo para ejecutar la tarea solo una vez. Puedes ejecutarla inmediatamente o a una hora determinada en el futuro. Si ejecutas la tarea inmediatamente, puede que la ejecución tarde hasta dos minutos en empezar.
- Ejecutar según la programación
- Usa este modo para ejecutar la tarea con una frecuencia repetida. Las repeticiones admitidas son diarias, semanales, mensuales o personalizadas.
- Ejecutar bajo demanda
Usa este modo para ejecutar una tarea creada anteriormente bajo demanda. El modo de ejecución bajo demanda solo es compatible con la API
RunTask
. Cuando tu trabajo se ejecuta bajo demanda, Dataplex Universal Catalog usa los parámetros que ya tienes para crear un trabajo. Puede especificar los argumentosExecutionSpec
y las etiquetas para ejecutar el trabajo.
Antes de empezar
Habilita la API de Dataproc.
Habilita Acceso privado de Google en tu red y subred. Habilita Acceso privado de Google en la red que uses con las tareas de Dataplex Universal Catalog. Si no especificas una red o una subred al crear la tarea de Dataplex Universal Catalog, Dataplex Universal Catalog usará la subred predeterminada y deberás habilitar el acceso privado de Google para la subred predeterminada.
Crea una cuenta de servicio. Se necesita una cuenta de servicio para programar cualquier tarea de Dataplex Universal Catalog. La cuenta de servicio debe pertenecer al proyecto en el que ejecutes las tareas. La cuenta de servicio debe tener los siguientes permisos:
Acceso a los datos de BigQuery y Cloud Storage que se están procesando.
Permiso Rol 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 el rol Lector o Editor de Dataproc Metastore. Este rol debe concederse en el proyecto en el que se haya configurado el lago de Dataplex Universal Catalog.
Si la tarea es un trabajo de Spark SQL, debes conceder a la cuenta de servicio el rol de desarrollador del catálogo universal de Dataplex. Este rol debe concederse en el proyecto en el que se haya configurado el lago de Dataplex Universal Catalog.
Si la tarea es un trabajo de Spark SQL, necesitas permisos de administrador de Cloud Storage en el segmento en el que se escriben los resultados.
Para programar y ejecutar tareas de Spark SQL y Spark personalizadas, debes tener asignados los roles de lector de metadatos de Dataplex Universal Catalog (
roles/dataplex.metadataReader
), visor de Dataplex Universal Catalog (roles/dataplex.viewer
) y usuario de metadatos de Dataproc Metastore (roles/metastore.metadataUser
) de gestión de identidades y accesos en tu cuenta de servicio.
Asigna el rol Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio al usuario que envía el trabajo. Para obtener instrucciones, consulta el artículo Gestionar el acceso a cuentas de servicio.Concede permisos a la cuenta de servicio del lago de Universal Catalog de Dataplex para usar la cuenta de servicio. Puedes encontrar la cuenta de servicio del lago de Dataplex Universal Catalog en la página Detalles del lago de la consola deGoogle Cloud .
Si el proyecto que contiene tu lago de Dataplex Universal Catalog es diferente del proyecto en el que se va a ejecutar la tarea, concede a la cuenta de servicio del lago de Dataplex Universal Catalog el rol Editor de Dataproc en el proyecto en el que ejecutes la tarea.
Coloque los artefactos de código necesarios (archivos JAR, Python o de secuencias de comandos SQL) o los archivos comprimidos (
.jar
,.tar
,.tar.gz
,.tgz
o.zip
) en una ruta de Cloud Storage.Asegúrate de que la cuenta de servicio tenga el
storage.objects.get
permiso necesario para el segmento de Cloud Storage que almacena estos artefactos de código.
Programar una tarea de Spark (Java o Python)
Consola
En la Google Cloud consola, ve a la página Procesar de Dataplex Universal Catalog.
Haz clic en Crear tarea.
En Crear tarea de Spark personalizada, haz clic en Crear tarea.
Elige un lago de Dataplex Universal Catalog.
Asigna un nombre a la tarea.
Crea un ID para tu tarea.
En la sección Configuración de la tarea, en Tipo, selecciona Spark o PySpark.
Introduce los argumentos pertinentes.
En el campo Cuenta de servicio, introduce una cuenta de servicio de usuario con la que pueda ejecutarse tu tarea de Spark personalizada.
Haz clic en Continuar.
Opcional: Definir programación: selecciona Ejecutar una vez o Repetir. Rellena los campos obligatorios.
Haz clic en Continuar.
Opcional: personaliza los recursos y añade ajustes adicionales.
Haz clic en Crear.
gcloud
Puedes programar una tarea de Spark (Java o Python) con el comando de la CLI de gcloud. En la siguiente tabla se indican los parámetros obligatorios y opcionales que se pueden usar:
Parámetro | Descripción |
---|---|
--lake |
El ID del recurso de lago del servicio Dataplex Universal Catalog. |
--location |
Ubicación del servicio Dataplex Universal Catalog. |
--spark-main-class |
La clase principal del controlador. 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: URIs de Cloud Storage de los archivos que se extraerán en el directorio de trabajo de cada ejecutor. Tipos de archivo admitidos:
.jar , .tar , .tar.gz ,
.tgz y .zip .
|
--spark-file-uris |
Opcional: URIs de Cloud Storage de los archivos que se colocarán en el directorio de trabajo de cada ejecutor. |
--batch-executors-count |
Opcional: El número total de ejecutores de trabajos. El valor predeterminado es 2. |
--batch-max-executors-count |
Opcional: número máximo de ejecutores configurables. El valor predeterminado es 1000. Si batch-max-executors-count es mayor que
batch-executors-count , Dataplex Universal Catalog habilita el
escalado automático.
|
--container-image-java-jars |
Opcional: lista de archivos JAR de Java que se van a añadir a la ruta de clases. La entrada válida incluye URIs de Cloud Storage a archivos binarios Jar. Por ejemplo, gs://bucket-name/my/path/to/file.jar .
|
--container-image-properties |
Opcional: claves de propiedad, especificadas en formato prefix:property .Por ejemplo, core:hadoop.tmp.dir .Para obtener más información, consulta Propiedades de clúster. |
--vpc-network-tags |
Opcional: lista de etiquetas de red que se aplicarán al trabajo. |
--vpc-network-name |
Opcional: la red de nube privada virtual en la que se ejecuta el trabajo. De forma predeterminada, Dataplex Universal Catalog usa la red de VPC Default del proyecto. Solo debes usar una de estas propiedades: --vpc-network-name o --vpc-sub-network-name .
|
--vpc-sub-network-name |
Opcional: la subred de VPC en la que se ejecuta el trabajo.
Solo debes usar una de las propiedades --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 su creación.RECURRING : la tarea se ejecuta periódicamente según una programación.
|
--trigger-start-time |
Opcional: la hora de la primera ejecución de la tarea. El formato es `{year}-{month}-{day}T{hour}:{min}:{sec}Z`, donde la zona horaria es UTC. Por ejemplo, "2017-01-15T01:30:00Z" codifica las 01:30 UTC del 15 de enero del 2017. Si no se especifica este valor, la tarea se ejecutará
después de enviarse 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: impide que se ejecute la tarea. Este parámetro no cancela las tareas que ya se están ejecutando, sino que inhabilita temporalmente las tareas RECURRING .
|
--trigger-max-retires |
Opcional: número de reintentos antes de cancelar. Asigna el valor cero para no intentar nunca volver a ejecutar una tarea fallida. |
--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 |
Opcional: lista de pares de etiquetas KEY=VALUE que se van a añadir. |
--execution-args |
Opcional: los argumentos que se transfieren a la tarea. Los argumentos pueden ser una combinación de
pares clave-valor. Puedes enviar una lista de pares clave-valor separados por comas como argumentos de ejecución. Para enviar argumentos posicionales, asigna a la clave el valor TASK_ARGS y asigna al valor una cadena separada por comas de todos los argumentos posicionales. Para usar un delimitador que no sea una coma, consulta la sección sobre caracteres de escape.Si se pasan key-value y argumentos posicionales
juntos, TASK_ARGS se pasará como último argumento.
|
--execution-service-account |
Cuenta de servicio que se usará para ejecutar una tarea. |
--max-job-execution-lifetime |
Opcional: duración máxima antes de que caduque la ejecución del trabajo. |
--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 |
Opcional: Clave de Cloud KMS que se va a usar para el cifrado, con 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 APIs.
Programar una tarea de Spark SQL
gcloud
Para programar una tarea de Spark SQL, ejecuta el mismo comando de la CLI de gcloud que en la sección Programar una tarea de Spark (Java o Python), con los siguientes parámetros adicionales:
Parámetro | Descripción |
---|---|
--spark-sql-script |
Texto de la consulta SQL. Es obligatorio usar spark-sql-script o spark-sql-script-file . |
--spark-sql-script-file |
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 SQL.
Es obligatorio usar spark-sql-script o spark-sql-script-file . |
--execution-args |
En las tareas de Spark SQL, los siguientes argumentos son obligatorios y deben proporcionarse 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 APIs.
Monitorizar tu tarea
Consola
En la Google Cloud consola, ve a la página Procesar de Dataplex Universal Catalog.
En la pestaña Tareas, hay una lista de tareas filtradas por tipos de plantilla de tarea.
En la columna Nombre, haz clic en la tarea que quieras ver.
Haga clic en el ID de tarea de la tarea que quiera ver.
La página de Dataproc se abre en la Google Cloud consola, donde puedes ver los detalles de la monitorización y la salida.
gcloud
En la siguiente tabla se enumeran los comandos de la CLI de gcloud para monitorizar tus tareas.
Acción | Comando de la CLI de gcloud |
---|---|
Listar tareas | gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id> |
Ver los detalles de una tarea | gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Mostrar las tareas de un trabajo | gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> |
Ver los detalles de un trabajo | gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
Dataplex Universal Catalog ejecuta trabajos en Dataproc sin servidor (lotes). Para ver los registros de ejecución de un trabajo de Dataplex Universal Catalog, sigue estos pasos:
Obtén el ID de la tarea de Dataproc Serverless (lotes). Ejecuta el siguiente comando:
gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
Revisa los registros. Ejecuta el siguiente comando con el ID de tarea que has obtenido al ejecutar el comando anterior:
gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
REST
Para get
o list
una tarea o un trabajo,
usa el Explorador de APIs.
Gestionar la programación
En la Google Cloud consola, dentro de Dataplex Universal Catalog, puedes editar la programación de una tarea, eliminar una tarea o cancelar un trabajo en curso. En la siguiente tabla se indican los comandos de la CLI de gcloud para estas acciones.
Acción | Comando de la CLI de gcloud |
---|---|
Editar la programación de una tarea | gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id> |
Eliminar tareas | gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Cancelar una tarea | gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
Siguientes pasos
- Consulta las plantillas de Dataproc.
- Prueba una plantilla prediseñada para mover datos de forma incremental desde recursos de Cloud Storage de Universal Catalog de Dataplex a BigQuery.
- Consulta Configurar alertas y notificaciones para tareas de Dataplex Universal Catalog.