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.
Tutorial: Ein AWS Glue for Spark-Skript schreiben
Dieses Tutorial führt Sie in den Prozess des Schreibens von AWS Glue-Skripten ein. Sie können Skripte nach einem Zeitplan mit Aufträgen oder interaktiv mit interaktiven Sitzungen ausführen. Weitere Informationen über Aufträge finden Sie unter Erstellen von visuellen ETL-Aufträgen mit AWS Glue Studio. Weitere Informationen zu interaktiven Sitzungen finden Sie unter Überblick über AWS Glue-interaktive Sitzungen.
Der visuelle Editor von AWS Glue Studio bietet eine grafische Oberfläche ohne Code für die Erstellung von AWS Glue-Jobs. AWS Glue Sie Skripte auf visuelle Jobs zurück. Sie bieten Ihnen Zugriff auf die erweiterten Tools, die für die Arbeit mit Apache-Spark-Programmen zur Verfügung stehen. Sie können von einem Glue-Skript aus auf native Spark-APIs sowie auf AWS Glue-Bibliotheken zugreifen, die Workflows zum Extrahieren, Transformieren und Laden (ETL) erleichtern. AWS
In diesem Tutorial extrahieren, transformieren und laden Sie einen Datensatz mit Parktickets. Das Skript, das diese Arbeit erledigt, ist in Form und Funktion identisch mit dem Skript, das in Making ETL easier with AWS Glue Studio
In diesem Tutorial verwenden Sie die Sprache Python und die Bibliotheken. Eine ähnliche Funktionalität ist in Scala verfügbar. Nachdem Sie dieses Tutorial durchgearbeitet haben, sollten Sie in der Lage sein, ein Scala-Beispielskript zu generieren und zu überprüfen, um zu verstehen, wie der Scala AWS Glue-ETL-Skriptschreibprozess durchgeführt wird.
Voraussetzungen
Für dieses Tutorial müssen die folgenden Voraussetzungen erfüllt sein:
-
Dieselben Voraussetzungen wie im AWS Glue Studio-Blogbeitrag, in dem Sie aufgefordert werden, eine AWS CloudFormation Vorlage auszuführen.
Diese Vorlage verwendet den AWS Glue-Datenkatalog, um den in verfügbaren Parkscheindatensatz zu verwalten
s3://aws-bigdata-blog/artifacts/gluestudio/
. Sie erstellt die folgenden Ressourcen, auf die verwiesen wird: -
AWS Glue StudioRole (Rolle) – IAM-Rolle zum Ausführen von AWS Glue-Aufträgen
-
AWS Glue StudioAmazon S3Bucket – Name des Amazon-S3-Buckets zum Speichern von blogbezogenen Dateien
-
AWS Glue StudioTicketsyyzDB – AWS Glue Datenkatalog-Datenbank
-
AWS Glue StudioTableTickets— Datenkatalogtabelle, die als Quelle verwendet werden soll
-
AWS Glue StudioTableTrials— Datenkatalogtabelle, die als Quelle verwendet werden soll
-
AWS Glue StudioParkingTicketCount — Datenkatalogtabelle, die als Ziel verwendet werden soll
-
Das im AWS Glue Studio-Blogbeitrag generierte Skript. Falls sich der Blogbeitrag ändert, finden Sie das Skript auch im folgenden Text.
Generieren eines Beispielskripts
Sie können den Visual Editor von AWS Glue Studio als leistungsstarkes Tool zur Codegenerierung verwenden, um ein Gerüst für das Skript zu erstellen, das Sie schreiben möchten. Mit diesem Tool erstellen Sie ein Beispielskript.
Wenn Sie diese Schritte überspringen möchten, wird das Skript bereitgestellt.
import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job args = getResolvedOptions(sys.argv, ["JOB_NAME"]) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(args["JOB_NAME"], args) # Script generated for node S3 bucket S3bucket_node1 = glueContext.create_dynamic_frame.from_catalog( database="yyz-tickets", table_name="tickets", transformation_ctx="S3bucket_node1" ) # Script generated for node ApplyMapping ApplyMapping_node2 = ApplyMapping.apply( frame=S3bucket_node1, mappings=[ ("tag_number_masked", "string", "tag_number_masked", "string"), ("date_of_infraction", "string", "date_of_infraction", "string"), ("ticket_date", "string", "ticket_date", "string"), ("ticket_number", "decimal", "ticket_number", "float"), ("officer", "decimal", "officer_name", "decimal"), ("infraction_code", "decimal", "infraction_code", "decimal"), ("infraction_description", "string", "infraction_description", "string"), ("set_fine_amount", "decimal", "set_fine_amount", "float"), ("time_of_infraction", "decimal", "time_of_infraction", "decimal"), ], transformation_ctx="ApplyMapping_node2", ) # Script generated for node S3 bucket S3bucket_node3 = glueContext.write_dynamic_frame.from_options( frame=ApplyMapping_node2, connection_type="s3", format="glueparquet", connection_options={"path": "s3://
DOC-EXAMPLE-BUCKET
", "partitionKeys": []}, format_options={"compression": "gzip"}, transformation_ctx="S3bucket_node3", ) job.commit()
So generieren Sie ein Beispielskript
-
Schließe das AWS Glue Studio-Tutorial ab. Um dieses Tutorial abzuschließen, siehe Einen Job in AWS Glue Studio anhand eines Beispieljobs erstellen.
-
Navigieren Sie auf der Auftragsseite zur Registerkarte Script (Skript), wie im folgenden Screenshot gezeigt:
-
Kopieren Sie den vollständigen Inhalt der Registerkarte Script (Skript). Durch Einstellen der Skriptsprache in Job details (Auftragsdetails) können Sie zwischen der Generierung von Python- oder Scala-Code hin und her wechseln.
Schritt 1. Erstellen eines Auftrags und Einfügen Ihres Skripts
In diesem Schritt erstellen Sie einen AWS Glue-Job in der AWS Management Console. Dadurch wird eine Konfiguration eingerichtet, die es AWS Glue ermöglicht, Ihr Skript auszuführen. Es schafft auch einen Ort, an dem Sie Ihr Skript speichern und bearbeiten können.
So erstellen Sie einen --Auftrag
-
Navigieren Sie in der AWS Management Console zur AWS Glue-Landingpage.
-
Wählen Sie im seitlichen Navigationsbereich Jobs (Aufträge) aus.
-
Wählen Sie Spark script editor (Spark-Skript-Editor) in Create job (Auftrag erstellen) und wählen Sie dann Create (Erstellen) aus.
-
Optional – Fügen Sie den vollständigen Text Ihres Skripts in den Bereich Script (Skript) ein. Alternativ können Sie dem Tutorial folgen.
Schritt 2. AWS Glue-Bibliotheken importieren
Sie müssen Ihr Skript so einrichten, dass es mit Code und Konfiguration interagiert, die außerhalb des Skripts definiert sind. Diese Arbeit wird hinter den Kulissen von AWS Glue Studio erledigt.
In diesem Schritt führen Sie die folgenden Aktionen durch.
-
Importieren und initialisieren Sie ein
GlueContext
-Objekt. Dies ist beim Schreiben von Skripten der wichtigste Import. Dadurch werden Standardmethoden zum Definieren von Quell- und Zieldatensätzen verfügbar, die der Ausgangspunkt für jedes ETL-Skript sind. Weitere Informationen zurGlueContext
-Klasse finden Sie unter GlueContext Klasse. -
Initialisieren Sie
SparkContext
undSparkSession
. Diese ermöglichen es Ihnen, die Spark-Engine zu konfigurieren, die im AWS Glue-Job verfügbar ist. Sie müssen sie nicht direkt in einführenden AWS Glue-Skripten verwenden. -
Rufen Sie
getResolvedOptions
auf, um Ihre Auftragsargumente für die Verwendung innerhalb des Skripts vorzubereiten. Weitere Informationen zum Auflösen von Auftragsparametern finden Sie unter Zugriff auf Parameter mit getResolvedOptions. -
Initialisieren eines
Job
. DasJob
Objekt legt die Konfiguration fest und verfolgt den Status verschiedener optionaler AWS Glue-Funktionen. Ihr Skript kann ohne einJob
-Objekt ausgeführt werden, aber die beste Vorgehensweise ist, es zu initialisieren. So kommt es später nicht zu Verwirrungen, wenn diese Features später integriert werden.Eine dieser Features sind Auftragslesezeichen, die Sie in diesem Tutorial optional konfigurieren können. Im folgenden Abschnitt Optional – Auftragslesezeichen aktivieren erfahren Sie mehr über Auftragslesezeichen.
In diesem Verfahren schreiben Sie den folgenden Code. Dieser Code ist ein Teil des generierten Beispielskripts.
from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job args = getResolvedOptions(sys.argv, ["JOB_NAME"]) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(args["JOB_NAME"], args)
Um AWS Glue-Bibliotheken zu importieren
-
Kopieren Sie diesen Codeabschnitt und fügen Sie ihn in den Script (Skript)-Editor ein.
Anmerkung
Sie sollten bedenken, dass das Kopieren von Code eine schlechte technische Praxis ist. In diesem Tutorial empfehlen wir dies, um Sie zu ermutigen, Ihre Kernvariablen in allen AWS Glue-ETL-Skripten einheitlich zu benennen.
Schritt 3. Extrahieren von Daten aus einer Quelle
Bei jedem ETL-Prozess müssen Sie zunächst einen Quelldatensatz definieren, den Sie ändern möchten. Im visuellen Editor von AWS Glue Studio stellen Sie diese Informationen bereit, indem Sie einen Quellknoten erstellen.
In diesem Schritt geben Sie für die create_dynamic_frame.from_catalog
-Methode eine database
und einen table_name
an, um Daten aus einer Quelle zu extrahieren, die im AWS -Glue-Datenkatalog konfiguriert wurden.
Im vorherigen Schritt haben Sie ein GlueContext
-Objekt initialisiert. Sie verwenden dieses Objekt, um Methoden zu finden, die zum Konfigurieren von Quellen verwendet werden, z. B create_dynamic_frame.from_catalog
.
In diesem Verfahren schreiben Sie den folgenden Code mithilfe von create_dynamic_frame.from_catalog
. Dieser Code ist ein Teil des generierten Beispielskripts.
S3bucket_node1 = glueContext.create_dynamic_frame.from_catalog( database="yyz-tickets", table_name="tickets", transformation_ctx="S3bucket_node1" )
So extrahieren Sie Daten aus einer Quelle
-
Suchen Sie in der Dokumentation nach einer Methode
GlueContext
zum Extrahieren von Daten aus einer im AWS Glue-Datenkatalog definierten Quelle. Diese Methoden sind dokumentiert in GlueContext Klasse. Wählen Sie die Methode create_dynamic_frame.from_catalog. Rufen Sie diese Methode aufglueContext
auf. -
Untersuchen Sie die Dokumentation auf
create_dynamic_frame.from_catalog
. Diese Methode erfordert die Parameterdatabase
undtable_name
. Stellen Sie die notwendigen Parameter fürcreate_dynamic_frame.from_catalog
bereit.Der AWS Glue-Datenkatalog speichert Informationen über den Speicherort und das Format Ihrer Quelldaten und wurde im Abschnitt mit den Voraussetzungen eingerichtet. Sie müssen diese Informationen nicht direkt in Ihr Skript eingeben.
-
Optional – Stellen Sie die
transformation_ctx
-Parameter der Methode bereit, um Auftragslesezeichen zu unterstützen. Im folgenden Abschnitt Optional – Auftragslesezeichen aktivieren erfahren Sie mehr über Auftragslesezeichen.
Anmerkung
Gängige Methoden zum Extrahieren von Daten
create_dynamic_frame_from_catalogwird verwendet, um eine Verbindung zu Tabellen im AWS Glue-Datenkatalog herzustellen.
Wenn Sie Ihren Auftrag direkt mit einer Konfiguration versehen müssen, die die Struktur und den Standort Ihrer Quelle beschreibt, sehen Sie sich die Methode create_dynamic_frame_from_options an. Sie müssen detailliertere Parameter zur Beschreibung Ihrer Daten angeben als bei create_dynamic_frame.from_catalog
.
Weitere Informationen zur Identifikation der erforderlichen Parameter finden Sie in der zusätzlichen Dokumentation zu format_options
und connection_parameters
. Eine Erläuterung, wie Sie Ihre Skriptinformationen zu Ihrem Quelldatenformat bereitstellen, finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark. Eine Erläuterung, wie Sie Ihre Skriptinformationen zu Ihrem Quelldatenstandort bereitstellen, finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark.
Wenn Sie Informationen aus einer Streaming-Quelle lesen, stellen Sie Ihrem Auftrag Quellinformationen über die Methoden create_data_frame_from_catalog oder create_data_frame_from_options bereit. Beachten Sie, dass diese Methoden Apache-Spark-DataFrames
zurückgeben.
Unser generierter Code ruft create_dynamic_frame.from_catalog
auf, während sich die Referenzdokumentation auf create_dynamic_frame_from_catalog
bezieht. Diese Methoden rufen letztendlich denselben Code auf und sind enthalten, sodass Sie saubereren Code schreiben können. Sie können dies überprüfen, indem Sie sich den Quellcode für unseren Python-Wrapper ansehen, der unter aws-glue-libs
Schritt 4. Transformieren von Daten mit AWS Glue
Nach dem Extrahieren der Quelldaten in einem ETL-Prozess müssen Sie beschreiben, wie Sie Ihre Daten ändern möchten. Sie stellen diese Informationen bereit, indem Sie im visuellen Editor von AWS Glue Studio einen Transform-Knoten erstellen.
In diesem Schritt stellen Sie der ApplyMapping
-Methode eine Karte mit aktuellen und gewünschten Feldnamen und -typen zur Transformation Ihres DynamicFrame
bereit.
Führen Sie die folgenden Transformationen aus.
-
Löschen Sie die vier
location
- undprovince
-Schlüssel. -
Ändern Sie den Namen von
officer
zuofficer_name
. -
Ändern Sie den Typ von
ticket_number
undset_fine_amount
zufloat
.
create_dynamic_frame.from_catalog
bietet Ihnen ein DynamicFrame
-Objekt. A DynamicFrame
steht für einen Datensatz in AWS Glue. AWS Klebetransformationen sind Operationen, die sich ändernDynamicFrames
.
Anmerkung
Was ist ein DynamicFrame
?
Ein DynamicFrame
ist eine Abstraktion, mit der Sie einen Datensatz mit einer Beschreibung der Namen und Typen von Einträgen in den Daten verbinden können. In Apache Spark gibt es eine ähnliche Abstraktion, die als a bezeichnet wird. DataFrame Eine Erläuterung von DataFrames finden Sie im Spark SQL Guide
Mit DynamicFrames
können Sie Datensatzschemata dynamisch beschreiben. Stellen Sie sich einen Datensatz mit einer Preisspalte vor, in der einige Einträge den Preis als Zeichenfolge und andere den Preis als Doppelzahl speichern. AWS Glue berechnet ein Schema on-the-fly — es erstellt für jede Zeile einen sich selbst beschreibenden Datensatz.
Inkonsistente Felder (wie Preis) werden explizit mit einem Typ dargestellt (ChoiceType
) im Schema für den Rahmen. Sie können Ihre inkonsistenten Felder beheben, indem Sie sie mit DropFields
löschen oder mit ResolveChoice
auflösen. Dies sind Transformationen, die auf dem DynamicFrame
verfügbar sind. Sie können Ihre Daten dann mit writeDynamicFrame
zurück in Ihren Data Lake schreiben.
Sie können viele der gleichen Transformationen über Methoden in der DynamicFrame
-Klasse abrufen, was zu besser lesbaren Skripten führen kann. Mehr über DynamicFrame
erfahren Sie unter DynamicFrame Klasse.
In diesem Verfahren schreiben Sie den folgenden Code mithilfe von ApplyMapping
. Dieser Code ist ein Teil des generierten Beispielskripts.
ApplyMapping_node2 = ApplyMapping.apply( frame=S3bucket_node1, mappings=[ ("tag_number_masked", "string", "tag_number_masked", "string"), ("date_of_infraction", "string", "date_of_infraction", "string"), ("ticket_date", "string", "ticket_date", "string"), ("ticket_number", "decimal", "ticket_number", "float"), ("officer", "decimal", "officer_name", "decimal"), ("infraction_code", "decimal", "infraction_code", "decimal"), ("infraction_description", "string", "infraction_description", "string"), ("set_fine_amount", "decimal", "set_fine_amount", "float"), ("time_of_infraction", "decimal", "time_of_infraction", "decimal"), ], transformation_ctx="ApplyMapping_node2", )
Um Daten mit AWS Glue zu transformieren
-
Sehen Sie sich die Dokumentation an, um eine Transformation zum Ändern und Löschen von Feldern zu identifizieren. Details hierzu finden Sie unter GlueTransform-Basisklasse. Wählen Sie die Transformation
ApplyMapping
aus. Mehr überApplyMapping
erfahren Sie unter ApplyMapping-Klasse. Rufen Sieapply
über das TransformationsobjektApplyMapping
auf.Anmerkung
Was ist
ApplyMapping
?ApplyMapping
nimmt einenDynamicFrame
und transformiert ihn. Es braucht eine Liste von Tupeln, die Transformationen auf Feldern darstellen – eine „Zuordnung“. Die ersten beiden Tupelelemente, ein Feldname und ein Typ, werden verwendet, um ein Feld im Rahmen zu identifizieren. Die zweiten beiden Parameter sind ebenfalls ein Feldname und ein Feldtyp.ApplyMapping konvertiert das Quellfeld in den Zielnamen und gibt einen neuen ein
DynamicFrame
, den es zurückgibt. Nicht bereitgestellte Felder werden im Rückgabewert gelöscht.Statt
apply
aufzurufen, können Sie dieselbe Transform mit derapply_mapping
-Methode imDynamicFrame
aufrufen, um fließenderen, lesbareren Code zu erstellen. Weitere Informationen finden Sie unter apply_mapping. -
Sehen Sie sich die Dokumentation zu
ApplyMapping
an, um erforderliche Parameter zu identifizieren. Siehe ApplyMapping-Klasse. Sie werden feststellen, dass diese Methode die Parameterframe
undmappings
erfordert. Stellen Sie die notwendigen Parameter fürApplyMapping
bereit. -
Optional – Stellen Sie der Methode
transformation_ctx
bereit, um Auftragslesezeichen zu unterstützen. Im folgenden Abschnitt Optional – Auftragslesezeichen aktivieren erfahren Sie mehr über Auftragslesezeichen.
Anmerkung
Apache-Spark-Funktion
Wir bieten Transformationen, um ETL-Workflows in Ihrem Auftrag zu optimieren. Sie haben auch Zugriff auf die Bibliotheken, die in einem Spark-Programm in Ihrem Auftrag verfügbar sind, das für allgemeinere Zwecke entwickelt wurde. Um diese zu verwenden, konvertieren Sie zwischen DynamicFrame
und DataFrame
.
Sie können einen DataFrame
mit toDF erstellen. Anschließend können Sie die auf der Website verfügbaren Methoden verwenden DataFrame , um Ihren Datensatz zu transformieren. Weitere Informationen zu diesen Methoden finden Sie unter DataFrame
Schritt 5. Daten in ein Ziel laden
Nachdem Sie Ihre Daten transformiert haben, speichern Sie die transformierten Daten in der Regel an einem anderen Ort als der Quelle. Sie führen diesen Vorgang durch, indem Sie im Visual Editor von AWS Glue Studio einen Zielknoten erstellen.
In diesem Schritt stellen Sie der write_dynamic_frame.from_options
-Methode ein connection_type
, connection_options
, format
und format_options
bereit, um Daten in ein Ziel-Bucket in Amazon S3 zu laden.
Im ersten Schritt haben Sie ein GlueContext
-Objekt initialisiert. In AWS Glue finden Sie hier Methoden, die zur Konfiguration von Zielen verwendet werden, ähnlich wie Quellen.
In diesem Verfahren schreiben Sie den folgenden Code mithilfe von write_dynamic_frame.from_options
. Dieser Code ist ein Teil des generierten Beispielskripts.
S3bucket_node3 = glueContext.write_dynamic_frame.from_options( frame=ApplyMapping_node2, connection_type="s3", format="glueparquet", connection_options={"path": "s3://
DOC-EXAMPLE-BUCKET
", "partitionKeys": []}, format_options={"compression": "gzip"}, transformation_ctx="S3bucket_node3", )
So laden Sie Daten in ein Ziel
-
Überprüfen Sie die Dokumentation, um eine Methode zum Laden von Daten in einen Ziel-Bucket von Amazon S3 zu finden. Diese Methoden sind dokumentiert in GlueContext Klasse. Wählen Sie die write_dynamic_frame_from_options-Methode. Rufen Sie diese Methode auf
glueContext
auf.Anmerkung
Gängige Methoden für das Laden von Daten
write_dynamic_frame.from_options
ist die gängigste Methode zum Laden von Daten. Es unterstützt alle Ziele, die in AWS Glue verfügbar sind.Wenn Sie in ein JDBC-Ziel schreiben, das in einer AWS Glue-Verbindung definiert ist, verwenden Sie die write_dynamic_frame_from_jdbc_conf Methode. AWS In Klebeverbindungen werden Informationen darüber gespeichert, wie eine Verbindung zu einer Datenquelle hergestellt wird. Dadurch entfällt die Notwendigkeit, diese Informationen in
connection_options
bereitzustellen. Sie müssen jedoch immer nochconnection_options
verwenden, umdbtable
bereitzustellen.write_dynamic_frame.from_catalog
ist keine gängige Methode zum Laden von Daten. Diese Methode aktualisiert den AWS Glue-Datenkatalog, ohne den zugrunde liegenden Datensatz zu aktualisieren, und wird in Kombination mit anderen Prozessen verwendet, die den zugrunde liegenden Datensatz ändern. Weitere Informationen finden Sie unter Aktualisierung des Schemas und Hinzufügen neuer Partitionen im Datenkatalog mithilfe von AWS Glue ETL-Jobs. -
Untersuchen Sie die Dokumentation auf write_dynamic_frame_from_options. Diese Methode erfordert
frame
,connection_type
,format
,connection_options
undformat_options
. Rufen Sie diese Methode aufglueContext
auf.-
Weitere Informationen zu den erforderlichen Parametern finden Sie in der zusätzlichen Dokumentation zu
format_options
undformat
. Eine Erläuterung der Datenformate finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark. -
Weitere Informationen zu den erforderlichen Parametern finden Sie in der zusätzlichen Dokumentation zu
connection_type
undconnection_options
. Eine Erläuterung der Zusammenhänge finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark. -
Stellen Sie die notwendigen Parameter für
write_dynamic_frame.from_options
bereit. Diese Methode hat eine ähnliche Konfiguration wiecreate_dynamic_frame.from_options
.
-
-
Optional – Stellen Sie
transformation_ctx
fürwrite_dynamic_frame.from_options
bereit, um Auftragslesezeichen zu unterstützen. Im folgenden Abschnitt Optional – Auftragslesezeichen aktivieren erfahren Sie mehr über Auftragslesezeichen.
Schritt 6: Bestätigen des Job
-Objekts
In Schritt 1 haben Sie ein Job
-Objekt initialisiert. Sie müssen seinen Lebenszyklus am Ende Ihres Skripts manuell beenden. Bestimmte optionale Features benötigen dies, um ordnungsgemäß zu funktionieren. Diese Arbeit wird hinter den Kulissen von AWS Glue Studio erledigt.
Rufen Sie in diesem Schritt die commit
-Methode für das Job
-Objekt auf.
In diesem Verfahren schreiben Sie den folgenden Code. Dieser Code ist ein Teil des generierten Beispielskripts.
job.commit()
So bestätigen Sie das Job
-Objekt
-
Wenn Sie dies noch nicht getan haben, führen Sie die optionalen Schritte aus, die in den vorherigen Abschnitten beschrieben wurden, um
transformation_ctx
einzubeziehen. -
Rufen Sie die folgende Seite auf
commit
.
Optional – Auftragslesezeichen aktivieren
In jedem vorherigen Schritt wurden Sie angewiesen, transformation_ctx
-Parameter einzurichten. Dies bezieht sich auf ein Feature namens Auftragslesezeichen.
Mit Auftragslesezeichen können Sie bei Aufträgen, die auf wiederkehrender Basis ausgeführt werden, Zeit und Geld sparen, indem Sie auf Datensätze zugreifen, bei denen frühere Arbeiten leicht nachverfolgt werden können. Job-Lesezeichen verfolgen den Fortschritt einer AWS Glue-Transformation in einem Datensatz aus früheren Durchläufen. Indem AWS Glue nachverfolgt, wo frühere Läufe geendet haben, kann es seine Arbeit auf Zeilen beschränken, die es zuvor nicht verarbeitet hat. Weitere Informationen zu Auftragslesezeichen finden Sie unter Verfolgen von verarbeiteten Daten mit Auftragslesezeichen.
Um Auftragslesezeichen zu aktivieren, fügen Sie zunächst die transformation_ctx
-Anweisungen in unsere bereitgestellten Funktionen ein, wie in den vorherigen Beispielen beschrieben. Der Status des Auftragslesezeichens wird über mehrere Ausführungen hinweg beibehalten. transformation_ctx
-Parameter sind Schlüssel, die für den Zugriff auf diesen Status verwendet werden. Für sich genommen werden diese Aussagen nichts bewirken. Sie müssen das Feature auch in der Konfiguration für Ihren Auftrag aktivieren.
In diesem Verfahren aktivieren Sie Auftragslesezeichen mit dem AWS Management Console.
So aktivieren Sie Auftragslesezeichen
-
Navigieren Sie zum Abschnitt Job details (Auftragsdetails) Ihres entsprechenden Auftrags.
-
Legen Sie für Job bookmark (Auftragslesezeichen) Enable (Aktivieren) fest.
Schritt 7. Ausführen Ihres Codes als Auftrag
In diesem Schritt führen Sie Ihren Auftrag aus, um zu überprüfen, ob Sie dieses Tutorial erfolgreich abgeschlossen haben. Dies erfolgt mit einem Klick auf eine Schaltfläche, wie im visuellen Editor von AWS Glue Studio.
So führen Sie Ihren Code als Auftrag aus
-
Wählen Sie in der Titelleiste Untitled Job (Auftrag ohne Titel) aus, um Ihren Auftragsnamen zu bearbeiten und festzulegen.
-
Navigieren Sie zur Registerkarte Job details (Auftragsdetails). Weisen Sie Ihrem Auftrag eine IAM-Rolle zu. Sie können die mit der AWS CloudFormation Vorlage erstellte Datei in den Voraussetzungen für das AWS Glue Studio-Tutorial verwenden. Wenn Sie dieses Tutorial abgeschlossen haben, sollte es verfügbar sein als
AWS Glue StudioRole
. -
Wählen Sie Save (Speichern), um Ihr Skript zu speichern.
-
Wählen Sie Run (Ausführen) aus, um Ihren Auftrag auszuführen.
-
Navigieren Sie zur Registerkarte Runs (Ausführungen), um zu überprüfen, ob Ihr Auftrag abgeschlossen ist.
-
Navigieren Sie zu
DOC-BEISPIEL-BUCKET
, dem Ziel fürwrite_dynamic_frame.from_options
. Bestätigen Sie, dass die Ausgabe Ihren Erwartungen entspricht.
Weitere Informationen zum Konfigurieren und Verwalten von Aufträgen finden Sie unter Bereitstellen eigener, benutzerdefinierter Skripts.
Weitere Informationen
Apache Spark-Bibliotheken und -Methoden sind in AWS Glue-Skripten verfügbar. Sie können sich die Spark-Dokumentation ansehen, um zu verstehen, was Sie mit diesen enthaltenen Bibliotheken tun können. Weitere Informationen finden Sie im Abschnitt über Beispiele des Spark-Quell-Repositorys
AWS Glue 2.0+ enthält standardmäßig mehrere gängige Python-Bibliotheken. Es gibt auch Mechanismen, um Ihre eigenen Abhängigkeiten in einen AWS Glue-Job in einer Scala- oder Python-Umgebung zu laden. Weitere Informationen zu Python-Abhängigkeiten finden Sie unter Python-Bibliotheken mit AWS Glue verwenden.
Weitere Beispiele für die Verwendung von AWS Glue-Funktionen in Python finden Sie unterBeispiele für Python-Code in AWS Glue. Scala- und Python-Aufträge haben Feature-Parität, daher sollten unsere Python-Beispiele Ihnen einen Eindruck davon geben, wie Sie ähnliche Aufgaben in Scala ausführen können.