Benutzerdefinierte Spark- und Spark SQL-Aufgaben planen

Dataplex unterstützt die Planung der Ausführung benutzerdefinierten Codes, entweder als einmalige Ausführung, nach einem regelmäßigen Zeitplan oder auf Anfrage. On-Demand ist in der Vorabversion und nur über die API verfügbar. Sie können Transformationen von Kundendaten mit Spark (Java), PySpark (eingeschränkt auf Spark-Version 3.2) oder Spark SQL planen. Dataplex führt den Code mit serverloser Spark-Verarbeitung und einem integrierten serverlosen Scheduler aus.

Terminologie

Aufgabe
Eine Dataplex-Aufgabe stellt die Arbeit dar, die Sie von Dataplex nach einem Zeitplan ausführen lassen möchten. Sie umfassen Ihren Code, Ihre Parameter und den Zeitplan.
Job

Ein Job stellt eine einzelne Ausführung einer Dataplex-Aufgabe dar. Wenn eine Aufgabe beispielsweise täglich ausgeführt werden soll, erstellt Dataplex jeden Tag einen Job.

Bei Jobs, die am oder nach dem 10. Mai 2023 erstellt wurden, wird im Feld Trigger der Typ des Ausführungstriggers des Jobs angezeigt.

Es gibt die folgenden Triggertypen für die Jobausführung:

  • 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
In diesem Modus wird die Aufgabe nur einmal ausgeführt. Sie können die Ausführung sofort oder zu einem festgelegten Zeitpunkt in der Zukunft starten. Wenn Sie die Aufgabe sofort ausführen, kann es dennoch bis zu zwei Minuten dauern, bis die Ausführung beginnt.
Nach einem Zeitplan ausführen
Mit diesem Modus können Sie die Aufgabe wiederholt ausführen. Unterstützte Wiederholungen sind „Täglich“, „Wöchentlich“, „Monatlich“ oder „Benutzerdefiniert“.
On demand ausführen

In diesem Modus können Sie eine zuvor erstellte Aufgabe auf Anfrage ausführen. Der Modus „On-Demand ausführen“ wird nur von der RunTask API unterstützt. Wenn Ihr Job auf Abruf ausgeführt wird, verwendet Dataplex vorhandene Parameter, um einen Job zu erstellen. Sie können die ExecutionSpec-Argumente und die Labels angeben, um den Job auszuführen.

Hinweis

  1. die Dataproc API aktivieren

    Dataproc API aktivieren

  2. Aktivieren Sie den privaten Google-Zugriff für Ihr Netzwerk und Subnetzwerk. Aktivieren Sie den privaten Google-Zugriff für das Netzwerk, das Sie für Dataplex-Aufgaben verwenden. Wenn Sie beim Erstellen der Dataplex-Aufgabe kein Netzwerk oder Subnetzwerk angeben, verwendet Dataplex das Standard-Subnetzwerk. Sie müssen dann den privaten Google-Zugriff für das Standard-Subnetzwerk aktivieren.

  3. Erstellen Sie ein Dienstkonto. Für die Planung von Dataplex-Aufgaben ist ein Dienstkonto erforderlich. Das Dienstkonto muss dem Projekt zugewiesen sein, in dem Sie die Aufgaben ausführen. Das Dienstkonto muss die folgenden Berechtigungen haben:

    • Zugriff auf die verarbeiteten BigQuery- und Cloud Storage-Daten.

    • Berechtigung Dataproc-Arbeiterrolle für das Projekt, in dem Sie die Aufgabe ausführen.

    • Wenn die Aufgabe die dem Data Lake zugeordnete Dataproc Metastore-Instanz lesen oder aktualisieren muss, benötigt das Dienstkonto die Rolle Dataproc Metastore-Betrachter oder ‑Bearbeiter. Diese Rolle muss in dem Projekt gewährt werden, in dem der Dataplex-Datensee eingerichtet ist.

    • Wenn es sich bei der Aufgabe um einen Spark SQL-Job handelt, müssen Sie dem Dienstkonto die Rolle „Dataplex-Entwickler“ zuweisen. Diese Rolle muss im Projekt gewährt werden, in dem der Dataplex-Lake eingerichtet ist.

    • Wenn es sich bei der Aufgabe um einen Spark SQL-Job handelt, benötigen Sie Cloud Storage-Administratorberechtigungen für den Bucket, in den die Ergebnisse geschrieben werden.

    • Damit Sie Spark SQL- und benutzerdefinierte Spark-Aufgaben planen und ausführen können, müssen Sie Ihrem Dienstkonto die IAM-Rollen „Dataplex-Metadatenleser“ (roles/dataplex.metadataReader), „Dataplex-Betrachter“ (roles/dataplex.viewer) und „Dataproc-Metastore-Metadatennutzer“ (roles/metastore.metadataUser) zuweisen.

  4. Weisen Sie dem Nutzer, der den Job einreicht, die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) für das Dienstkonto zu. Eine Anleitung finden Sie unter Zugriff auf Dienstkonten verwalten.

  5. Gewähren Sie dem Data Lake-Dienstkonto Berechtigungen zur Verwendung des Dienstkontos. Sie finden das Dataplex-Lake-Dienstkonto auf der Seite Details zum Data Lake in der Google Cloud Console.

  6. Wenn sich das Projekt mit Ihrem Data Lake in einem anderen Projekt als dem Projekt befindet, in dem die Aufgabe ausgeführt werden soll, gewähren Sie dem Dienstkonto für den Data Lake die Rolle Dataproc Editor für das Projekt, in dem Sie die Aufgabe ausführen.

  7. Platzieren Sie die erforderlichen Codeartefakte (JAR-, Python- oder SQL-Scriptdateien) oder archivierten Dateien (.jar, .tar, .tar.gz, .tgz, .zip) in einem Cloud Storage-Pfad.

  8. Das Dienstkonto muss die erforderliche storage.objects.get-Berechtigung für den Cloud Storage-Bucket haben, in dem diese Codeartefakte gespeichert sind.

