Benutzerdefinierte Spark- und Spark SQL-Aufgaben planen

Dataplex unterstützt die Planung der Ausführung von benutzerdefiniertem Code, entweder als einmalig, regelmäßig oder on demand. On-Demand ist in Vorschau und ist nur über der API erstellen. Sie können Transformationen von Kundendaten mit Spark (Java) PySpark (auf Spark Version 3.2 beschränkt) oder Spark SQL. Dataplex den Code mit serverloser Spark-Verarbeitung und einem integrierten serverlosen Planer.

Terminologie

Aufgabe
Eine Dataplex-Aufgabe stellt die gewünschte Arbeit dar Dataplex nach einem Zeitplan ausführen soll. Es enthält Ihren Code, Ihre Parameter und den Zeitplan.
Job

Ein Job stellt eine einzelne Ausführung einer Dataplex-Aufgabe dar. Für Wenn z. B. eine Aufgabe für eine tägliche Ausführung geplant ist, jeden Tag einen Job erstellen.

Für Jobs, die am oder nach dem 10. Mai 2023 erstellt wurden, wird im Feld Trigger der Wert den Ausführungstrigger-Typ des Jobs.

Im Folgenden sind die Triggertypen für die Jobausführung aufgeführt:

  • RUN_REQUEST Gibt an, dass der Job aufgrund des Aufrufs der RunTask API verwenden.

  • TASK_CONFIG: Gibt an, dass der Job aufgrund des TriggerSpec Konfiguration der Aufgabe.

Planungsmodi

Dataplex unterstützt die folgenden Planungsmodi:

Einmal ausführen
Mit diesem Modus können Sie eine Aufgabe nur einmal ausführen. Sie können ihn ausführen, sofort oder zu einem festgelegten Zeitpunkt in der Zukunft. Wenn Sie die Task ausführen sofort beginnen, kann es 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

Verwenden Sie diesen Modus, um eine zuvor erstellte Aufgabe bei Bedarf auszuführen. Ausführung nach Bedarf wird nur vom RunTask API. Wenn Ihr Job bei Bedarf ausgeführt wird, verwendet Dataplex vorhandene Parameter um einen Job zu erstellen. Sie können den ExecutionSpec angeben. und die Labels zum Ausführen des Jobs.

Hinweise

  1. die Dataproc API aktivieren

    Dataproc API aktivieren

  2. Privaten Google-Zugriff aktivieren für Ihr Netzwerk und Subnetzwerk. Privaten Google-Zugriff im Netzwerk aktivieren die Sie mit Dataplex-Aufgaben verwenden. Wenn Sie kein Netzwerk angeben oder ein Subnetzwerk beim Erstellen der Dataplex-Aufgabe Dataplex verwendet das Standard-Subnetzwerk und Sie müssen Folgendes aktivieren Privater Google-Zugriff für das Standard-Subnetzwerk.

  3. Erstellen Sie ein Dienstkonto. A Dienstkonto ist erforderlich, um Dataplex-Aufgaben zu planen. 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 Cloud Storage-Daten, die wird verarbeitet.

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

    • Wenn die Aufgabe Dataproc lesen oder aktualisieren muss mit dem Lake verknüpft ist, benötigt das Dienstkonto den Dataproc Metastore Viewer oder Bearbeiter haben. Diese Rolle muss in dem Projekt gewährt werden, in dem Dataplex Lake eingerichtet ist.

    • Wenn es sich bei der Aufgabe um einen Spark SQL-Job handelt, müssen Sie dem Dienstkonto die Dataplex-Entwicklerrolle. Diese Rolle muss im Projekt, in dem der Dataplex-Lake eingerichtet ist.

    • Wenn die Aufgabe ein Spark SQL-Job ist, benötigen Sie einen Cloud Storage-Administrator Berechtigungen für den Bucket, in den die Ergebnisse geschrieben werden.

    • Zum Planen und Ausführen von Spark SQL- und benutzerdefinierten Spark-Aufgaben benötigen Sie folgende Berechtigungen: Dataplex-Metadatenleser (roles/dataplex.metadataReader) Dataplex-Betrachter (roles/dataplex.viewer), und Dataproc Metastore-Metadatennutzer (roles/metastore.metadataUser) IAM-Rollen für Ihr Dienstkonto.

  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 zur Verwendung des Dienstkonto. Sie finden den Dataplex-Lake-Dienst. auf der Seite Lake Details der Google Cloud Console.

  6. Wenn sich das Projekt mit Ihrem Dataplex-Lake unterscheidet aus dem Projekt, in dem die Aufgabe ausgeführt werden soll, Dataplex Lake-Dienstkonto Dataproc-Bearbeiter in dem Sie die Aufgabe ausführen.

  7. Erforderliche Codeartefakte (JARs, Python oder SQL-Skriptdateien) einfügen oder archivierte Dateien (.jar, .tar, .tar.gz, .tgz, .zip) in einem Cloud Storage-Pfad.

  8. Prüfen Sie, ob das Dienstkonto die erforderlichen storage.objects.get hat Berechtigung für den Cloud Storage-Bucket, in dem dieser Code gespeichert ist Artefakte.

