View a markdown version of this page

Verwenden von Jobparametern in AWS Aufträge zum Kleben - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von Jobparametern in AWS Aufträge zum Kleben

Beim Erstellen eines AWS Glue-Jobs legen Sie einige Standardfelder fest, z. B. Role undWorkerType. Über die Argument-Felder (Auftragsparameter in der Konsole) können Sie zusätzliche Konfigurationsinformationen bereitstellen. In diesen Feldern können Sie AWS Glue-Jobs die in diesem Thema aufgeführten Argumente (Parameter) zur Verfügung stellen.

Weitere Informationen zur AWS Glue Job API finden Sie unterJobs.

Anmerkung

Auftragsargumente haben eine maximale Größenbeschränkung von 260 KB. Eine Validierungsprüfung führt zu einem Fehler, wenn die Argumentgröße größer als 260 KB ist.

Festlegen der Auftragsparameter

Sie können einen Auftrag über die Konsole auf der Registerkarte Job details (Details zur Auftragsausführung) unter der Kopfzeile Job Parameters (Auftragsparameter) konfigurieren. Sie können einen Job auch über die Einstellung „ AWS CLI by“ DefaultArguments oder „Für NonOverridableArguments einen Job“ oder „Einstellung Arguments für eine Auftragsausführung“ konfigurieren. Für den Auftrag festgelegte Argumente werden bei jeder Ausführung des Auftrags übergeben, während bei der Auftragsausführung festgelegte Argumente nur für diese einzelne Ausführung übergeben werden.

Im Folgenden finden Sie beispielsweise die Syntax zum Ausführen eines Auftrags mit --arguments zum Festlegen eines Auftragsparameters.

$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py"'

Zugreifen auf Auftragsparameter

Beim Schreiben von AWS Glue-Skripten möchten Sie möglicherweise auf Job-Parameterwerte zugreifen, um das Verhalten Ihres eigenen Codes zu ändern. In unseren Bibliotheken stellen wir hierfür Hilfsmethoden zur Verfügung. Diese Methoden lösen Parameterwerte der Auftragsausführung auf, die die Parameterwerte des Auftrags überschreiben. Bei der Auflösung von Parametern, die an mehreren Stellen festgelegt wurden, überschreibt Auftrag NonOverridableArguments die Auftragsausführung Arguments, die wiederum Auftrag DefaultArguments überschreibt.

In Python:

In Python-Aufträgen stellen wir eine Funktion mit dem Namen getResolvedParameters bereit. Weitere Informationen finden Sie unter Zugriff auf Parameter mit getResolvedOptions. Die Auftragsparameter sind in der Variablen sys.argv verfügbar.

In Scala:

In Scala-Aufträgen stellen wir ein Objekt mit dem Namen GlueArgParser bereit. Weitere Informationen finden Sie unter AWS GlueScala GlueArgParser APIs. Die Auftragsparameter sind in der Variablen sysArgs verfügbar.

Referenz der Auftragsparameter

AWS Glue erkennt die folgenden Argumentnamen, die Sie verwenden können, um die Skriptumgebung für Ihre Jobs und Jobausführungen einzurichten:

--additional-python-modules

Eine durch Kommas getrennte Liste, die eine Reihe von Python-Paketen darstellt, die installiert werden sollen. Sie können Pakete von PyPI installieren oder eine benutzerdefinierte Verteilung bereitstellen. Ein PyPI-Paketeintrag liegt im Format package==version vor und enthält den PyPI-Namen und die Version Ihres Zielpakets. Ein benutzerdefinierter Verteilungseintrag ist der S3-Pfad zur Verteilung.

Einträge verwenden einen Python-Versionsabgleich, um Paket und Version abzugleichen. Dies bedeutet, dass Sie zwei Gleichheitszeichen verwenden müssen, z. B. ==. Es gibt andere Operatoren für den Versionsabgleich. Weitere Informationen dazu finden Sie unter PEP 440.

Um Optionen für die Modulinstallation an pip3 zu übergeben, verwenden Sie den --python-modules-installer-option-Parameter.

Wie Sie Ihren Job stattdessen in einer virtuellen Python-Umgebung ausführen können, finden Sie unter --python-virtual-env und--python-virtual-env-storage-prefix.

