Ausführen von Spark-ETL-Aufträgen mit verkürzten Startzeiten - 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.

Ausführen von Spark-ETL-Aufträgen mit verkürzten Startzeiten

AWS Glue Versionen 2.0 und höher bieten eine aktualisierte Infrastruktur zum Ausführen von Apache-Spark-ETL-Aufträgen (Extrahieren, Transformieren und Laden) in AWS Glue mit reduzierten Startzeiten. Mit den verkürzten Wartezeiten können Dateningenieure produktiver arbeiten und ihre Interaktivität mit AWS Glue verbessern. Die geringere Varianz der Auftragsstartzeiten kann Ihnen dabei helfen, Ihre SLAs zu erfüllen oder zu übertreffen, um Daten für Analysen zur Verfügung zu stellen.

Um diese Funktion mit Ihren AWS Glue-ETL-Aufträgen zu verwenden, wählen Sie bei der Auftragserstellung 2.0 oder höher für Glue version aus.

Neue unterstützte Funktionen

In diesem Abschnitt werden neue Funktionen beschrieben, die von AWS Glue Version 2.0 und höher unterstützt werden.

Support für die Angabe zusätzlicher Python-Module auf Auftragsebene

Mit AWS Glue Version 2.0 und höher können Sie auch zusätzliche Python-Module oder verschiedene Versionen auf Auftragsebene bereitstellen. Sie können die Option „--additional-python-modules“ mit verschiedenen kommagetrennten Python-Modulen verwenden, um ein neues Modul hinzuzufügen oder die Version eines vorhandenen Moduls zu ändern.

Verwenden Sie zum Aktualisieren oder Hinzufügen eines neuen scikit-learn-Moduls den folgenden Schlüssel/Wert: "--additional-python-modules", "scikit-learn==0.21.3".

Auch innerhalb der Option --additional-python-modules können Sie einen Amazon-S3-Pfad zu einem Python-Wheel-Modul angeben. Zum Beispiel:

--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl,scikit-learn==0.21.3

AWS Glue verwendet den Python Package Installer (pip3), um die zusätzlichen Module zu installieren. Sie können zusätzliche Optionen übergeben, die durch python-modules-installer-option an pip3 für die Installation der Module weitergegeben werden. Alle Inkompatibilitäten oder Einschränkungen von pip3 gelten.

Python-Module, die bereits in AWS Glue Version 2.0 bereitgestellt werden

AWS Glue Version 2.0 unterstützt die folgenden Python-Module ohne Vorinstallation:

  • setuptools 45.2.0

  • subprocess32 3.5.4

  • ptvsd 4.3.2

  • pydevd 1.9.0

  • PyMySQL 0.9.3

  • docutils 0.15.2

  • jmespath 0.9.4

  • six 1.14.0

  • python_dateutil 2.8.1

  • urllib3 1.25.8

  • botocore: 1.15.4

  • s3transfer 0.3.3

  • boto3 1.12.4

  • certifi 2019.11.28

  • chardet 3.0.4

  • idna 2.9

  • requests 2.23.0

  • pyparsing 2.4.6

  • enum34 1.1.9

  • pytz 2019.3

  • numpy 1.18.1

  • cycler 0.10.0

  • kiwisolver 1.1.0

  • scipy 1.4.1

  • pandas 1.0.1

  • pyarrow 0.16.0

  • matplotlib 3.1.3

  • pyhocon 0.3.54

  • mpmath 1.1.0

  • sympy 1.5.1

  • patsy 0.5.1

  • statsmodels 0.11.1

  • fsspec 0.6.2

  • s3fs 0.4.0

  • Cython 0.29.15

  • joblib 0.14.1

  • pmdarima 1.5.3

  • scikit-learn 0.22.1

  • tbats 1.0.9

Protokollierungsverhalten

