Dataplex permet de planifier l'exécution de code personnalisé, une exécution ponctuelle, à un calendrier régulier ou à la demande. La fonctionnalité à la demande est disponible Preview, et n'est disponible que via API. Vous pouvez planifier des transformations de données client à l'aide de Spark (Java), PySpark (limité à la version 3.2 de Spark) ou Spark SQL. Dataplex exécute le code à l'aide du traitement Spark sans serveur et d'une solution scheduler.
Terminologie
- Tâche
- Une tâche Dataplex représente le travail que vous souhaitez effectuer ou Dataplex de façon planifiée. Il encapsule votre code, votre les paramètres et le calendrier.
- Job
Une tâche représente une exécution unique d'une tâche Dataplex. Pour par exemple, si une tâche est planifiée pour s'exécuter quotidiennement, Dataplex créer un emploi chaque jour.
Pour les tâches créées le 10 mai 2023 ou après, le champ Trigger (Déclencheur) indique le type de déclencheur d'exécution de la tâche.
Voici les types de déclencheurs d'exécution de tâches :
RUN_REQUEST : indique que la tâche a été exécutée en raison de l'appel de l'API
RunTask
.TASK_CONFIG: indique que la tâche a été exécutée en raison de la
TriggerSpec
la configuration de la tâche.
Modes de planification
Dataplex est compatible avec les modes de planification suivants:
- Exécuter une fois
- Utilisez ce mode pour exécuter votre tâche une seule fois. Vous pouvez choisir de l'exécuter immédiatement ou à une heure définie dans le futur. Si vous exécutez la tâche immédiatement, l'exécution peut prendre jusqu'à deux minutes.
- Exécuter selon un calendrier
- Utilisez ce mode pour exécuter la tâche à une fréquence répétée. Les répétitions acceptées sont quotidiennes, hebdomadaires, mensuelles ou personnalisées.
- Exécuter à la demande
Utilisez ce mode pour exécuter une tâche créée précédemment à la demande. Le mode d'exécution à la demande n'est compatible qu'avec l'API
RunTask
. Lorsque votre tâche s'exécute à la demande, Dataplex utilise les paramètres existants pour créer une tâche. Vous pouvez spécifier les argumentsExecutionSpec
et les libellés pour exécuter la tâche.
Avant de commencer
activer l'API Dataproc ;
Activer l'accès privé à Google pour votre réseau et votre sous-réseau. Activez l'accès privé à Google sur le réseau que vous utilisez avec les tâches Dataplex. Si vous ne spécifiez pas de réseau ni de sous-réseau lorsque vous créez la tâche Dataplex, Dataplex utilise le sous-réseau par défaut, et vous devez activer l'accès privé à Google pour le sous-réseau par défaut.
Créer un compte de service A compte de service est requis pour planifier des tâches Dataplex. Le compte de service doit appartenir au projet dans lequel vous exécutez les tâches. Le compte de service doit disposer des autorisations suivantes :
Accès aux données BigQuery et Cloud Storage est en cours de traitement.
Rôle de nœud de calcul Dataproc sur le projet dans lequel vous exécutez la tâche.
Si la tâche doit lire ou mettre à jour Dataproc Instance Metastore associée au lac, le compte de service a besoin Lecteur Dataproc Metastore ou Éditeur. Ce rôle doit être attribué dans le projet où le Dataplex est configuré.
S'il s'agit d'un job Spark SQL, vous devez accorder au compte de service le rôle Rôle de développeur Dataplex. Ce rôle doit être accordé dans le projet dans lequel le lac Dataplex est configuré.
S'il s'agit d'un job Spark SQL, vous avez besoin d'un administrateur Cloud Storage sur le bucket où les résultats sont écrits.
Pour planifier et exécuter des tâches Spark SQL et Spark personnalisées, vous devez disposer des rôles IAM Lecteur de métadonnées Dataplex (
roles/dataplex.metadataReader
), Lecteur Dataplex (roles/dataplex.viewer
) et Utilisateur de métadonnées Dataproc Metastore (roles/metastore.metadataUser
) sur votre compte de service.
Attribuez au compte utilisateur qui envoie le job le rôle Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service. Pour obtenir des instructions, consultez Gérer l'accès aux comptes de service.Accordez au compte de service du lac Dataplex l'autorisation d'utiliser le de service géré. Vous trouverez le compte de service de lac Dataplex sur la page Détails du lac de la console Google Cloud.
Si le projet contenant votre lac Dataplex est différent du projet dans lequel la tâche doit être exécutée, attribuez au compte de service du lac Dataplex le rôle Éditeur Dataproc dans le projet dans lequel vous exécutez la tâche.
Placer les artefacts de code requis (fichiers JAR, Python ou SQL) ou des fichiers archivés (
.jar
,.tar
,.tar.gz
,.tgz
,.zip
) dans un Chemin d'accès Cloud Storage.Assurez-vous que le compte de service dispose du
storage.objects.get
requis l'autorisation pour le bucket Cloud Storage qui stocke ces codes les artefacts.
Planifier une tâche Spark (Java ou Python)
Console
Dans la console Google Cloud, accédez à la page Dataplex:
Accédez à la vue Process (Procédure).
Cliquez sur Créer une tâche.
Dans le champ Create Custom Spark Task (Créer une tâche Spark personnalisée), cliquez sur Create task (Créer une tâche).
Choisissez un lac Dataplex.
Attribuez un nom à la tâche.
Créez un ID pour votre tâche.
Dans le champ Type de la section Task configuration (Configuration de la tâche), sélectionnez Spark ou PySpark :
Saisissez les arguments appropriés.
Dans le champ Compte de service, saisissez un compte de service utilisateur que votre compte avec laquelle la tâche Spark peut s'exécuter.
Cliquez sur Continuer.
Facultatif: Définir un calendrier: sélectionnez Exécuter une fois ou Répéter. Remplissez champs obligatoires.
Cliquez sur Continuer.
(Facultatif) Personnalisez les ressources et Ajoutez des paramètres supplémentaires.
Cliquez sur Créer.
gcloud
Vous pouvez planifier une tâche Spark (Java / Python) à l'aide de la gcloud CLI. . Le tableau suivant présente les paramètres obligatoires et facultatifs à utiliser :
Paramètre | Description |
---|---|
--lake |
ID du lac de la ressource de lac du service Dataplex. |
--location |
Emplacement du service Dataplex. |
--spark-main-class |
Classe principale de conducteur. Le fichier jar contenant la classe doit se trouver dans le CLASSPATH par défaut.
|
--spark-main-jar-file-uri |
URI Cloud Storage du fichier jar contenant
la classe principale.
|
--spark-archive-uris |
Facultatif: URI Cloud Storage des archives dans lesquelles extraire les données.
le répertoire de travail
de chaque exécuteur. Types de fichiers compatibles : .jar , .tar , .tar.gz , .tgz et .zip
|
--spark-file-uris |
Facultatif: URI Cloud Storage des fichiers à placer dans le répertoire de travail de chaque exécuteur. |
--batch-executors-count |
Facultatif : nombre total d'exécuteurs de tâches. La valeur par défaut est "2". |
--batch-max-executors-count |
Facultatif: nombre maximal d'exécuteurs configurables. La valeur par défaut
la valeur est 1000. Si batch-max-executors-count est supérieur à batch-executors-count , Dataplex active l'autoscaling.
|
--container-image-java-jars |
Facultatif : liste des fichiers JAR Java à ajouter au chemin d'accès aux classes. Saisie valide
qui inclut des URI Cloud Storage vers des binaires Jar. Par exemple, gs://bucket-name/my/path/to/file.jar .
|
--container-image-properties |
Facultatif : clés de propriété, spécifiées au format prefix:property .Par exemple, core:hadoop.tmp.dir .Pour en savoir plus, consultez la section Propriétés du cluster. |
--vpc-network-tags |
Facultatif: liste des tags réseau à appliquer à la tâche. |
--vpc-network-name |
(Facultatif) Réseau de cloud privé virtuel dans lequel le job est exécuté. Par
par défaut, Dataplex utilise le réseau VPC
nommé Default dans le projet. Vous ne devez utiliser qu'un des --vpc-network-name ou --vpc-sub-network-name .
|
--vpc-sub-network-name |
(Facultatif) Sous-réseau VPC dans lequel le job s'exécute.
Vous ne devez utiliser qu'une seule des clés --vpc-sub-network-name
ou --vpc-network-name .
|
--trigger-type |
Type de déclencheur de la tâche spécifiée par l'utilisateur. Les valeurs doivent être les suivantes :ON_DEMAND : la tâche s'exécute une fois peu de temps après sa création.RECURRING : la tâche s'exécute régulièrement selon un calendrier.
|
--trigger-start-time |
Facultatif : heure de la première exécution de la tâche. Le format
correspond à `{year}-{month}-{day}T{hour}:{min}:{sec}Z`, où le fuseau horaire est
UTC. Par exemple, "2017-01-15T01:30:00Z" encode 01:30 UTC le 15 janvier 2017. Si cette valeur n'est pas spécifiée, la tâche s'exécute après avoir été envoyée si le type de déclencheur est ON_DEMAND , ou selon le calendrier spécifié si le type de déclencheur est RECURRING .
|
--trigger-disabled |
Facultatif : empêche l'exécution de la tâche. Ce paramètre n'annule pas les tâches déjà en cours d'exécution, mais désactive temporairement les tâches RECURRING .
|
--trigger-max-retires |
Facultatif: nombre de nouvelles tentatives avant d'abandonner. Définir la valeur à zéro pour ne jamais tenter de relancer une tâche ayant échoué. |
--trigger-schedule |
Planification Cron pour l'exécution périodique de tâches. |
--description |
Facultatif : description de la tâche. |
--display-name |
Facultatif: Nom à afficher de la tâche. |
--labels |
Facultatif: liste des paires d'étiquettes KEY=VALUE à ajouter. |
--execution-args |
Facultatif : arguments à transmettre à la tâche. Les arguments peuvent être un mélange de paires clé-valeur. Vous pouvez transmettre une liste de paires clé-valeur séparées par une virgule en tant que
des arguments d'exécution. Pour transmettre des arguments positionnels, définissez la clé sur TASK_ARGS et la valeur sur une chaîne contenant tous les arguments positionnels, séparés par une virgule. Pour utiliser un délimiteur autre qu'une virgule, consultez la section Échappage.Si key-value et des arguments positionnels sont transmis
ensemble, alors TASK_ARGS est transmis en tant que dernier argument.
|
--execution-service-account |
Compte de service à utiliser pour exécuter une tâche. |
--max-job-execution-lifetime |
Facultatif : durée maximale avant l'expiration de l'exécution de la tâche. |
--container-image |
Facultatif: Image de conteneur personnalisé pour l'environnement d'exécution du job. Si cette option n'est pas spécifiée, une image de conteneur par défaut est utilisée. |
--kms-key |
Facultatif : clé Cloud KMS à utiliser pour le chiffrement, au format :projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}
|
Exemple 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>
Exemple 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
Pour créer une tâche : utiliser APIs Explorer.
Programmer une tâche Spark SQL
gcloud
Pour planifier une tâche SQL Spark, exécutez la même commande gcloud CLI que dans Planifier une tâche Spark (Java ou Python), avec les paramètres supplémentaires suivants :
Paramètre | Description |
---|---|
--spark-sql-script |
Texte de la requête SQL. spark-sql-script ou
Veuillez renseigner le champ spark-sql-script-file . |
--spark-sql-script-file |
Référence à un fichier de requête. Cette valeur peut correspondre à l'Cloud Storage
URI du fichier de requête ou chemin d'accès au contenu du script SQL.
spark-sql-script ou spark-sql-script-file est obligatoire. |
--execution-args |
Pour les tâches Spark SQL, les arguments suivants sont obligatoires et doivent être transmis en tant qu'arguments positionnels :--output_location, <GCS uri of the output directory> --output_format, <output file format> .Les formats acceptés sont les fichiers CSV, JSON, parquet et 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
Pour créer une tâche, utilisez APIs Explorer.
Surveiller votre tâche
Console
Dans la console Google Cloud, accédez à la page Dataplex:
Accédez à la vue Process (Procédure).
Dans l'onglet Tasks (Tâches), vous trouverez une liste de tâches filtrées par type de modèle de tâche.
Dans la colonne Nom, cliquez sur la tâche que vous souhaitez afficher.
Cliquez sur l'ID de la tâche que vous souhaitez afficher.
La page Dataproc s'ouvre dans la console Google Cloud, ce qui vous permet d'afficher les détails de la surveillance et de la sortie.
gcloud
Le tableau suivant répertorie les commandes de la CLI gcloud permettant de surveiller vos tâches.
Action | Commande gcloud CLI |
---|---|
Répertorier les tâches | gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id> |
Afficher les détails d'une tâche | gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Liste des tâches d'une tâche | gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> |
Afficher les détails d'un job | gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
Dataplex exécute des jobs sur Dataproc sans serveur (lots). Pour afficher les journaux d'exécution d'une tâche Dataplex, procédez comme suit :
Obtenez l'ID du job Dataproc sans serveur (lots). Exécutez la commande suivante :
gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
Affichez les journaux. Exécutez la commande suivante en utilisant l'ID de job obtenu dans en exécutant la commande précédente:
gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
REST
Pour get
ou list
une tâche ou une tâche, utilisez APIs Explorer.
Gérer la programmation
Dans la console Google Cloud, dans Dataplex, vous pouvez modifier le planifier une tâche, supprimer une tâche ou annuler une tâche en cours. Le tableau suivant répertorie les commandes de la gcloud CLI pour ces actions.
Action | Commande gcloud CLI |
---|---|
Modifier le calendrier des tâches | gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id> |
Supprimer une tâche | gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Annuler une mission | gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
Étape suivante
- Consultez Modèles Dataproc.
- Essayez un modèle prédéfini pour déplacer des données de manière incrémentielle des éléments Cloud Storage Dataplex vers BigQuery.
- Consultez Configurer des alertes et des notifications pour les tâches Dataplex.