--auto-scale-within-microbatch

Der Standardwert ist "True". Dieser Parameter kann nur für AWS Glue-Streaming-Jobs verwendet werden, die die Streaming-Daten in einer Reihe von Mikrobatches verarbeiten, und Auto Scaling muss aktiviert sein. Wenn dieser Wert auf falsch gesetzt ist, wird der exponentielle gleitende Durchschnitt der Batch-Dauer für abgeschlossene Micro-Batches berechnet. Dieser Wert wird mit der Fenstergröße verglichen, um festzulegen, ob die Anzahl der Ausführer hoch- oder herunterskaliert werden soll. Die Skalierung erfolgt erst, wenn ein Mikro-Batch abgeschlossen ist. Wenn dieser Wert während eines Mikro-Batches auf wahr gesetzt ist, wird er hochskaliert, wenn die Anzahl der Spark-Aufgaben 30 Sekunden lang gleich bleibt oder die aktuelle Batch-Verarbeitung größer als die Fenstergröße ist. Die Anzahl der Ausführer sinkt, wenn ein Ausführer länger als 60 Sekunden im Leerlauf war oder der exponentielle gleitende Durchschnitt der Batch-Dauer niedrig ist.

--class

Die Scala-Klasse, die als Einstiegspunkt für Ihr Scala-Skript dient. Dies gilt nur, wenn die --job-language auf scala eingestellt ist.

--continuous-log-conversionPattern

Gibt ein benutzerdefiniertes Konvertierungsprotokollmuster für einen Auftrag an, der für die kontinuierliche Protokollierung aktiviert ist. Das Konvertierungsmuster gilt nur für Treiberprotokolle und Executor-Protokolle. Er wirkt sich nicht auf den AWS Glue-Fortschrittsbalken aus.

--continuous-log-logGroup

Gibt einen benutzerdefinierten CloudWatch Amazon-Loggruppennamen für einen Job an, für den die kontinuierliche Protokollierung aktiviert ist.

--continuous-log-logStreamPrefix

Gibt ein benutzerdefiniertes CloudWatch Log-Stream-Präfix für einen Job an, für den die kontinuierliche Protokollierung aktiviert ist.

--customer-driver-env-vars und --customer-executor-env-vars

Diese Parameter legen Umgebungsvariablen im Betriebssystem für jeden Worker (Treiber oder Executor) fest. Sie können diese Parameter verwenden, wenn Sie Plattformen und benutzerdefinierte Frameworks auf AWS Glue aufbauen, damit Ihre Benutzer Jobs darauf schreiben können. Wenn Sie diese beiden Flags aktivieren, können Sie unterschiedliche Umgebungsvariablen für den Treiber und den Executor festlegen, ohne dieselbe Logik in das Auftragsskript selbst einfügen zu müssen.

Beispielverwendung

Die folgende Abbildung zeigt ein Beispiel für die Verwendung dieser Parameter:

"—customer-driver-env-vars", "CUSTOMER_KEY1=VAL1,CUSTOMER_KEY2=\"val2,val2 val2\"", "—customer-executor-env-vars", "CUSTOMER_KEY3=VAL3,KEY4=VAL4"

Diese Werte im Auftragsausführungsargument festzulegen, entspricht der Ausführung der folgenden Befehle:

Im Treiber:

  • export CUSTOMER_KEY1=VAL1

  • export CUSTOMER_KEY2="val2,val2 val2"

Im Executor:

  • export CUSTOMER_KEY3=VAL3

Anschließend können Sie im Auftragsskript selbst die Umgebungsvariablen mit os.environ.get("CUSTOMER_KEY1") oder System.getenv("CUSTOMER_KEY1") abrufen.

Erzwungene Syntax

Beachten Sie beim Definieren von Umgebungsvariablen die folgenden Standards:

  • Jeder Schlüssel muss das CUSTOMER_ prefix haben.

    Zum Beispiel: Für "CUSTOMER_KEY3=VAL3,KEY4=VAL4" wird KEY4=VAL4 ignoriert und nicht festgelegt.

  • Jedes Schlüssel/Wert-Paar muss durch ein einzelnes Komma abgegrenzt werden.

    Beispiel: "CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4"

  • Wenn der „Wert“ Leerzeichen oder Kommas enthält, muss er in Anführungszeichen definiert werden.

    Beispiel: CUSTOMER_KEY2=\"val2,val2 val2\"