Spark-Aufgabe (Java oder Python) planen

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Dataplex“ auf.

    Zu Dataplex

  2. Rufen Sie die Ansicht Prozess auf.

  3. Klicken Sie auf Aufgabe erstellen.

  4. Klicken Sie unter Benutzerdefinierte Spark-Aufgabe erstellen auf Aufgabe erstellen.

  5. Wählen Sie einen Dataplex-Lake aus.

  6. Geben Sie einen Aufgabennamen an.

  7. Erstellen Sie eine ID für Ihre Aufgabe.

  8. Wählen Sie im Abschnitt Task-Konfiguration unter Typ die Option Spark oder PySpark aus.

  9. Geben Sie die entsprechenden Argumente ein.

  10. Geben Sie im Feld Dienstkonto ein Nutzerdienstkonto ein, mit dem Ihre benutzerdefinierte Spark-Aufgabe ausgeführt werden kann.

  11. Klicken Sie auf Weiter.

  12. Optional: Zeitplan festlegen: Wählen Sie Einmal ausführen oder Wiederholen aus. Füllen Sie die Pflichtfelder aus.

  13. Klicken Sie auf Weiter.

  14. Optional: Ressourcen anpassen und Zusätzliche Einstellungen hinzufügen

  15. Klicken Sie auf Erstellen.

gcloud