Spark-Task (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-Lake aus.

  6. Geben Sie einen Namen für die Aufgabe an.

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

  8. Wählen Sie im Abschnitt Task configuration (Aufgabenkonfiguration) für Type (Typ) die Option Spark oder PySpark:

  9. Geben Sie die relevanten Argumente ein.

  10. Geben Sie im Feld Dienstkonto ein Nutzerdienstkonto ein, das von Ihrem benutzerdefinierten Spark-Task, die 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 das Feld Pflichtfelder.

  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 für verwenden:

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 enthält, muss sich die Klasse im Standard-CLASSPATH befinden.
--spark-main-jar-file-uri Der Cloud Storage-URI der Datei jar, die den Inhalt der Hauptklasse.
--spark-archive-uris Optional: Cloud Storage-URIs von Archiven, in die extrahiert werden sollen Arbeitsverzeichnis jedes Executors. Unterstützte Dateitypen: .jar, .tar, .tar.gz .tgz und .zip.
--spark-file-uris Optional: Cloud Storage-URIs von Dateien, die im Arbeitsverzeichnis jedes Executors.
--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. Standardeinstellung Wert 1.000 beträgt. Wenn batch-max-executors-count größer als batch-executors-count, dann aktiviert Dataplex Autoscaling.
--container-image-java-jars Optional: Eine Liste der Java-JARS, die dem Klassenpfad hinzugefügt werden sollen. 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: Attributschlüssel, die in einem prefix:property angegeben werden 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. Von Standardmäßig verwendet Dataplex das VPC-Netzwerk im Projekt mit dem Namen Default.
Sie dürfen nur eines der folgenden Formate verwenden: --vpc-network-name oder --vpc-sub-network-name.
--vpc-sub-network-name Optional: Das VPC-Subnetzwerk, in dem der Job ausgeführt wird.
Sie dürfen nur eine der folgenden Optionen verwenden: --vpc-sub-network-name oder --vpc-network-name.
--trigger-type Triggertyp der benutzerdefinierten Aufgabe. Folgende Werte sind zulässig:
ON_DEMAND: Die Aufgabe wird kurz nach der Aufgabe einmal ausgeführt. Erstellung.
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 koordiniert. Beispiel: „2017-01-15T01:30:00Z“ codiert 01:30 UTC auf 15. Januar 2017. Wenn dieser Wert nicht angegeben ist, wird die Task ausgeführt. nach dem Senden, wenn der Triggertyp ON_DEMAND ist, oder nach dem angegebenen Zeitplan, wenn der Triggertyp ist RECURRING.
--trigger-disabled Optional: Verhindert die Ausführung der Aufgabe. Dieser Parameter muss die bereits ausgeführten Aufgaben abbrechen, sondern den RECURRING Aufgaben.
--trigger-max-retires Optional: Die Anzahl der Wiederholungsversuche, bevor der Vorgang abgebrochen wird. Wert festlegen auf null, damit eine fehlgeschlagene Aufgabe nie wiederholt wird.
--trigger-schedule Cron-Zeitplan für Aufgaben regelmäßig auszuführen.
--description Optional: Beschreibung der Aufgabe.
--display-name Optional: Anzeigename der Aufgabe.
--labels Optional: Liste der hinzuzufügenden KEY=VALUE-Labelpaare.
--execution-args Optional: Die Argumente, die an die Aufgabe übergeben werden sollen. Argumente können eine Mischung aus Schlüssel/Wert-Paare. Sie können eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren als Ausführungsargumenten. Um Positionsargumente zu übergeben, setzen Sie den Schlüssel auf TASK_ARGS und legen Sie den Wert auf einen kommagetrennten String von alle Positionsargumente enthält. Wenn Sie ein anderes Trennzeichen als ein Komma verwenden möchten, verweisen Sie auf bis zum Escaping.
Falls key-value- und Positionsargumente übergeben werden zusammen verwenden, wird TASK_ARGS als letztes Argument übergeben.
--execution-service-account Dienstkonto zum Ausführen einer Aufgabe.
--max-job-execution-lifetime Optional: Die maximale Dauer, bevor die Jobausführung abläuft.
--container-image Optional: Benutzerdefiniertes Container-Image für die Joblaufzeitumgebung. Wenn nicht angegeben ist, wird ein Standard-Container-Image verwendet.
--kms-key Optional: Der für die Verschlüsselung zu verwendende Cloud KMS-Schlüssel 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

So erstellen Sie eine Aufgabe: APIs Explorer verwenden.

Spark SQL-Task planen

gcloud

Führen Sie zum Planen einer Spark SQL-Aufgabe denselben gcloud CLI-Befehl wie in die Aufgabe Spark-Aufgabe planen (Java oder Python) mit den folgenden zusätzlichen Parametern:

Parameter Beschreibung
--spark-sql-script Der 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 Pfad zum Inhalt des SQL-Skripts. Entweder 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:
--output_location, <GCS uri of the output directory>
--output_format, <output file format>
Unterstützte Formate sind CSV-Datei, JSON-Datei, 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

So erstellen Sie eine Aufgabe: APIs Explorer verwenden.

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. Auf dem Tab Aufgaben finden Sie eine Liste von Aufgaben, die nach Aufgabenvorlagen gefiltert sind. Typen.

  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 ansehen möchten.

    Die Dataproc-Seite wird im Google Cloud Console, in der Sie die Monitoring- und Ausgabedetails ansehen können

gcloud

In der folgenden Tabelle sind die gcloud CLI-Befehle für das Monitoring aufgeführt für Ihre Aufgaben.

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 in Dataproc Serverless aus (Batches). So rufen Sie die Ausführungslogs eines Dataplex-Jobs auf: diese Schritte:

  1. Rufen Sie die Job-ID von 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. Sehen Sie sich die Protokolle an. Führen Sie den folgenden Befehl mit der Job-ID aus, die Sie von dem vorherigen Befehl ausführen:

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

REST

Für eine Aufgabe get oder list oder Job, APIs Explorer verwenden.

Zeitplan verwalten

In der Google Cloud Console in Dataplex können Sie die Aufgaben planen, Aufgaben löschen oder einen laufenden Job abbrechen. In der folgenden Tabelle listet die gcloud CLI-Befehle für diese Aktionen auf.

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