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.
Wenn Sie kompliziertere Transformationen für Ihre Daten durchführen müssen oder dem Datensatz Dateneigenschaftsschlüssel hinzufügen möchten, können Sie eine Transformation für benutzerdefinierten Code (Custom code) im Auftragsdiagramm hinzufügen. Mit dem Knoten „Custom code“ können Sie ein Skript eingeben, das die Transformation durchführt.
Wenn Sie benutzerdefinierten Code verwenden, müssen Sie die Änderungen, die durch den benutzerdefinierten Code an der Ausgabe vorgenommen werden, mit einem Schema-Editor angeben. Beim Bearbeiten des Schemas können Sie:
-
Dateneigenschaftsschlüssel hinzufügen oder entfernen;
-
den Datentyp von Dateneigenschaftsschlüsseln ändern;
-
den Namen von Dateneigenschaftsschlüsseln ändern;
-
einen verschachtelten Eigenschaftsschlüssel umstrukturieren.
Sie müssen eine SelectFromCollectionTransformation verwenden, um eine einzelne DynamicFrame
aus dem Ergebnis Ihres benutzerdefinierten Transformationsknotens auszuwählen, bevor Sie die Ausgabe an einen Zielort senden können.
Mit den folgenden Aufgaben können Sie dem Auftragsdiagramm einen benutzerdefinierten Transformationsknoten hinzufügen.
Hinzufügen eines Transformationsknotens mit benutzerdefiniertem Code zum Auftragsdiagramm
Dem Auftragsdiagramm einen benutzerdefinierten Transformationsknoten hinzufügen
-
(Optional) Öffnen Sie das Bedienfeld Ressourcen und wählen Sie Benutzerdefinierte Transformation aus, um Ihrem Auftragsdiagramm eine benutzerdefinierte Transformation hinzuzufügen.
-
Geben Sie auf der Registerkarte Node properties (Knoteneigenschaften) einen Namen für den Knoten im Auftragsdiagramm ein. Falls noch kein übergeordneter Knoten ausgewählt ist oder Sie mehrere Eingaben für die benutzerdefinierte Transformation wünschen, wählen Sie in der Liste Node parents (Übergeordnete Knoten) einen Knoten aus, der als Eingabequelle für die Transformation verwendet werden soll.
Eingabe von Code für den benutzerdefinierten Transformationsknoten
Sie können Code in ein Eingabefeld eingeben oder einfügen. Der Auftrag verwendet diesen Code für die Datentransformation. Sie können einen Codeausschnitt entweder in Python oder Scala bereitstellen. Der Code sollte einen oder mehrere DynamicFrames
als Eingabe nehmen und mehrere DynamicFrames
zurückgeben.
Das Skript für einen benutzerdefinierten Transformationsknoten eingeben
-
Wenn der benutzerdefinierte Transformationsknoten im Auftragsdiagramm ausgewählt ist, wählen Sie die Registerkarte Transform (Transformation) aus.
-
Im Texteingabefeld unter der Überschrift Code block (Code-Block) fügen bzw. geben Sie den Code für die Transformation ein. Der Code, den Sie verwenden, muss zur Sprache passen, die auf der Registerkarte Job details (Auftragsdetails) für den Auftrag angegeben ist.
Wenn Sie in Ihrem Code auf die Eingabeknoten verweisen, AWS Glue Studio benennt die vom Job
DynamicFrames
zurückgegebenen Diagrammknoten sequentiell in der Reihenfolge ihrer Erstellung. Verwenden Sie eines der folgenden Benennungsmethoden in Ihrem Code:-
Klassische Codegenerierung — Verwenden Sie Funktionsnamen, um auf die Knoten in Ihrem Job-Diagramm zu verweisen.
-
Datenquellknoten:
DataSource0
,DataSource1
,DataSource2
usw. -
Transformationsknoten:
Transform0
,Transform1
,Transform2
usw.
-
-
Neue Codegenerierung — Verwenden Sie den Namen, der auf der Registerkarte Node properties (Knoteneigenschaften) angegeben ist, angehängt mit '
_node1
','_node2
', usw. Zum Beispiel:S3bucket_node1
,ApplyMapping_node2
,S3bucket_node2
,MyCustomNodeName_node1
.
Weitere Informationen zum neuen Codegenerator finden Sie unter Generierung des Skript-Code.
-
Die folgenden Beispiele zeigen das Format des Codes, der in das Codefeld eingegeben werden soll:
Im folgenden Beispiel wird der erste erhaltene DynamicFrame
zu einem DataFrame
konvertiert, um die native Filtermethode anzuwenden (wobei nur Akten mit mehr als 1000 Stimmen beibehalten werden), und anschließend zurück zu einem DynamicFrame
konvertiert und zurückgegeben.
def FilterHighVoteCounts (glueContext, dfc) -> DynamicFrameCollection:
df = dfc.select(list(dfc.keys())[0]).toDF()
df_filtered = df.filter(df["vote_count"] > 1000)
dyf_filtered = DynamicFrame.fromDF(df_filtered, glueContext, "filter_votes")
return(DynamicFrameCollection({"CustomTransform0": dyf_filtered}, glueContext))
Bearbeiten des Schemas in einem benutzerdefinierten Transformationsknoten
Wenn Sie einen benutzerdefinierten Transformationsknoten verwenden, AWS Glue Studio kann die durch die Transformation erstellten Ausgabeschemas nicht automatisch ableiten. Sie verwenden den Schema-Editor, um die Schemaänderungen zu beschreiben, die vom benutzerdefinierten Transformationscode eingeführt werden.
Ein benutzerdefinierter Code-Knoten kann eine beliebige Anzahl von übergeordneten Knoten haben, die jeweils einen DynamicFrame
als Eingabe für Ihren benutzerdefinierten Code bereitstellen. Ein benutzerdefinierter Code-Knoten gibt eine Sammlung von DynamicFrames
zurück. Jeder DynamicFrame
, der als Eingabe verwendet wird, besitzt ein zugehöriges Schema. Sie müssen ein Schema hinzufügen, das jeden einzelnen DynamicFrame
beschreibt, der vom benutzerdefinierten Code-Knoten zurückgegeben wird.
Anmerkung
Wenn Sie Ihr eigenes Schema für eine benutzerdefinierte Transformation festlegen, AWS Glue Studio erbt keine Schemas von früheren Knoten. Um das Schema zu aktualisieren, wählen Sie den Knoten Benutzerdefinierte Transformation und anschließend die Registerkarte Datenvorschau aus. Sobald die Vorschau generiert wurde, wählen Sie „Vorschau-Schema verwenden“. Das Schema wird dann mithilfe der Vorschaudaten durch das Schema ersetzt.
Die Ausgabeschemata für einen benutzerdefinierten Transformationsknoten bearbeiten
-
Wenn der benutzerdefinierte Transformationsknoten im Auftragsdiagramm ausgewählt ist, wählen Sie im Bereich mit den Knotendetails die Registerkarte Output schema (Ausgabeschema) aus.
-
Wählen Sie Edit (Bearbeiten) aus, um Änderungen am Schema vorzunehmen.
Wenn Sie verschachtelte Dateneigenschaftsschlüssel haben, z. B. ein Array oder ein Objekt, können Sie mit dem Symbol für Expand-Rows (Zeilen ausklappen) (
) oben rechts in den Schemafenstern die Liste der untergeordneten Dateneigenschaftsschlüssel ausklappen. Nachdem Sie dieses Symbol ausgewählt haben, ändert es sich zu Collapse-Rows (Zeilen zuklappen) (
), mit dem Sie die Liste der untergeordneten Eigenschaftsschlüssel zuklappen können.
-
Ändern Sie das Schema mithilfe der folgenden Aktionen im Abschnitt rechts auf der Seite:
-
Um einen Eigenschaftenschlüssel umzubenennen, bewegen Sie den Cursor in das Textfeld Key (Schlüssel) des jeweiligen Eigenschaftenschlüssels und geben Sie dann den neuen Namen ein.
-
Um den Datentyp eines Eigenschaftsschlüssels zu ändern, wählen Sie den neuen Datentyp für den Eigenschaftsschlüssel aus der Liste aus.
-
Um dem Schema einen neuen obersten Eigenschaftsschlüssel hinzuzufügen, wählen Sie das Symbol für Overflow (Überlauf) (
) links von der Schaltfläche Cancel (Abbrechen) aus und dann Add root key (Rootschlüssel hinzufügen).
-
Um dem Schema einen untergeordneten Eigenschaftsschlüssel hinzuzufügen, wählen Sie das Symbol für Add-Key (Schlüssel hinzufügen) (
) aus, das mit dem übergeordneten Schlüssel verknüpft ist. Geben Sie einen Namen für den untergeordneten Schlüssel ein und wählen Sie den Datentyp aus.
-
Um einen Eigenschaftsschlüssel aus dem Schema zu entfernen, wählen Sie das Symbol zum Löschen (Remove) (
) ganz rechts neben dem Schlüsselnamen aus.
-
-
Wenn Ihr benutzerdefinierter Transformationscode mehrere
DynamicFrames
verwendet, können Sie zusätzliche Ausgabeschemata hinzufügen.-
Um ein neues leeres Schema hinzuzufügen, wählen Sie das Symbol für Overflow (Überfluss) (
) und anschließend Add output schema (Ausgabeschema hinzufügen) aus.
-
Um ein vorhandenes Schema in ein neues Ausgabeschema zu kopieren, stellen Sie sicher, dass das zu kopierende Schema in der Schemaauswahl angezeigt wird. Wählen Sie das Symbol für Overflow (Überfluss) (
) und anschließend Duplicate (Duplizieren) aus.
Um ein Ausgabeschema zu löschen, stellen Sie sicher, dass das zu löschende Schema in der Schemaauswahl angezeigt wird. Wählen Sie das Symbol für Overflow (Überfluss) (
) und anschließend Delete (Löschen) aus.
-
-
Fügen Sie dem neuen Schema neue Root-Schlüssel hinzu oder bearbeiten Sie die duplizierten Schlüssel.
-
Wenn Sie die Ausgabeschemata modifizieren, wählen Sie die Schaltfläche Apply (Anwenden) aus, um die Änderungen zu speichern und den Schema-Editor zu verlassen.
Wenn Sie Änderungen nicht speichern möchten, wählen Sie die Schaltfläche Cancel (Abbrechen) aus.
Konfigurieren der benutzerdefinierten Transformationsausgabe
Eine benutzerdefinierte Code-Transformation gibt eine Sammlung von DynamicFrames
zurück, auch wenn es nur einen DynamicFrame
in der Ergebnismenge gibt.
Die Ausgabe von einem benutzerdefinierten Transformationsknoten verarbeiten
-
Fügen Sie einen SelectFromCollectionTransformationsknoten hinzu, dessen übergeordneter Knoten der benutzerdefinierte Transformationsknoten ist. Aktualisieren Sie diese Transformation, um anzugeben, welchen Datensatz Sie verwenden möchten. Weitere Informationen finden Sie unter Wird verwendet SelectFromCollection , um auszuwählen, welcher Datensatz beibehalten werden soll.
-
Fügen Sie dem Auftragsdiagramm zusätzliche SelectFromCollectionTransformationen hinzu, wenn Sie zusätzliche Transformationen verwenden möchten, die vom benutzerdefinierten Transformationsknoten
DynamicFrames
erzeugt wurden.So könnten Sie etwa einen benutzerdefinierten Transformationsknoten hinzufügen, der einen Flug-Datensatz in mehrere Datensätze aufteilt aber einige der identifizierenden Eigenschaftsschlüssel in den einzelnen Ausgabeschemata dupliziert, z. B. Flugdatum oder Flugnummer. Sie fügen für jedes Ausgabeschema einen SelectFromCollectionTransformationsknoten hinzu, wobei der benutzerdefinierte Transformationsknoten der übergeordnete Knoten ist.
-
(Optional) Anschließend können Sie jeden SelectFromCollectionTransformationsknoten als Eingabe für andere Knoten im Job oder als übergeordnetes Element für einen Datenzielknoten verwenden.