Benutzerdefinierte Spark- und Spark SQL-Aufgaben planen

Dataplex unterstützt die Planung der Ausführung von benutzerdefiniertem Code, entweder einmalig, regelmäßig oder on demand. Die On-Demand-Funktion befindet sich in der Vorabversion 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 mit serverloser 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. Es enthält Ihren Code, Ihre Parameter und den Zeitplan.
Job

Ein Job stellt eine einzelne Ausführung einer Dataplex-Aufgabe dar. Wenn beispielsweise eine Aufgabe 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 Ausführungstriggertyp des Jobs angezeigt.

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 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 führen Sie die Aufgabe nur einmal aus. Sie können sie sofort oder zu einer bestimmten Zeit in der Zukunft ausführen. Wenn Sie die Aufgabe sofort ausführen, kann es noch bis zu zwei Minuten dauern, bis die Ausführung beginnt.
Nach einem Zeitplan ausführen
In diesem Modus wird die Aufgabe wiederholt. 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. Der On-Demand-Ausführungsmodus wird nur von der RunTask API unterstützt. Wenn ein Job bei Bedarf ausgeführt wird, verwendet Dataplex vorhandene Parameter, um einen Job zu erstellen. Sie können die ExecutionSpec-Argumente und die Labels zum Ausführen des Jobs angeben.

Hinweise

  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 kein Netzwerk oder Subnetzwerk angeben, verwendet Dataplex das Standard-Subnetzwerk. In diesem Fall müssen Sie 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 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 an den Lake angehängte Dataproc Metastore-Instanz lesen oder aktualisieren muss, benötigt das Dienstkonto die Rolle Dataproc Metastore Viewer oder Editor. Diese Rolle muss in dem Projekt gewährt werden, in dem der Dataplex-Lake 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-Lake 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 benötigen Sie die IAM-Rollen Dataplex-Metadatenleser (roles/dataplex.metadataReader), Dataplex-Betrachter (roles/dataplex.viewer) und Dataproc Metastore-Metadatennutzer (roles/metastore.metadataUser) in Ihrem Dienstkonto.

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

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

  6. Wenn sich das Projekt, das Ihren Dataplex-Lake enthält, von dem Projekt unterscheidet, in dem die Aufgabe ausgeführt werden soll, weisen Sie dem Dataplex-Lake-Dienstkonto die Rolle „Dataproc-Bearbeiter“ 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. Prüfen Sie, ob 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 Seite „Dataplex“ auf:

    Zu Dataplex

  2. Rufen Sie die Ansicht Prozess auf.

  3. Klicken Sie auf Create Task (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 die Aufgabe.

  8. Wählen Sie im Abschnitt Aufgabenkonfiguration für 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 dem gcloud CLI-Befehl 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 von Fahrern. Die Datei jar, die die Klasse enthält, muss sich im Standardformat 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 gesetzt 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 das Autoscaling.
--container-image-java-jars Optional: Eine Liste von Java-JARS, die dem Klassenpfad hinzugefügt werden sollen. Gültige Eingaben sind Cloud Storage-URIs für Jar-Binärdateien.
Beispiel: gs://bucket-name/my/path/to/file.jar.
--container-image-properties Optional: Attributschlüssel, die im Format prefix:property angegeben werden.
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 innerhalb des Projekts das VPC-Netzwerk mit dem Namen 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.
Sie dürfen nur --vpc-sub-network-name oder --vpc-network-name verwenden.
--trigger-type Triggertyp der benutzerdefinierten Aufgabe. Folgende Werte sind zulässig:
ON_DEMAND: Die Aufgabe wird einmal kurz nach der Aufgabenerstellung 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 ist. Beispiel: „2017-01-15T01:30:00Z“ codiert am 15. Januar 2017 01:30 UTC. Ist dieser Wert nicht angegeben, wird die Aufgabe nach dem Senden ausgeführt, wenn der Triggertyp ON_DEMAND ist, bzw. nach dem angegebenen Zeitplan, wenn der Triggertyp RECURRING ist.
--trigger-disabled Optional: Verhindert, dass die Aufgabe ausgeführt wird. Durch diesen Parameter werden bereits ausgeführte Aufgaben nicht abgebrochen, sondern RECURRING-Aufgaben vorübergehend deaktiviert.
--trigger-max-retires Optional: Anzahl der Wiederholungsversuche bis zum Abbruch. Setzen Sie den Wert auf null, 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: 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. Setzen Sie den Schlüssel auf TASK_ARGS und geben Sie als Wert einen durch Kommas getrennten String aller Positionsargumente an, um Positionsargumente zu übergeben. Wenn Sie ein anderes Trennzeichen als ein Komma verwenden möchten, lesen Sie den Abschnitt Escaping.
Wenn key-value- und Positionsargumente zusammen übergeben 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 bis zum Ablauf der Jobausführung.
--container-image Optional: Benutzerdefiniertes Container-Image für die Joblaufzeitumgebung. Wenn keine Angabe erfolgt, wird ein Standard-Container-Image verwendet.
--kms-key Optional: Der Cloud KMS-Schlüssel für die Verschlüsselung 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 APIs Explorer, um eine Aufgabe zu erstellen.

Spark SQL-Aufgabe planen

gcloud

Zum Planen einer Spark-SQL-Aufgabe führen Sie den gleichen 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-Skripts 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-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

Verwenden Sie APIs Explorer, um eine Aufgabe zu erstellen.

Aufgaben 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 Tasks finden Sie eine Liste von Aufgaben, gefiltert nach Aufgabenvorlagentypen.

  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 Überwachen 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 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 beim Ausführen des vorherigen Befehls erhalten haben:

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

REST

Für get oder list für eine Aufgabe oder einen Job verwenden Sie 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