Dataplex unterstützt die Planung der benutzerdefinierten Codeausführung, entweder als einmaliger, regelmäßiger Zeitplan oder on demand. Die Funktion kann bei Bedarf in der Vorschau aufgerufen werden und ist nur über die API verfügbar. Sie können Kundendatentransformationen mit Spark (Java), PySpark (nur Spark Version 3.2) oder Spark SQL planen. Dataplex führt den Code mithilfe der serverlosen Spark-Verarbeitung und einem integrierten serverlosen Planer aus.
Terminologie
- Task
- Eine Dataplex-Aufgabe stellt die Arbeit dar, die Dataplex nach einem Zeitplan ausführen soll. Der Code enthält den Code, die Parameter und den Zeitplan.
- Job
Ein Job stellt eine einzelne Ausführung einer Dataplex-Aufgabe dar. Wenn beispielsweise eine Aufgabe täglich ausgeführt wird, erstellt Dataplex jeden Tag einen Job.
Bei Jobs, die am oder nach dem 10. Mai 2023 erstellt wurden, enthält das Feld Trigger den Typ des Ausführungstrigger des Jobs.
Im Folgenden sind die Triggertypen für Jobausführungen aufgeführt:
RUN_REQUEST: Gibt an, dass der Job aufgrund des Aufrufs der
RunTask
API ausgeführt wurde.TASK_CONFIG: Gibt an, dass der Job aufgrund der
TriggerSpec
-Konfiguration der Aufgabe ausgeführt wurde.
Planungsmodi
Dataplex unterstützt die folgenden Planungsmodi:
- Einmal ausführen
- Verwenden Sie diesen Modus, um Ihre Aufgabe nur einmal auszuführen. Sie können die Ausführung sofort oder zu einem bestimmten Zeitpunkt ausführen. Wenn Sie die Aufgabe sofort ausführen, kann es bis zu zwei Minuten dauern, bis die Ausführung beginnt.
- Nach einem Zeitplan ausführen
- In diesem Modus wird die Aufgabe in regelmäßigen Abständen ausgeführt. Unterstützte Wiederholungen sind täglich, wöchentlich, monatlich oder benutzerdefiniert.
- On demand ausführen
In diesem Modus können Sie bei Bedarf eine zuvor erstellte Aufgabe ausführen. Der On-Demand-Modus wird nur von der
RunTask
API unterstützt. Wenn Ihr Job on demand ausgeführt wird, verwendet Dataplex vorhandene Parameter, um einen Job zu erstellen. Sie können dieExecutionSpec
-Argumente und die Labels angeben, die den Job ausführen sollen.
Hinweis
die Dataproc API aktivieren
Aktivieren Sie den privaten Google-Zugriff für Ihr Netzwerk und Subnetzwerk. Aktivieren Sie den privaten Google-Zugriff in dem Netzwerk, das Sie mit Dataplex-Aufgaben verwenden. Wenn Sie beim Erstellen der Dataplex-Aufgabe weder ein Netzwerk noch ein Subnetzwerk angeben, verwendet Dataplex das Standard-Subnetzwerk. Sie müssen dann den privater Google-Zugriff für das Standard-Subnetzwerk aktivieren.
Erstellen Sie ein Dienstkonto. Zum Planen von Dataplex-Aufgaben ist ein Dienstkonto erforderlich. Das Dienstkonto muss zu dem Projekt gehören, in dem Sie die Aufgaben ausführen. Das Dienstkonto muss die folgenden Berechtigungen haben:
Zugriff auf die BigQuery- und/oder Cloud Storage-Daten, die gerade verarbeitet werden.
Dataproc Worker-Rolle für das Projekt, in dem Sie die Aufgabe ausführen.
Wenn die Aufgabe die Dataproc Metastore-Instanz lesen oder aktualisieren muss, die mit dem Lake verknüpft ist, benötigt das Dienstkonto die Rolle Dataproc Metastore Viewer oder Bearbeiter. Diese Rolle muss in dem Projekt gewährt werden, in dem das Dataplex-Flag eingerichtet ist.
Wenn die Aufgabe ein Spark SQL-Job ist, müssen Sie dem Dienstkonto die Rolle „Dataplex-Entwickler“ zuweisen. Diese Rolle muss in dem Projekt gewährt werden, in dem der Dataplex-See eingerichtet ist.
Wenn die Aufgabe ein Spark SQL-Job ist, benötigen Sie Cloud Storage-Administratorberechtigungen für den Bucket, in den die Ergebnisse geschrieben werden.
Zum Planen und Ausführen von Spark SQL- und benutzerdefinierten Spark-Aufgaben müssen Ihnen die IAM-Rollen „Dataplex-Metadatenbetrachter“ (
roles/dataplex.metadataReader
), „Dataplex-Betrachter“ (roles/dataplex.viewer
) und „Dataproc Metastore-Metadaten-Nutzer“ (roles/metastore.metadataUser
) für Ihr Dienstkonto gewährt werden.
Gewähren Sie dem Nutzer, der den Job sendet, die Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser
) für das Dienstkonto. Eine Anleitung finden Sie unter Zugriff auf Dienstkonten verwalten.Gewähren Sie dem Dataplex Lake-Dienstkonto Berechtigungen zum Verwenden des Dienstkontos. Sie finden das Dataplex-Lake-Dienstkonto in der Google Cloud Console auf der Seite Lake-Details.
Wenn sich das Projekt mit Ihrem Dataplex-Lake von dem Projekt unterscheidet, in dem die Aufgabe ausgeführt werden soll, weisen Sie dem Dataplex-Lake-Dienstkonto die Dataproc-Bearbeiter-Rolle für das Projekt zu, in dem Sie die Aufgabe ausführen.
Platzieren Sie die erforderlichen Codeartefakte (JARs, Python oder SQL-Skriptdateien) oder archivierten Dateien (
.jar
,.tar
,.tar.gz
,.tgz
,.zip
) in einem Cloud Storage-Pfad.Achten Sie darauf, dass das Dienstkonto die erforderliche Berechtigung
storage.objects.get
für den Cloud Storage-Bucket hat, in dem diese Codeartefakte gespeichert sind.
Spark-Aufgabe (Java oder Python) planen
Console
Rufen Sie in der Google Cloud Console die Dataplex-Seite auf:
Rufen Sie die Ansicht Process (Prozess) auf.
Klicken Sie auf Aufgabe erstellen.
Klicken Sie unter Benutzerdefinierte Spark-Aufgabe erstellen auf Aufgabe erstellen.
Wählen Sie einen Dataplex-See aus.
Geben Sie einen Aufgabennamen ein.
Erstellen Sie eine ID für die Aufgabe.
Wählen Sie im Abschnitt Aufgabenkonfiguration als Typ die Option Spark oder PySpark aus.
Geben Sie die relevanten Argumente ein.
Geben Sie im Feld Dienstkonto ein Nutzerdienstkonto ein, mit dem Ihre benutzerdefinierte Spark-Aufgabe ausgeführt werden kann.
Klicken Sie auf Weiter.
Optional: Zeitplan festlegen: Wählen Sie Einmal ausführen oder Wiederholen aus. Füllen Sie die Pflichtfelder aus.
Klicken Sie auf Weiter.
Optional: Ressourcen anpassen und Weitere Einstellungen hinzufügen
Klicken Sie auf Erstellen.
gcloud
Sie können eine Spark-Aufgabe (Java / Python) mit der gcloud CLI planen. In der folgenden Tabelle sind die erforderlichen und optionalen Parameter aufgeführt:
Parameter | Beschreibung |
---|---|
--lake |
Die Lake-ID für die Lake-Ressource des Dataplex-Dienstes. |
--location |
Der Standort des Dataplex-Dienstes. |
--spark-main-class |
Die Hauptklasse der Fahrer. Die Datei jar , die die Klasse enthält, muss sich im Standard-CLASSPATH befinden.
|
--spark-main-jar-file-uri |
Der Cloud Storage-URI der Datei jar , die die Hauptklasse enthält.
|
--spark-archive-uris |
Optional: Cloud Storage-URIs von Archiven, die in das Arbeitsverzeichnis jedes Executors extrahiert werden sollen. Unterstützte Dateitypen:
.jar , .tar , .tar.gz ,
.tgz und .zip .
|
--spark-file-uris |
Optional: Cloud Storage-URIs von Dateien, die in das Arbeitsverzeichnis jedes Executors abgelegt werden sollen. |
--batch-executors-count |
Optional: Die Gesamtzahl der Job-Executors. Der Standardwert liegt bei 2. |
--batch-max-executors-count |
Optional: Die maximale Anzahl von konfigurierbaren Executors. Der Standardwert ist 1.000. Wenn batch-max-executors-count größer als batch-executors-count ist, aktiviert Dataplex Autoscaling.
|
--container-image-java-jars |
Optional: Eine Liste der Java-JARS, die dem Klassenpfad hinzugefügt werden sollen. Eine gültige Eingabe enthält Cloud Storage-URIs zu JAR-Binärdateien. Beispiel: gs://bucket-name/my/path/to/file.jar .
|
--container-image-properties |
Optional: Property-Schlüssel im Format prefix:property .Beispiel: core:hadoop.tmp.dir .Weitere Informationen finden Sie unter Clusterattribute. |
--vpc-network-tags |
Optional: Eine Liste von Netzwerk-Tags, die auf den Job angewendet werden sollen. |
--vpc-network-name |
Optional: Das Virtual Private Cloud-Netzwerk, in dem der Job ausgeführt wird. Standardmäßig verwendet Dataplex im Projekt das VPC-Netzwerk Default . Sie dürfen nur --vpc-network-name oder --vpc-sub-network-name verwenden.
|
--vpc-sub-network-name |
Optional: Das VPC-Subnetzwerk, in dem der Job ausgeführt wird.
Du darfst nur --vpc-sub-network-name oder --vpc-network-name verwenden.
|
--trigger-type |
Triggertyp der vom Nutzer angegebenen Aufgabe. Werte müssen einer der folgenden Werte sein:ON_DEMAND : Die Aufgabe wird kurz nach der Aufgabenerstellung einmal ausgeführt.RECURRING : Die Aufgabe wird regelmäßig nach einem Zeitplan ausgeführt.
|
--trigger-start-time |
Optional: Der Zeitpunkt der ersten Ausführung der Aufgabe. Das Format ist „{year}-{month}-{day}T{hour}:{min}:{sec}Z`, wobei die Zeitzone UTC lautet. Mit „2017-01-15T01:30:00Z“ wird beispielsweise am 15. Januar 2017 01:30 UTC codiert. Wenn dieser Wert nicht angegeben ist, wird die Aufgabe nach dem Senden ausgeführt, wenn der Triggertyp ON_DEMAND ist. Wenn der Triggertyp RECURRING ist, wird die Aufgabe ausgeführt.
|
--trigger-disabled |
Optional: Verhindert die Ausführung der Aufgabe. Die bereits ausgeführten Aufgaben werden durch diesen Parameter nicht abgebrochen. Stattdessen werden die RECURRING -Aufgaben vorübergehend deaktiviert.
|
--trigger-max-retires |
Optional: Die Anzahl der Wiederholungsversuche, bevor sie abgebrochen wird. Setzen Sie den Wert auf null, um nie zu versuchen, eine fehlgeschlagene Aufgabe zu wiederholen. |
--trigger-schedule |
Cron-Zeitplan zum regelmäßigen Ausführen von Aufgaben. |
--description |
Optional: Beschreibung der Aufgabe. |
--display-name |
Optional: Anzeigename der Aufgabe. |
--labels |
Optional: Liste der hinzuzufügenden Label-KEY=VALUE -Paare. |
--execution-args |
Optional: Die Argumente, die an die Aufgabe übergeben werden sollen. Argumente können eine Mischung aus Schlüssel/Wert-Paaren sein. Sie können eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren als Ausführungsargumente übergeben. Wenn Sie Positionsargumente übergeben möchten, setzen Sie den Schlüssel auf TASK_ARGS und setzen Sie den Wert auf einen kommagetrennten String aller Positionsargumente. Informationen zum Verwenden eines anderen Trennzeichens als Komma finden Sie unter Escapezeichen.Wenn key-value und die Positionsargumente zusammen weitergegeben werden, wird TASK_ARGS als letztes Argument übergeben.
|
--execution-service-account |
Dienstkonto zum Ausführen einer Aufgabe. |
--max-job-execution-lifetime |
Optional: Die maximale Dauer vor Jobausführung. |
--container-image |
Optional: Benutzerdefiniertes Container-Image für die Joblaufzeitumgebung. Wenn Sie nichts angeben, wird ein Container-Standard-Image verwendet. |
--kms-key |
Optional: Der Cloud KMS-Schlüssel für die Verschlüsselung im folgenden Format:projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}
|
Beispiel für 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>
Beispiel für 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
Verwenden Sie den APIs Explorer, um eine Aufgabe zu erstellen.
Spark SQL-Aufgabe planen
gcloud
Führen Sie zum Planen einer Spark SQL-Aufgabe denselben gcloud CLI-Befehl wie in der Aufgabe Spark (Java oder Python) planen mit den folgenden zusätzlichen Parametern aus:
Parameter | Beschreibung |
---|---|
--spark-sql-script |
SQL-Abfragetext Entweder spark-sql-script oder spark-sql-script-file ist erforderlich. |
--spark-sql-script-file |
Ein Verweis auf eine Abfragedatei. Dieser Wert kann der Cloud Storage-URI der Abfragedatei oder ein Pfad zum SQL-Skriptinhalt sein.
Entweder spark-sql-script oder spark-sql-script-file ist erforderlich. |
--execution-args |
Bei Spark SQL-Aufgaben sind die folgenden Argumente obligatorisch und müssen als Positionsargumente übergeben werden:--output_location, <GCS uri of the output directory> --output_format, <output file format> .Unterstützte Formate: CSV, JSON, Parquet und 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
Verwenden Sie den APIs Explorer, um eine Aufgabe zu erstellen.
Ihre Aufgabe überwachen
Console
Rufen Sie in der Google Cloud Console die Dataplex-Seite auf:
Rufen Sie die Ansicht Process (Prozess) auf.
Der Tab Aufgaben enthält eine Liste von Aufgaben, die nach Aufgabenvorlagentypen gefiltert sind.
Klicken Sie in der Spalte Name auf eine Aufgabe, die Sie aufrufen möchten.
Klicken Sie auf die Job-ID der Aufgabe, die Sie aufrufen möchten.
Die Dataproc-Seite wird in der Google Cloud Console geöffnet, auf der Sie die Monitoring- und Ausgabedetails ansehen können.
gcloud
In der folgenden Tabelle sind die gcloud CLI-Befehle zum Monitoring Ihrer Aufgaben aufgeführt.
Aktion | gcloud CLI-Befehl |
---|---|
Aufgaben auflisten | gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id> |
Aufgabendetails ansehen | gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Jobs einer Aufgabe auflisten | gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> |
Jobdetails ansehen | gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
Dataplex führt Jobs auf Dataproc Serverless (Batches) aus. So rufen Sie die Ausführungslogs eines Dataplex-Jobs auf:
Rufen Sie die Dataproc-Job-ID für serverloses Batches ab. Führen Sie folgenden Befehl aus:
gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
Sehen Sie sich die Protokolle an. Führen Sie den folgenden Befehl mit der Job-ID aus, die Sie mit dem vorherigen Befehl erhalten haben:
gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
REST
Verwenden Sie den APIs Explorer, um eine Aufgabe oder einen Job get
oder list
zu senden.
Zeitplan verwalten
In der Google Cloud Console können Sie in Dataplex den Zeitplan einer Aufgabe bearbeiten, eine Aufgabe löschen oder einen laufenden Job abbrechen. In der folgenden Tabelle sind die gcloud CLI-Befehle für diese Aktionen aufgeführt.
Aktion | gcloud CLI-Befehl |
---|---|
Aufgabenzeitplan bearbeiten | gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id> |
Aufgaben löschen | gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Job abbrechen | gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
Nächste Schritte
- Siehe Dataproc-Vorlagen.
- Probieren Sie eine vordefinierte Vorlage aus, um Daten schrittweise aus Dataplex Cloud Storage-Assets in BigQuery zu verschieben.
- Weitere Informationen finden Sie unter Warnungen und Benachrichtigungen für Dataplex-Aufgaben einrichten.