Sie können eine Spark-Aufgabe (Java / Python) mit dem Befehl „gcloud“ 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 Speicherort des Dataplex-Dienstes.
--spark-main-class Die Hauptklasse des Treibers. Die jar-Datei mit der Klasse muss sich im Standardverzeichnis CLASSPATH befinden.
--spark-main-jar-file-uri Der Cloud Storage-URI der jar-Datei, 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 im Arbeitsverzeichnis jedes Executors abgelegt werden sollen.
--batch-executors-count Optional: Die Gesamtzahl der Jobausführer. Der Standardwert liegt bei 2.
--batch-max-executors-count Optional: Die maximale Anzahl konfigurierbarer Executors. Der Standardwert ist 1.000. Wenn batch-max-executors-count größer als batch-executors-count ist, wird in Dataplex das Autoscaling aktiviert.
--container-image-java-jars Optional: Eine Liste von Java-JAR-Dateien, die dem Pfad hinzugefügt werden sollen. Zu den gültigen Eingaben gehören Cloud Storage-URIs zu Jar-Binärdateien.
Beispiel: gs://bucket-name/my/path/to/file.jar.
--container-image-properties Optional: Property-Schlüssel im prefix:property-Format
Beispiel: core:hadoop.tmp.dir.
Weitere Informationen finden Sie unter Clusterattribute.
--vpc-network-tags Optional: Eine Liste der 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 das VPC-Netzwerk Default im Projekt.
Sie müssen nur eine der beiden Optionen --vpc-network-name oder --vpc-sub-network-name verwenden.
--vpc-sub-network-name Optional: Das VPC-Subnetzwerk, in dem der Job ausgeführt wird.
Sie müssen nur eine der beiden Optionen --vpc-sub-network-name oder --vpc-network-name verwenden.
--trigger-type Triggertyp der vom Nutzer angegebenen Aufgabe. Folgende Werte sind zulässig:
ON_DEMAND – Die Aufgabe wird kurz nach der Erstellung einmal ausgeführt.
RECURRING: Die Aufgabe wird regelmäßig nach einem Zeitplan ausgeführt.
--trigger-start-time Optional: Die Uhrzeit der ersten Ausführung der Aufgabe. Das Format lautet {year}-{month}-{day}T{hour}:{min}:{sec}Z, wobei Z für die Zeitzone UTC steht. Beispiel: „2017-01-15T01:30:00Z“ steht für den 15. Januar 2017, 01:30 Uhr UTC. Wenn dieser Wert nicht angegeben ist, wird die Aufgabe nach dem Einreichen ausgeführt, wenn der Triggertyp ON_DEMAND ist, oder gemäß dem angegebenen Zeitplan, wenn der Triggertyp RECURRING ist.
--trigger-disabled Optional: Verhindert die Ausführung der Aufgabe. Mit diesem Parameter werden die bereits laufenden Aufgaben nicht abgebrochen, sondern die RECURRING-Aufgaben werden vorübergehend deaktiviert.
--trigger-max-retires Optional: Die Anzahl der Wiederholungsversuche, bevor der Vorgang abgebrochen wird. Legen Sie den Wert auf „0“, damit eine fehlgeschlagene Aufgabe nie wiederholt wird.
--trigger-schedule Cron-Zeitplan für die regelmäßige Ausführung 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: 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, legen Sie den Schlüssel auf TASK_ARGS und den Wert auf einen kommagetrennten String aller Positionsargumente fest. Wenn Sie ein anderes Trennzeichen als ein Komma verwenden möchten, lesen Sie den Hilfeartikel Escaping.
Wenn key-value und Positionsargumente zusammen übergeben werden, wird TASK_ARGS als letztes Argument übergeben.
--execution-service-account Dienstkonto, das zum Ausführen einer Aufgabe verwendet werden soll.
--max-job-execution-lifetime Optional: Die maximale Dauer, nach der die Jobausführung abläuft.
--container-image Optional: Benutzerdefiniertes Container-Image für die Laufzeitumgebung des Jobs. Wenn keine Angabe erfolgt, wird ein Standardcontainer-Image verwendet.
--kms-key Optional: Der Cloud KMS-Schlüssel, der für die Verschlüsselung verwendet werden soll, im Format:
projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}

Java-Beispiel:

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>

PySpark-Beispiel:

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

Um eine Spark SQL-Aufgabe zu planen, führen Sie denselben gcloud CLI-Befehl wie unter Spark-Aufgabe (Java oder Python) planen mit den folgenden zusätzlichen Parametern aus:

Parameter Beschreibung
--spark-sql-script Der SQL-Abfragetext. 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 der Pfad zum Inhalt des SQL-Scripts sein. spark-sql-script oder spark-sql-script-file ist erforderlich.
--execution-args Für 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 sind CSV-Dateien, JSON-Dateien, Parquet-Dateien und ORC-Dateien.
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.

Aufgabe im Blick behalten

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Dataplex“ auf:

    Zu Dataplex

  2. Rufen Sie die Ansicht Prozess auf.

  3. Auf dem Tab Aufgaben finden Sie eine Liste von Aufgaben, die nach Aufgabenvorlagentypen gefiltert ist.

  4. Klicken Sie in der Spalte Name auf eine Aufgabe, die Sie aufrufen möchten.

  5. Klicken Sie auf die Job-ID der Aufgabe, die Sie aufrufen möchten.

    Die Seite „Dataproc“ wird in der Google Cloud Console geöffnet. Dort können Sie sich die Monitoring- und Ausgabedetails ansehen.

gcloud

In der folgenden Tabelle sind die gcloud CLI-Befehle zum Überwachen Ihrer Aufgaben aufgeführt.

Aktion gcloud CLI-Befehl
Aufgaben auflisten gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id>
Aufgabendetails aufrufen 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 aufrufen gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>

Dataplex führt Jobs in Dataproc Serverless (Batches) aus. So rufen Sie die Ausführungsprotokolle eines Dataplex-Jobs auf:

  1. Rufen Sie die Job-ID für Dataproc Serverless (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>
    
  2. Rufen Sie die Protokolle auf. Führen Sie den folgenden Befehl mit der Job-ID aus, die Sie durch Ausführen des vorherigen Befehls erhalten haben:

    gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
    

REST

Wenn Sie eine Aufgabe oder einen Job get oder list möchten, verwenden Sie den APIs Explorer.

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