Diese Syntax ist den Standards für das Festlegen von Bash-Umgebungsvariablen sehr ähnlich.

--datalake-formats

Wird in AWS Glue 3.0 und späteren Versionen unterstützt.

Gibt das zu verwendende Data Lake-Framework an. AWS Glue fügt die erforderlichen JAR-Dateien für die Frameworks, die Sie angeben, in die einclasspath. Weitere Informationen finden Sie unter Verwendung von Data-Lake-Frameworks mit AWS Glue ETL-Jobs.

Sie können einen oder mehrere der folgenden Werte durch Komma getrennt angeben:

  • hudi

  • delta

  • iceberg

Übergeben Sie beispielsweise das folgende Argument, um alle drei Frameworks anzugeben.

'--datalake-formats': 'hudi,delta,iceberg'
--disable-proxy-v2

Deaktivieren Sie den Service-Proxy, um AWS Serviceanrufe an Amazon S3 und AWS Glue CloudWatch, die von Ihrem Skript ausgehen, über Ihre VPC zuzulassen. Weitere Informationen finden Sie unter Konfigurieren von AWS -Aufrufen, um Ihre VPC durchlaufen . Um den Service-Proxy zu deaktivieren, legen Sie den Wert dieses Parameters auf true fest.

--enable-auto-scaling

Aktiviert Auto Scaling und die Abrechnung pro Worker, wenn der Wert auf true eingestellt wird.

--enable-continuous-cloudwatch-log

Ermöglicht die kontinuierliche Protokollierung von AWS Glue-Jobs in Echtzeit. Sie können Apache Spark-Aufgabenprotokolle in Echtzeit in CloudWatch anzeigen.

--enable-continuous-log-filter

Gibt einen Standardfilter (true) oder keinen Filter (false) an, wenn Sie eine Aufgabe erstellen oder bearbeiten, die für die kontinuierliche Protokollierung aktiviert ist. Durch die Auswahl des Standardfilters werden unnütze Apache Spark driver/executor - und Apache Hadoop YARN-Heartbeat-Log-Meldungen entfernt. Wenn Sie keinen Filter auswählen, erhalten Sie alle Protokollmeldungen.

--enable-glue-datacatalog

Ermöglicht es Ihnen, den AWS Glue-Datenkatalog als Apache Spark Hive-Metastore zu verwenden. Bei diesem Parameter handelt es sich um ein Präsenzkennzeichen. Wenn Sie ihn in Ihre Jobkonfiguration aufnehmen, wird die Funktion aktiviert. Übergeben Sie mit diesem Parameter keinen Wert. Um diese Funktion zu deaktivieren, entfernen Sie diesen Parameter vollständig aus Ihrer Jobkonfiguration.

--enable-job-insights

Ermöglicht eine zusätzliche Überwachung der Fehleranalyse mit AWS Glue-Erkenntnissen zur Auftragsausführung. Details hierzu finden Sie unter Überwachen mit AWS Glue Einblicke in die Jobausführung. Der Wert ist standardmäßig auf true festgelegt und Auftragsausführungs-Insights sind aktiviert.

Diese Option ist für AWS Glue Version 2.0 und 3.0 verfügbar.

--enable-lakeformation-fine-grained-access

Ermöglicht eine feinkörnige Zugriffskontrolle für AWS Glue-Jobs. Weitere Informationen finden Sie unter Verwenden AWS Glue mit AWS Lake Formation für eine feinkörnige Zugangskontrolle.

--enable-metrics

Aktiviert die Erfassung von Metriken für die Erstellung von Auftragsprofilen für diese Auftragsausführung. Diese Metriken sind auf der AWS Glue-Konsole und der CloudWatch Amazon-Konsole verfügbar. Bei diesem Parameter handelt es sich um ein präsenzbasiertes Kennzeichen. Wenn Sie ihn in Ihre Jobkonfiguration aufnehmen, wird die Funktion aktiviert. Übergeben Sie mit diesem Parameter keinen Wert. Um diese Funktion zu deaktivieren, entfernen Sie diesen Parameter vollständig aus Ihrer Jobkonfiguration.

--enable-observability-metrics

Aktiviert eine Reihe von Observability-Metriken, um Einblicke in das Geschehen bei jedem Job zu erhalten, der auf der Seite „Job Runs Monitoring“ unter der AWS Glue-Konsole und der Amazon CloudWatch Konsole ausgeführt wird. Um dieses Feature zu aktivieren, setzen Sie den Wert dieses Parameters auf „true“. Um dieses Feature zu deaktivieren, setzen Sie ihn auf false oder entfernen Sie den Parameter aus der Auftragskonfiguration.

--enable-rename-algorithm-v2

Setzt die Version des EMRFS-Umbenennungsalgorithmus auf Version 2. Wenn ein Spark-Auftrag den dynamischen Partitionsüberschreibungsmodus verwendet, besteht die Möglichkeit, dass eine doppelte Partition erstellt wird. Zum Beispiel können Sie eine doppelte Partition wie s3://bucket/table/location/p1=1/p1=1 erhalten. Hier ist P1 die Partition, die überschrieben wird. Das Umbenennen des Algorithmus Version 2 behebt dieses Problem.

Diese Option ist nur in AWS Glue Version 1.0 verfügbar.

--enable-s3-parquet-optimized-committer

Aktiviert den S3-optimized EMRFS-Committer für das Schreiben von Parquet-Daten in Amazon S3. Sie können das parameter/value Paar über die AWS Glue-Konsole bereitstellen, wenn Sie einen AWS Glue-Job erstellen oder aktualisieren. Durch Festlegen des Werts true wird der Committer aktiviert. Standardmäßig ist das Flag in AWS Glue 3.0 aktiviert und in AWS Glue 2.0 deaktiviert.

Weitere Informationen finden Sie unter Den EMRFS S3-optimized Committer verwenden.

--enable-spark-ui

Wenn auf gesetzt, wird die Funktion aktivierttrue, mit der die Spark-Benutzeroberfläche zum Überwachen und Debuggen von AWS Glue-ETL-Jobs verwendet werden kann.

--executor-cores

Anzahl der Spark-Aufgaben, die parallel ausgeführt werden können. Diese Option wird auf AWS Glue 3.0+ unterstützt. Der Wert sollte das Zweifache der Anzahl der vCPUs auf dem Worker-Typ nicht überschreiten, also 8 G.1X, 16 auf G.2X, 32 auf G.4X, 64 auf G.8X, 96 auf G.12X, 128 auf G.16X und 8 auf R.1X, 16 auf R.2X, 32 auf R.4X, 64 auf R.8X. Sie sollten bei der Aktualisierung dieser Konfiguration vorsichtig sein, da sie sich auf die Leistung des Auftrags auswirken könnte. Eine erhöhte Parallelität der Aufgaben führt nämlich zu Speicher- und Festplattendruck sowie zu einer Drosselung der Quell- und Zielsysteme (z. B. würde dies zu mehr gleichzeitigen Verbindungen in Amazon RDS führen).

--extra-files

Die Amazon-S3-Pfade zu zusätzlichen Dateien, z. B. Konfigurationsdateien, die AWS  Glue vor der Ausführung in das Arbeitsverzeichnis Ihres Skripts im Treiberknoten kopiert. Mehrere Werte müssen vollständige Pfade sein, die durch Kommas (,) getrennt werden. Bei dem Wert kann es sich um einzelne Dateien oder Verzeichnisse handeln. Diese Option wird für Python-Shell-Auftragstypen nicht unterstützt.

--extra-jars

Die Amazon S3-Pfade zu zusätzlichen Dateien, die AWS Glue auf den Treiber und die Executoren kopiert. AWS Glue fügt diese Dateien auch dem Java-Klassenpfad hinzu, bevor Ihr Skript ausgeführt wird. Mehrere Werte müssen vollständige Pfade sein, die durch Kommas (,) getrennt werden. Die Dateinamenerweiterung muss nicht .jar sein.

--extra-py-files

Die Amazon S3-Pfade zu zusätzlichen Python-Modulen, die AWS Glue dem Python-Pfad auf dem Treiberknoten hinzufügt, bevor Ihr Skript ausgeführt wird. Mehrere Werte müssen vollständige Pfade sein, die durch Kommas (,) getrennt werden. Es werden nur einzelne Dateien unterstützt, kein Verzeichnispfad.

--job-bookmark-option

Steuert die Darstellung eines Auftrags-Lesezeichens. Die folgenden Optionswerte können festgelegt werden:

‑‑job‑bookmark‑option-Wert Description
job-bookmark-enable Bereits verarbeitete Daten nachverfolgen. Wenn ein Auftrag ausgeführt wird, werden neue Daten seit dem letzten Checkpoint verarbeitet.
job-bookmark-disable Immer das gesamte Dataset verarbeiten. Sie sind für die Verwaltung der Ausgabe früherer Auftragsausführungen verantwortlich.
job-bookmark-pause Verarbeiten inkrementeller Daten seit der letzten erfolgreichen Ausführung oder der Daten in dem durch die folgenden Unteroptionen identifizierten Bereich, ohne den Status des letzten Lesezeichens zu aktualisieren. Sie sind für die Verwaltung der Ausgabe früherer Auftragsläufe verantwortlich. Die beiden Unteroptionen lauten wie folgt:
  • job-bookmark-from <from-value> ist die Ausführungs-ID, die alle Eingaben darstellt, die bis zur letzten erfolgreichen Ausführung vor und einschließlich der angegebenen Ausführungs-ID verarbeitet wurden. Die entsprechende Eingabe wird ignoriert.

  • job-bookmark-to <to-value> ist die Ausführungs-ID, die alle Eingaben darstellt, die bis zur letzten erfolgreichen Ausführung vor und einschließlich der angegebenen Ausführungs-ID verarbeitet wurden. Die entsprechende Eingabe ohne die Eingabe, die durch den <from-value> identifiziert wird, wird von der Aufgabe verarbeitet. Jede Eingabe, die später als diese Eingabe ist, wird auch aus der Verarbeitung ausgeschlossen.

Der Auftrags-Lesezeichenstatus wird nicht aktualisiert, wenn dieser Optionssatz angegeben wird.

Die Unteroptionen sind optional. Bei ihrer Verwendung müssen jedoch beide Unteroptionen angegeben werden.

Um beispielsweise ein Aufgabenlesezeichen zu aktivieren, übergeben Sie das folgende Argument:

'--job-bookmark-option': 'job-bookmark-enable'
--job-language

Die Skript-Programmiersprache. Dieser Wert muss entweder scala oder python sein. Wenn dieser Parameter nicht vorhanden ist, ist der Standardwert python.

--python-modules-installer-option

Eine Klartextzeichenfolge, die Optionen definiert, die an pip3 übergeben werden, wenn Module mit --additional-python-modules installiert werden. Stellen Sie Optionen wie in der Befehlszeile bereit, getrennt durch Leerzeichen und mit vorangestellten Bindestrichen. Weitere Informationen zur Verwendung finden Sie unter Installation zusätzlicher Python-Module mit Pip in AWS Glue 2.0 oder höher.

Anmerkung

Diese Option wird für AWS Glue-Jobs nicht unterstützt, wenn Sie Python 3.9 verwenden.

--python-virtual-env

Der Amazon S3-Pfad zu einer gepackten virtuellen Python-Umgebung, in der Ihr Job ausgeführt wird, im Formulars3://path/pyspark_venv.tar.gz. Sie erstellen die virtuelle Umgebung und laden sie hoch, bevor der Job ausgeführt wird.

Die virtuelle Umgebung ersetzt die Python-Umgebung des Jobs vollständig, daher muss sie jedes Paket enthalten, das Ihr Job benötigt, einschließlich der Pakete, die der AWS Glue-Container ansonsten bereitstellt. Verwenden Sie diesen Parameter nicht zusammen mit--additional-python-modules.

Dieser Parameter wird in AWS Glue 5.0 und höher unterstützt. Weitere Informationen finden Sie unter Verwenden von virtuellen Python-Umgebungen mit AWS Glue.

--python-virtual-env-storage-prefix

Ein Amazon S3-Präfix, in dem AWS Glue eine virtuelle Umgebung speichert, die es für Sie erstellt, im Formulars3://path/. AWS Glue erstellt die virtuelle Umgebung --additional-python-modules bei der ersten Auftragsausführung aus den Paketen, speichert sie unter diesem Präfix im Cache und verwendet sie bei späteren Ausführungen wieder.

Dieser Parameter wird in AWS Glue 6.0 und höher unterstützt. Weitere Informationen finden Sie unter Verwendung einer vom Service generierten virtuellen Umgebung mit Amazon S3-Caching.

--python-virtual-env-version

Ein Wert, den Sie erhöhen, um den Cache der virtuellen Umgebung, der verwaltet wird, --python-virtual-env-storage-prefix ungültig zu machen. Der Standardwert ist 0.

Dieser Parameter wird in AWS Glue 6.0 und höher unterstützt.

--scriptLocation

Der Amazon Simple Storage Service (Amazon S3)-Speicherort, an dem Ihr ETL-Skript abgelegt ist (im Format s3://path/to/my/script.py). Dieser Parameter überschreibt einen Skript-Speicherort im JobCommand-Objekt.

--spark-event-logs-path

Gibt einen Amazon-S3-Pfad an. Wenn Sie die Spark-UI-Überwachungsfunktion verwenden, bereinigt AWS  Glue die Spark-Ereignisprotokolle alle 30 Sekunden in diesem Amazon-S3-Pfad über einen Bucket, der als temporäres Verzeichnis zum Speichern von Spark-UI-Ereignissen verwendet werden kann.

--TempDir

Gibt einen Amazon-S3-Pfad zu einem Bucket an, der als temporäres Verzeichnis für den Auftrag verwendet werden kann.

Um beispielsweise ein temporäres Verzeichnis zu setzen, übergeben Sie das Argument:

'--TempDir': 's3-path-to-directory'
Anmerkung

AWS Glue erstellt einen temporären Bucket für Jobs, wenn in einer Region noch kein Bucket vorhanden ist. Dieser Bucket erlaubt möglicherweise den öffentlichen Zugriff. Sie können entweder den Bucket in Amazon S3 ändern, um die öffentliche Zugriffssperre festzulegen, oder den Bucket später löschen, nachdem alle Aufträge in dieser Region abgeschlossen sind.

--use-postgres-driver

Wenn Sie diesen Wert auf true setzen, wird der Postgres-JDBC-Treiber im Klassenpfad priorisiert, um einen Konflikt mit dem Amazon-Redshift-JDBC-Treiber zu vermeiden. Diese Option ist nur in AWS Glue Version 2.0 verfügbar.

--user-jars-first

Wenn Sie diesen Wert auf true setzen, werden die zusätzlichen JAR-Dateien des Kunden im Klassenpfad priorisiert. Diese Option ist nur in AWS Glue Version 2.0 oder höher verfügbar.

--conf

Sie steuert die Spark-Konfigurationsparameter. Sie ist für fortschrittliche Anwendungsfälle.

--encryption-type

Legacy-Parameter. Das entsprechende Verhalten sollte über Sicherheitskonfigurationen konfiguriert werden. Weitere Informationen zu Sicherheitskonfigurationen finden Sie unter Verschlüsselung von Daten, die geschrieben wurden von AWS Glue.

AWS Glue verwendet intern die folgenden Argumente und Sie sollten sie niemals verwenden:

  • --debug— Intern von AWS Glue. Nicht einstellen.

  • --mode— Internes Teil des AWS Klebers. Nicht einstellen.

  • --JOB_NAME— Internes Teil des AWS Klebers. Nicht einstellen.

  • --endpoint— Internes Teil des AWS Klebers. Nicht einstellen.

AWS Glue unterstützt das Bootstrapping einer Umgebung, in der das site Python-Modul verwendet wirdsitecustomize, um standortspezifische Anpassungen vorzunehmen. Das Bootstrapping Ihrer eigenen Initialisierungsfunktionen wird nur für fortgeschrittene Anwendungsfälle empfohlen und auf Glue 4.0 nach bestem Wissen und Gewissen unterstützt. AWS

Das Präfix der Umgebungsvariablen, GLUE_CUSTOMER, ist für die Verwendung durch Kunden reserviert.