AWS Glue Version 2.0 und höher unterstützt ein anderes Standardprotokollierungsverhalten. Zu den Unterschieden gehören:

  • Die Protokollierung erfolgt in Echtzeit.

  • Es gibt separate Streams für Treiber und Executors.

  • Für jeden Treiber und Executor gibt es zwei Streams, den Ausgabestream und den Fehlerstream.

Treiber- und Executor Streams

Treiberstreams werden durch die Auftragsausführung-ID identifiziert. Executor-Streams werden durch den Auftrag identifiziert <run id>_<executor task id>. Zum Beispiel:

  • "logStreamName": "jr_8255308b426fff1b4e09e00e0bd5612b1b4ec848d7884cebe61ed33a31789..._g-f65f617bd31d54bd94482af755b6cdf464542..."

Ausgabe- und Fehler-Streams

Der Ausgabestream hat die Standardausgabe (stdout) aus Ihrem Code. Der Fehlerstream hat Protokollierungsmeldungen aus Ihrem Code/Ihrer Bibliothek.

  • Protokollstreams:

    • Treiberprotokoll-Streams haben <jr>, wobei <jr> die Auftragsausführungs-ID ist.

    • Executor-Protokoll-Streams haben <jr>_<g>, wobei <g> die Auftrags-ID für den Executor ist. Sie können die Executor-Aufgaben-ID im Treiberfehlerprotokoll nachschlagen.

Die standardmäßigen Protokollgruppen für AWS GlueVersion 2.0 lauten wie folgt:

  • /aws-glue/jobs/logs/output für Ausgabe

  • /aws-glue/jobs/logs/error für Fehler

Wenn eine Sicherheitskonfiguration bereitgestellt wird, ändern sich die Namen der Protokollgruppe in:

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/output

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/error

Auf der Konsole befindet sich der Link Logs (Protokolle). Er verweist auf die Ausgabeprotokollgruppe und der Link Error (Fehler) verweist auf die Fehlerprotokollgruppe. Wenn die kontinuierliche Protokollierung aktiviert ist, verweist der Link Logs (Protokolle) auf die fortlaufende Protokollgruppe, und der Link Output (Ausgabe) verweist auf die Ausgabeprotokollgruppe.

Protokollierungsregeln

Anmerkung

Der Standardname der Protokollgruppe für die kontinuierliche Protokollierung lautet /aws-glue/jobs/logs-v2.

In AWS Glue Version 2.0 und höher zeigt die fortlaufende Protokollierung das gleiche Verhalten wie in AWS Glue Version 1.0:

  • Standard-Protokollgruppe: /aws-glue/jobs/logs-v2

  • Treiberprotokollstream: <jr>-Treiber

  • Executor-Protokollstream: <jr>-<executor ID>

    Der Name der Protokollgruppe kann durch die Einstellung --continuous-log-logGroupName geändert werden.

    Der Name des Protokollstreams kann durch die Einstellung --continous-log-logStreamPrefix als Präfix festgelegt werden.

Nicht unterstützte Funktionen

Die folgenden AWS Glue-Funktionen werden nicht unterstützt:

  • Entwicklungsendpunkte

  • AWS Glue Version 2.0 und höher läuft nicht auf Apache YARN, daher gelten die YARN-Einstellungen nicht

  • AWS Glue Version 2.0 und höher verfügt über kein Hadoop Distributed File System (HDFS)

  • AWS Glue Version 2.0 und höher verwendet keine dynamische Zuweisung, daher sind die ExecutorAllocationManager-Metriken nicht verfügbar

  • Für Aufträge von AWS Glue Version 2.0 und höher geben Sie die Anzahl der Worker und den Worker-Typ an. Sie geben jedoch keinen maxCapacity an.

  • Bei AWS Glue Version 2.0 und höher ist die Unterstützung von s3n nicht vorkonfiguriert. Wir empfehlen die Verwendung von s3 oder s3a. Wenn Aufträge s3n aus beliebigen Grund verwenden, können Sie das folgende zusätzliche Argument weitergeben:

    --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem