Benutzerdefinierte Spark- und Spark SQL-Aufgaben planen

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 die ExecutionSpec-Argumente und die Labels angeben, die den Job ausführen sollen.

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 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

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

  8. 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

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

    Zu Dataplex

  2. Rufen Sie die Ansicht Process (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-See aus.

  6. Geben Sie einen Aufgabennamen ein.

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

  8. Wählen Sie im Abschnitt Aufgabenkonfiguration als Typ die Option Spark oder PySpark aus.

  9. Geben Sie die relevanten 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 Weitere Einstellungen hinzufügen

  15. 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

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

    Zu Dataplex

  2. Rufen Sie die Ansicht Process (Prozess) auf.

  3. Der Tab Aufgaben enthält eine Liste von Aufgaben, die nach Aufgabenvorlagentypen gefiltert sind.

  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 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:

  1. 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>
    
  2. 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