Dataplex admite la programación de la ejecución de código personalizado, ya sea como una vez, en un programa regular o a pedido. La función On-demand está en versión preliminar y solo está disponible a través de la API. Puedes programar transformaciones de datos del cliente con Spark (Java), PySpark (limitado a la versión 3.2 de Spark) o Spark SQL. Dataplex ejecuta el código con el procesamiento de Spark sin servidores y un programador sin servidores integrado.
Terminología
- Tarea
- Una tarea de Dataplex representa el trabajo que deseas Dataplex puede hacer según un programa. Encapsula tu código, tu los parámetros y el programa.
- Trabajo
Un trabajo representa una ejecución única de una tarea de Dataplex. Para 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.
A continuación, se muestran los tipos de activadores de ejecución de trabajos:
RUN_REQUEST: indica que se ejecutó el trabajo debido a una llamada al API de
RunTask
.TASK_CONFIG: Indica que la tarea se ejecutó debido a la configuración de
TriggerSpec
de la tarea.
Modos de programación
Dataplex admite los siguientes modos de programación:
- Ejecutar una vez
- Usa este modo para ejecutar la tarea solo una vez. Puedes elegir ejecutarlo de inmediato o en un horario determinado en el futuro. Si ejecutas la tarea de inmediato, la ejecución podría tardar 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 según demanda
Usa este modo para ejecutar una tarea creada anteriormente a pedido. El modo de ejecución a pedido solo es compatible con la API de
RunTask
. Cuando tu trabajo se ejecuta a pedido, Dataplex usa los 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 tu red y subred. Habilitar el Acceso privado a Google en la red que usas con las tareas de Dataplex. Si no especificas una red o una subred cuando crees la tarea de Dataplex, Dataplex usa la subred predeterminada y debes habilitar Acceso privado a Google para la subred predeterminada.
Crea una cuenta de servicio. R cuenta de servicio necesaria 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 y Cloud Storage que se está procesando.
Rol de trabajador de Dataproc permiso en el proyecto en el que ejecutas la tarea.
Si la tarea necesita leer o actualizar Dataproc de Metastore adjunta al lake, la cuenta de servicio necesita Visualizador de Dataproc Metastore Editor. Este rol se debe otorgar en el proyecto en el que se configuró el lago de Dataplex.
Si la tarea es un trabajo de Spark SQL, debes otorgarle a la cuenta de servicio el rol de desarrollador de Dataplex. Este rol debe otorgarse en el en el que se configura el lake de Dataplex.
Si la tarea es un trabajo de Spark SQL, necesitas un administrador de Cloud Storage. y permisos del bucket en el que se escriben los resultados.
Para programar y ejecutar Spark SQL y tareas personalizadas de Spark, debes tener el Lector de metadatos de Dataplex (
roles/dataplex.metadataReader
) Visualizador de Dataplex (roles/dataplex.viewer
), y Usuario de metadatos de Dataproc Metastore (roles/metastore.metadataUser
) IAM en tu cuenta de servicio.
Otorga al usuario que envía el trabajo el rol Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio. Para obtener instrucciones, consulta Administra el acceso a las cuentas de servicio.Otorga permisos a la cuenta de servicio del lake de Dataplex para usar cuenta de servicio. Puedes encontrar el servicio de lake de Dataplex en la página de Detalles del lago de la consola de Google Cloud.
Si el proyecto que contiene tu lake de Dataplex es diferente del proyecto en el que se ejecutará la tarea, otorga el Cuenta de servicio del lake de Dataplex Rol de editor de Dataproc del proyecto en el que ejecutas la tarea.
Coloca los artefactos de código necesarios (archivos JAR, Python o de secuencia de comandos de SQL) o los archivos archivados (
.jar
,.tar
,.tar.gz
,.tgz
,.zip
) en una ruta de acceso de Cloud Storage.Asegúrate de que la cuenta de servicio tenga el
storage.objects.get
requerido. permiso al bucket de Cloud Storage que almacena estos códigos artefactos.
Programa una tarea de Spark (Java o Python)
Console
En la consola de Google Cloud, ve a la página de Dataplex:
Navega a la vista Process.
Haz clic en Crear tarea.
En Crear tarea de Spark personalizada, haz 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. PySpark
Ingresa los argumentos relevantes.
En el campo Cuenta de servicio, ingresa una cuenta de servicio de usuario a la que Spark con la que se puede ejecutar la tarea.
Haga clic en Continuar.
Opcional: Establecer programación: Selecciona Ejecutar una vez o Repetir. Completa el campos obligatorios.
Haga clic en Continuar.
Personaliza los recursos y Agrega parámetros de configuración adicionales (opcional).
Haz clic en Crear.
gcloud
Puedes programar una tarea de Spark (Java / Python) con gcloud CLI . La siguiente tabla incluye los parámetros obligatorios y opcionales para usa:
Parámetro | Descripción |
---|---|
--lake |
El ID del lake para el recurso del lake del servicio de Dataplex. |
--location |
La ubicación del servicio de Dataplex. |
--spark-main-class |
Es la clase principal de controlador. El archivo jar
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: Son los URIs de Cloud Storage de los archivos que se extraerán en el directorio de trabajo de cada ejecutor. Tipos de archivo compatibles:
.jar , .tar y .tar.gz
.tgz y .zip .
|
--spark-file-uris |
Los URI de Cloud Storage de los archivos que se colocarán en el de trabajo de cada ejecutor. |
--batch-executors-count |
Opcional: Es la cantidad total de ejecutores de trabajos. El valor predeterminado es 2. |
--batch-max-executors-count |
Opcional: Es la cantidad máxima de ejecutores configurables. El valor predeterminado es 1,000. Si batch-max-executors-count es mayor que
batch-executors-count , Dataplex habilita
el ajuste de escala automático.
|
--container-image-java-jars |
Una lista de archivos JAR de Java para agregar a la ruta de clase (opcional). Entrada válida
que incluye los URI de Cloud Storage en objetos binarios del archivo JAR. Por ejemplo, gs://bucket-name/my/path/to/file.jar .
|
--container-image-properties |
Claves de propiedad, especificadas en un prefix:property (opcional)
de un conjunto de datos
tengan un formato común.Por ejemplo, core:hadoop.tmp.dir .Para obtener más información, consulta Propiedades del clúster. |
--vpc-network-tags |
Una lista de etiquetas de red para aplicar al trabajo (opcional). |
--vpc-network-name |
Opcional: La red de nube privada virtual en la que se ejecuta el trabajo De
de forma predeterminada, Dataplex usa la red de VPC
llamado Default dentro del proyecto. Debes usar solo uno de --vpc-network-name o --vpc-sub-network-name .
|
--vpc-sub-network-name |
Opcional: La subred de VPC en la que se ejecuta el trabajo.
Debes usar solo una de las siguientes opciones de --vpc-sub-network-name
o --vpc-network-name .
|
--trigger-type |
Es el 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 sola vez poco después de la tarea.
de la creación de cuentas de servicio.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`, donde 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, se ejecutará la tarea
después de enviarse si el tipo de activador es ON_DEMAND
en el programa especificado 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 están en ejecución, sino que inhabilita
RECURRING tareas.
|
--trigger-max-retires |
Opcional: Es la cantidad de reintentos antes de anular. Establece el valor en cero para que nunca se intente reintentar una tarea que falló. |
--trigger-schedule |
Programa cron de ejecutar tareas de forma periódica. |
--description |
Opcional: Descripción de la tarea. |
--display-name |
Opcional: Nombre visible de la tarea. |
--labels |
Opcional: Es la lista de pares KEY=VALUE de etiquetas que se agregarán. |
--execution-args |
Los argumentos que se pasarán a la tarea (opcional). Los argumentos pueden ser una combinación de
pares clave-valor. Puedes pasar una lista de pares clave-valor separados por comas como
de ejecución. Para pasar argumentos posicionales, establece la clave en
TASK_ARGS y establece el valor en una cadena separada por comas de
todos los argumentos posicionales. Para usar un delimitador que no sea una coma, consulta cómo escapar.En caso de que se pasen key-value y los argumentos posicionales
juntos, TASK_ARGS se pasará como el último argumento.
|
--execution-service-account |
Cuenta de servicio que se usa para ejecutar una tarea. |
--max-job-execution-lifetime |
Opcional: La duración máxima antes de que venza la ejecución del trabajo. |
--container-image |
Opcional: Imagen de contenedor personalizada para el entorno de ejecución del trabajo. Si 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 formato (opcional): 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, sigue estos pasos: usa el Explorador de APIs.
Programa una tarea de Spark SQL
gcloud
Para programar una tarea de Spark SQL, ejecuta el mismo comando de gcloud CLI que se muestra en la Tarea de programar una tarea de Spark (Java o Python), con las los siguientes parámetros adicionales:
Parámetro | Descripción |
---|---|
--spark-sql-script |
El texto de la consulta en SQL. spark-sql-script o
El campo spark-sql-script-file es obligatorio. |
--spark-sql-script-file |
Es una referencia a un archivo de consulta. Este valor puede ser el valor de Cloud Storage
El URI del archivo de consulta o la ruta de acceso al contenido de la secuencia de comandos de SQL.
spark-sql-script o
El campo spark-sql-script-file es obligatorio. |
--execution-args |
Para las tareas de Spark SQL, los siguientes argumentos son obligatorios y se deben
pasados como argumentos posicionales:--output_location, <GCS uri of the output directory> --output_format, <output file format> Los formatos compatibles son archivo CSV, archivo 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.
Supervisa tu tarea
Console
En la consola de Google Cloud, ve a la página de Dataplex:
Navega a la vista Process.
En la pestaña Tareas, hay una lista de tareas, filtradas por plantilla de tareas. de tipos de datos.
En la columna Nombre, haz clic en cualquier tarea que desees ver.
Haz clic en el ID de trabajo de la tarea que deseas ver.
La página de Dataproc se abre La consola de Google Cloud, que permite visualizar los detalles de supervisión y salida.
gcloud
En la siguiente tabla, se enumeran los comandos de gcloud CLI para supervisar tus tareas.
Acción | Comando de gcloud CLI |
---|---|
Crea una lista de tareas | gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id> |
Cómo ver los detalles de la tarea | gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Enumera 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 Serverless (Batches). 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 de ejecutando 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 APIs.
Administra la programación
En la consola de Google Cloud, en Dataplex, puedes editar el programar una tarea, borrarla o cancelar un trabajo en curso. La siguiente tabla enumera 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> |
Cómo 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 prediseñada para mover datos de forma incremental de los recursos de Cloud Storage de Dataplex a BigQuery.
- Consulta Configura alertas y notificaciones para las tareas de Dataplex.