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.
GlueContext Klasse
Umschließt das Apache SparkContext
__init__
__init__(sparkContext)
sparkContext
– Der Apache-Spark-Kontext, der verwendet werden soll.
Erstellen
getSource
getSource(connection_type, transformation_ctx = "", **options)
Erstellt ein DataSource
-Objekt, das zum Lesen von DynamicFrames
aus externen Quellen verwendet werden kann.
connection_type
– Der zu verwendende Verbindungstyp, z. B. Amazon Simple Storage Service (Amazon S3), Amazon Redshift und JDBC. Gültige Werte sind unter anderems3
,mysql
,postgresql
,redshift
,sqlserver
,oracle
unddynamodb
.transformation_ctx
– Der zu verwendende Transformationskontext (optional).options
– Eine Sammlung optionaler Name/Wert-Paare. Weitere Informationen finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark.
Es folgt ein Beispiel für die Verwendung von getSource
.
>>> data_source = context.getSource("file", paths=["/in/path"]) >>> data_source.setFormat("json") >>> myFrame = data_source.getFrame()
create_dynamic_frame_from_rdd
create_dynamic_frame_from_rdd(data, name, schema=None, sample_ratio=None, transformation_ctx="")
Gibt einen DynamicFrame
zurück, der aus einem Apache Spark Resilient Distributed Dataset (RDD) erstellt wird.
data
– Die Datenquelle, die verwendet werden soll.name
– Der Name der zu verwendenden Daten.schema
– Das zu verwendende Schema (optional).sample_ratio
– Das zu verwendende Beispielverhältnis.transformation_ctx
– Der zu verwendende Transformationskontext (optional).
create_dynamic_frame_from_catalog
create_dynamic_frame_from_catalog(database, table_name, redshift_tmp_dir, transformation_ctx = "", push_down_predicate= "", additional_options = {}, catalog_id = None)
Gibt einen DynamicFrame
zurück, der mit einer Data-Catalog-Datenbank und einem Tabellennamen erstellt wird. Wenn Sie diese Methode verwenden, geben Sie format_options
über die Tabelle Eigenschaften der angegebenen AWS Glue-Datenkatalogtabelle und andere Optionen über das additional_options
Argument an.
Database
– Die Datenbank, aus der gelesen werden soll.table_name
–Der Name der Tabelle, aus der gelesen werden soll.redshift_tmp_dir
– Ein zu verwendendes temporäres Amazon-Redshift-Verzeichnis (optional).transformation_ctx
– Der zu verwendende Transformationskontext (optional).push_down_predicate
– Filtert Partitionen, ohne alle Dateien in Ihrem Datensatz auflisten und lesen zu müssen. Informationen zu unterstützten Quellen und Einschränkungen finden Sie unter Optimieren von Lesevorgängen mit Pushdown in AWS Glue ETL. Weitere Informationen finden Sie unter Vorabfilterung mit Pushdown-Prädikaten.additional_options
– Eine Sammlung optionaler Name/Wert-Paare. Zu den möglichen Optionen gehören die unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark aufgeführten, außerendpointUrl
,streamName
,bootstrap.servers
,security.protocol
,topicName
,classification
unddelimiter
. Eine weitere unterstützte Option istcatalogPartitionPredicate
:catalogPartitionPredicate
– Sie können einen Katalogausdruck basierend auf den Indexspalten an den Filter übergeben. Dies verlagert die Filterung auf die Serverseite. Weitere Informationen finden Sie unter AWS Glue-Partition-Indizes. Beachten Sie, dasspush_down_predicate
undcatalogPartitionPredicate
verschiedene Syntaxen verwenden. Erstere verwendet die Spark-SQL-Standardsyntax und letztere verwendet den JSQL-Parser.catalog_id
– Die Katalog-ID (Konto-ID) des Data Catalogs, auf den zugegriffen wird. Bei None wird die Standard-Konto-ID des Aufrufers verwendet.
create_dynamic_frame_from_options
create_dynamic_frame_from_options(connection_type, connection_options={},
format=None, format_options={}, transformation_ctx = "")
Gibt einen DynamicFrame
zurück, der mit der angegebenen Verbindung und dem Format erstellt wurde.
connection_type
– Der Verbindungstyp, z. B. Amazon S3, Amazon Redshift und JDBC. Gültige Werte sind unter anderems3
,mysql
,postgresql
,redshift
,sqlserver
,oracle
unddynamodb
.connection_options
– Verbindungsoptionen, beispielsweise Pfade und Datenbanktabelle (optional). Für einenconnection_type
vons3
ist eine Liste der Amazon-S3-Pfade definiert.connection_options = {"paths": ["
s3://aws-glue-target/temp
"]}Für JDBC-Verbindungen müssen mehrere Eigenschaften definiert werden. Beachten Sie, dass der Datenbankname Teil der URL sein muss. Er kann optional in die Verbindungsoptionen eingeschlossen werden.
Warnung
Das Speichern von Passwörtern in Ihrem Skript wird nicht empfohlen. Erwägen Sie, sie
boto3
zu verwenden, um sie aus AWS Secrets Manager dem AWS Glue-Datenkatalog abzurufen.connection_options = {"url": "
jdbc-url/database
", "user": "username
", "password":passwordVariable
,"dbtable": "table-name
", "redshiftTmpDir": "s3-tempdir-path
"}Die
dbtable
-Eigenschaft ist der Name der JDBC-Tabelle. Bei JDBC-Datenspeichern, die von Schemata innerhalb einer Datenbank unterstützen, geben Sieschema.table-name
an. Wenn kein Schema angegeben ist, wird der Standardwert "öffentliches" Schema verwendet.Weitere Informationen finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark.
format
— Eine Formatspezifikation. Diese wird für eine Amazon-S3- oder eine AWS Glue-Verbindung verwendet, die mehrere Formate unterstützt. Informationen zu den unterstützten Formaten finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark.format_options
– Formatoptionen für das angegebene Format. Informationen zu den unterstützten Formaten finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark.transformation_ctx
– Der zu verwendende Transformationskontext (optional).push_down_predicate
– Filtert Partitionen, ohne alle Dateien in Ihrem Datensatz auflisten und lesen zu müssen. Informationen zu unterstützten Quellen und Einschränkungen finden Sie unter Optimieren von Lesevorgängen mit Pushdown in AWS Glue ETL. Weitere Informationen finden Sie unter Vorabfilterung mit Pushdown-Prädikaten.
create_sample_dynamic_frame_from_catalog
create_sample_dynamic_frame_from_catalog(database, table_name, num, redshift_tmp_dir, transformation_ctx = "", push_down_predicate= "", additional_options = {}, sample_options = {}, catalog_id = None)
Gibt einen Beispiel-DynamicFrame
zurück, der mit einer Data-Catalog-Datenbank und einem Tabellennamen erstellt wird. DynamicFrame
enthält nur erste num
-Datensätze aus einer Datenquelle.
-
database
– Die Datenbank, aus der gelesen werden soll. -
table_name
–Der Name der Tabelle, aus der gelesen werden soll. -
num
– Die maximale Anzahl von Datensätzen im dynamischen Frame der zurückgegebenen Probe. redshift_tmp_dir
– Ein zu verwendendes temporäres Amazon-Redshift-Verzeichnis (optional).-
transformation_ctx
– Der zu verwendende Transformationskontext (optional). push_down_predicate
– Filtert Partitionen, ohne alle Dateien in Ihrem Datensatz auflisten und lesen zu müssen. Weitere Informationen finden Sie unter Vorabfilterung mit Pushdown-Prädikaten.-
additional_options
– Eine Sammlung optionaler Name/Wert-Paare. Zu den möglichen Optionen gehören die unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark aufgeführten, außerendpointUrl
,streamName
,bootstrap.servers
,security.protocol
,topicName
,classification
unddelimiter
. -
sample_options
– Parameter zur Steuerung des Sampling-Verhaltens (optional). Aktuell verfügbare Parameter für Amazon-S3-Quellen:maxSamplePartitions
– Die maximale Anzahl der Partitionen, die das Sampling lesen wird. Standardwert: 10.maxSampleFilesPerPartition
– Die maximale Anzahl von Dateien, die das Sampling in einer Partition lesen wird. Standardwert: 10.Diese Parameter helfen, den Zeitaufwand für die Dateiauflistung zu reduzieren. Angenommen, der Datensatz hat 1 000 Partitionen und jede Partition hat 10 Dateien. Wenn Sie
maxSamplePartitions
= 10 undmaxSampleFilesPerPartition
= 10 festlegen, listet das Sampling statt alle 10 000 Dateien aufzulisten und liest nur die ersten 10 Partitionen mit jeweils den ersten 10 Dateien: 10*10 = 100 Dateien insgesamt.
-
catalog_id
– Die Katalog-ID des Data Catalogs, auf den zugegriffen wird (die Konto-ID des Data Catalogs). Standardmäßig aufNone
eingestellt.None
ist standardmäßig die Katalog-ID des aufrufenden Kontos im Service.
create_sample_dynamic_frame_from_options
create_sample_dynamic_frame_from_options(connection_type, connection_options={}, num, sample_options={}, format=None, format_options={}, transformation_ctx = "")
Gibt einen Beispiel-DynamicFrame
zurück, der mit der angegebenen Verbindung und dem Format erstellt wurde. DynamicFrame
enthält nur erste num
-Datensätze aus einer Datenquelle.
connection_type
– Der Verbindungstyp, z. B. Amazon S3, Amazon Redshift und JDBC. Gültige Werte sind unter anderems3
,mysql
,postgresql
,redshift
,sqlserver
,oracle
unddynamodb
.connection_options
– Verbindungsoptionen, beispielsweise Pfade und Datenbanktabelle (optional). Weitere Informationen finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark.-
num
– Die maximale Anzahl von Datensätzen im dynamischen Frame der zurückgegebenen Probe. -
sample_options
– Parameter zur Steuerung des Sampling-Verhaltens (optional). Aktuell verfügbare Parameter für Amazon-S3-Quellen:maxSamplePartitions
– Die maximale Anzahl der Partitionen, die das Sampling lesen wird. Standardwert: 10.maxSampleFilesPerPartition
– Die maximale Anzahl von Dateien, die das Sampling in einer Partition lesen wird. Standardwert: 10.Diese Parameter helfen, den Zeitaufwand für die Dateiauflistung zu reduzieren. Angenommen, der Datensatz hat 1 000 Partitionen und jede Partition hat 10 Dateien. Wenn Sie
maxSamplePartitions
= 10 undmaxSampleFilesPerPartition
= 10 festlegen, listet das Sampling statt alle 10 000 Dateien aufzulisten und liest nur die ersten 10 Partitionen mit jeweils den ersten 10 Dateien: 10*10 = 100 Dateien insgesamt.
format
— Eine Formatspezifikation. Diese wird für eine Amazon-S3- oder eine AWS Glue-Verbindung verwendet, die mehrere Formate unterstützt. Informationen zu den unterstützten Formaten finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark.format_options
– Formatoptionen für das angegebene Format. Informationen zu den unterstützten Formaten finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark.-
transformation_ctx
– Der zu verwendende Transformationskontext (optional). push_down_predicate
– Filtert Partitionen, ohne alle Dateien in Ihrem Datensatz auflisten und lesen zu müssen. Weitere Informationen finden Sie unter Vorabfilterung mit Pushdown-Prädikaten.
add_ingestion_time_columns
add_ingestion_time_columns(dataFrame, timeGranularity = "")
Hängt die Erfassungszeitspalten wie ingest_year
, ingest_month
, ingest_day
, ingest_hour
, ingest_minute
an die Eingabe DataFrame
an. Diese Funktion wird automatisch in dem von AWS Glue erzeugten Skript generiert, wenn Sie eine Data-Catalog-Tabelle mit Amazon S3 als Ziel angeben. Diese Funktion aktualisiert automatisch die Partition mit Erfassungszeitspalten in der Ausgabetabelle. So können die Ausgabedaten bei der Erfassung automatisch partitioniert werden, ohne dass explizite Erfassungszeitspalten in den Eingabedaten erforderlich sind.
-
dataFrame
– DerdataFrame
, um die Erfassungszeitspalten anzuhängen. -
timeGranularity
– Die Granularität der Zeitspalten. Gültige Werte sind „day
“, „hour
“ und „minute
“. Wenn zum Beispiel „hour
“ an die Funktion übergeben wird, werden im OriginaldataFrame
die Zeiten in den Spalten „ingest_year
“, „ingest_month
“, „ingest_day
“, und „ingest_hour
“ aktualisiert.
Gibt den Datenrahmen nach dem Anhängen der Zeitgranularitätsspalten zurück.
Beispiel:
dynamic_frame = DynamicFrame.fromDF(glueContext.add_ingestion_time_columns(dataFrame, "hour"))
create_data_frame_from_catalog
create_data_frame_from_catalog(database, table_name, transformation_ctx = "",
additional_options = {})
Gibt einen DataFrame
zurück, der mit Informationen aus einer Data-Catalog-Tabelle erstellt wird.
-
database
– Die Data-Catalog-Datenbank, aus der gelesen werden soll. -
table_name
– Der Name der Data-Catalog-Tabelle, aus der gelesen werden soll. -
transformation_ctx
– Der zu verwendende Transformationskontext (optional). -
additional_options
– Eine Sammlung optionaler Name/Wert-Paare. Zu den möglichen Optionen gehören die unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark für Streaming-Quellen aufgelisteten wiestartingPosition
,maxFetchTimeInMs
undstartingOffsets
.-
useSparkDataSource
— Wenn auf true gesetzt, zwingt AWS Glue, die native Spark-Datenquellen-API zum Lesen der Tabelle zu verwenden. Die Spark-Datenquellen-API unterstützt die folgenden Formate: AVRO, Binär, CSV, JSON, ORC, Parquet und Text. In einer Data-Catalog-Tabelle geben Sie das Format mithilfe derclassification
-Eigenschaft an. Weitere Informationen zur Spark-Datenquellen-API finden Sie in der offiziellen Apache-Spark-Dokumentation. Die Verwendung von
create_data_frame_from_catalog
mituseSparkDataSource
bietet die folgenden Vorteile:-
Gibt direkt ein
DataFrame
zurück und bietet eine Alternative zucreate_dynamic_frame.from_catalog().toDF()
. -
Unterstützt die Berechtigungssteuerung AWS Lake Formation auf Tabellenebene für native Formate.
-
Unterstützt das Lesen von Data-Lake-Formaten ohne Berechtigungssteuerung auf AWS Lake Formation Tabellenebene. Weitere Informationen finden Sie unter Verwendung von Data-Lake-Frameworks mit AWS Glue-ETL-Aufträgen.
Wenn Sie die Option aktivieren
useSparkDataSource
, können Sie bei Bedarf auch jede der Spark-Datenquellenoptionenhinzufügen. additional_options
AWS Glue leitet diese Optionen direkt an das Spark-Lesegerät weiter. -
-
useCatalogSchema
— Wenn auf true gesetzt, wendet AWS Glue das Datenkatalogschema auf das Ergebnis anDataFrame
. Andernfalls leitet der Reader das Schema aus den Daten ab. Wenn SieuseCatalogSchema
aktivieren, müssen Sie auchuseSparkDataSource
auf wahr setzen.
-
Einschränkungen
Berücksichtigen Sie die folgenden Einschränkungen, wenn Sie die useSparkDataSource
-Option verwenden:
-
Wenn Sie AWS Glue verwenden
useSparkDataSource
, erstellt esDataFrame
in einer separaten Spark-Sitzung eine neue, die sich von der ursprünglichen Spark-Sitzung unterscheidet. -
Die DataFrame Spark-Partitionsfilterung funktioniert nicht mit den folgenden AWS Glue-Funktionen.
Um die Partitionsfilterung mit diesen Funktionen zu verwenden, können Sie das AWS Glue-Pushdown-Prädikat verwenden. Weitere Informationen finden Sie unter Vorabfilterung mit Pushdown-Prädikaten. Die Filterung nach nicht partitionierten Spalten ist nicht betroffen.
Das folgende Beispielskript zeigt die falsche Methode zur Durchführung der Partitionsfilterung mit der
excludeStorageClasses
-Option.// Incorrect partition filtering using Spark filter with excludeStorageClasses read_df = glueContext.create_data_frame.from_catalog( database=database_name, table_name=table_name, additional_options = { "useSparkDataSource": True, "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"] } ) // Suppose year and month are partition keys. // Filtering on year and month won't work, the filtered_df will still // contain data with other year/month values. filtered_df = read_df.filter("year == '2017 and month == '04' and 'state == 'CA'")
Das folgende Beispielskript zeigt die korrekte Verwendung eines Pushdown-Prädikats, um eine Partitionsfilterung mit der
excludeStorageClasses
-Option durchzuführen.// Correct partition filtering using the AWS Glue pushdown predicate // with excludeStorageClasses read_df = glueContext.create_data_frame.from_catalog( database=database_name, table_name=table_name, // Use AWS Glue pushdown predicate to perform partition filtering push_down_predicate = "(year=='2017' and month=='04')" additional_options = { "useSparkDataSource": True, "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"] } ) // Use Spark filter only on non-partitioned columns filtered_df = read_df.filter("state == 'CA'")
Beispiel: Erstellen einer CSV-Tabelle mit dem Spark-Datenquellen-Reader
// Read a CSV table with '\t' as separator read_df = glueContext.create_data_frame.from_catalog( database=
<database_name>
, table_name=<table_name>
, additional_options = {"useSparkDataSource": True, "sep": '\t'} )
create_data_frame_from_options
create_data_frame_from_options(connection_type, connection_options={},
format=None, format_options={}, transformation_ctx = "")
Diese API ist jetzt veraltet. Verwenden Sie stattdessen die getSource()
-APIs. Gibt einen DataFrame
zurück, der mit der angegebenen Verbindung und dem Format erstellt wurde. Verwenden Sie diese Funktion nur mit AWS Glue-Streaming-Quellen.
-
connection_type
– Der Streaming-Verbindungstyp. Gültige Werte sindkinesis
undkafka
. -
connection_options
– Verbindungsoptionen, die für Kinesis und Kafka unterschiedlich sind. Die Liste aller Verbindungsoptionen für jede Streaming-Datenquelle finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark. Beachten Sie die folgenden Unterschiede bei den Streaming-Verbindungsoptionen:-
Kinesis-Streaming-Quellen erfordern
streamARN
,startingPosition
,inferSchema
undclassification
. -
Kafka-Streaming-Quellen erfordern
connectionName
,topicName
,startingOffsets
,inferSchema
undclassification
.
-
-
format
— Eine Formatspezifikation. Diese wird für eine Amazon-S3- oder eine AWS Glue-Verbindung verwendet, die mehrere Formate unterstützt. Weitere Informationen zu unterstützten Formaten finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark. -
format_options
– Formatoptionen für das angegebene Format. Weitere Informationen zu unterstützten Formatoptionen finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark. -
transformation_ctx
– Der zu verwendende Transformationskontext (optional).
Beispiel für Amazon-Kinesis-Streaming-Quelle:
kinesis_options = { "streamARN": "arn:aws:kinesis:us-east-2:777788889999:stream/fromOptionsStream", "startingPosition": "TRIM_HORIZON", "inferSchema": "true", "classification": "json" } data_frame_datasource0 = glueContext.create_data_frame.from_options(connection_type="kinesis", connection_options=kinesis_options)
Beispiel für die Kafka-Streaming-Quelle:
kafka_options = { "connectionName": "ConfluentKafka", "topicName": "kafka-auth-topic", "startingOffsets": "earliest", "inferSchema": "true", "classification": "json" } data_frame_datasource0 = glueContext.create_data_frame.from_options(connection_type="kafka", connection_options=kafka_options)
forEachBatch
forEachBatch(frame, batch_function, options)
Wendet die batch_function
auf jeden Mikrobatch an, der von der Streaming-Quelle gelesen wird.
-
frame
— Der DataFrame , der die aktuelle Mikrocharge enthält. -
batch_function
– Eine Funktion, die für jeden Mikrobatch angewendet wird. -
options
– Eine Sammlung von Schlüssel-Wert-Paaren, die Informationen zur Verarbeitung von Mikrobatches enthält. Die folgenden Optionen sind erforderlich:-
windowSize
– Die Zeitspanne für die Verarbeitung der einzelnen Batches. -
checkpointLocation
– Der Ort, an dem Checkpoints für den Streaming-ETL-Auftrag gespeichert werden. -
batchMaxRetries
– Die maximale Anzahl der Wiederholungsversuche für diesen Batch, wenn er fehlschlägt. Der Standardwert ist 3. Diese Option ist nur für Glue 2.0 und höher konfigurierbar.
-
Beispiel:
glueContext.forEachBatch( frame = data_frame_datasource0, batch_function = processBatch, options = { "windowSize": "100 seconds", "checkpointLocation": "s3://kafka-auth-dataplane/confluent-test/output/checkpoint/" } ) def processBatch(data_frame, batchId): if (data_frame.count() > 0): datasource0 = DynamicFrame.fromDF( glueContext.add_ingestion_time_columns(data_frame, "hour"), glueContext, "from_data_frame" ) additionalOptions_datasink1 = {"enableUpdateCatalog": True} additionalOptions_datasink1["partitionKeys"] = ["ingest_yr", "ingest_mo", "ingest_day"] datasink1 = glueContext.write_dynamic_frame.from_catalog( frame = datasource0, database = "tempdb", table_name = "kafka-auth-table-output", transformation_ctx = "datasink1", additional_options = additionalOptions_datasink1 )
Arbeiten mit Datensätzen in Amazon S3
purge_table
purge_table(catalog_id=None, database="", table_name="", options={},
transformation_ctx="")
Löscht Dateien aus Amazon S3 für die Datenbank und Tabelle des angegebenen Katalogs. Wenn alle Dateien in einer Partition gelöscht werden, wird diese Partition auch aus dem Katalog gelöscht.
Wenn Sie gelöschte Objekte wiederherstellen möchten, können Sie das Objekt-Versioning auf dem Amazon-S3-Bucket aktivieren. Wenn ein Objekt aus einem Bucket gelöscht wird, für den kein Objekt-Versioning aktiviert ist, kann das Objekt nicht wiederhergestellt werden. Weitere Informationen zum Wiederherstellen gelöschter Objekte in einem versionsfähigen Bucket finden Sie unter How can I retrieve an Amazon S3 object that was deleted? (Wie kann ich ein gelöschtes Amazon-S3-Objekt abrufen?
-
catalog_id
– Die Katalog-ID des Data Catalogs, auf den zugegriffen wird (die Konto-ID des Data Catalogs). Standardmäßig aufNone
eingestellt.None
ist standardmäßig die Katalog-ID des aufrufenden Kontos im Service. database
– Die zu verwendende Datenbank.table_name
– Der Name der zu verwendenden Tabelle.options
– Optionen zum Filtern von zu löschenden Dateien und zur Generierung von Manifestdateien.retentionPeriod
– Gibt einen Zeitraum in Stunden für die Beibehaltung von Dateien an. Dateien, die älter als der Aufbewahrungszeitraum sind, werden beibehalten. Standardmäßig auf 168 Stunden (7 Tage) eingestellt.partitionPredicate
– Partitionen, die diese Bedingung erfüllen, werden gelöscht. Dateien innerhalb des Aufbewahrungszeitraums in diesen Partitionen werden nicht gelöscht. Festgelegt auf""
– standardmäßig auf leer festgelegt.excludeStorageClasses
– Dateien mit Speicherklasse imexcludeStorageClasses
-Set werden nicht gelöscht. Der Standardwert istSet()
– ein leeres Set.manifestFilePath
– Ein optionaler Pfad für die Generierung von Manifestdateien. Alle Dateien, die erfolgreich gelöscht wurden, werden inSuccess.csv
aufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, inFailed.csv
transformation_ctx
– Der zu verwendende Transformationskontext (optional). Wird im Dateipfad des Manifests verwendet.
glueContext.purge_table("database", "table", {"partitionPredicate": "(month=='march')", "retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/"})
purge_s3_path
purge_s3_path(s3_path, options={}, transformation_ctx="")
Löscht Dateien rekursiv aus dem angegebenen Amazon-S3-Pfad.
Wenn Sie gelöschte Objekte wiederherstellen möchten, können Sie das Objekt-Versioning auf dem Amazon-S3-Bucket aktivieren. Wenn ein Objekt aus einem Bucket gelöscht wird, für den kein Objekt-Versioning aktiviert ist, kann das Objekt nicht wiederhergestellt werden. Weitere Informationen zum Wiederherstellen gelöschter Objekte in einem Bucket mit Versionierung finden Sie unter Wie kann ich ein gelöschtes Amazon S3 S3-Objekt abrufen
s3_path
– Der Pfad in Amazon S3 der zu löschenden Dateien im Formats3://<
.bucket
>/<prefix
>/options
– Optionen zum Filtern von zu löschenden Dateien und zur Generierung von Manifestdateien.retentionPeriod
– Gibt einen Zeitraum in Stunden für die Beibehaltung von Dateien an. Dateien, die älter als der Aufbewahrungszeitraum sind, werden beibehalten. Standardmäßig auf 168 Stunden (7 Tage) eingestellt.excludeStorageClasses
– Dateien mit Speicherklasse imexcludeStorageClasses
-Set werden nicht gelöscht. Der Standardwert istSet()
– ein leeres Set.manifestFilePath
– Ein optionaler Pfad für die Generierung von Manifestdateien. Alle Dateien, die erfolgreich gelöscht wurden, werden inSuccess.csv
aufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, inFailed.csv
transformation_ctx
– Der zu verwendende Transformationskontext (optional). Wird im Dateipfad des Manifests verwendet.
glueContext.purge_s3_path("s3://bucket/path/", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/"})
transition_table
transition_table(database, table_name, transition_to, options={}, transformation_ctx="", catalog_id=None)
Wandelt die Speicherklasse der Dateien, die in Amazon S3 für die Datenbank und die Tabelle des angegebenen Katalogs gespeichert sind um.
Sie können zwischen zwei beliebigen Speicherklassen wechseln. Für die Speicherklassen GLACIER
und DEEP_ARCHIVE
können Sie zu diesen Klassen wechseln. Sie würden jedoch eine S3 RESTORE
für den Übergang von den Speicherklassen GLACIER
und DEEP_ARCHIVE
verwenden.
Wenn Sie AWS Glue-ETL-Aufträge ausführen, die Dateien oder Partitionen aus Amazon S3 lesen, können Sie einige Amazon-S3-Speicherklassentypen ausschließen. Weitere Informationen finden Sie unter Ausschließen von Amazon-S3-Speicherklassen.
database
– Die zu verwendende Datenbank.table_name
– Der Name der zu verwendenden Tabelle.transition_to
– Die Amazon-S3-Speicherklassen zum Umwandeln.options
– Optionen zum Filtern von zu löschenden Dateien und zur Generierung von Manifestdateien.retentionPeriod
– Gibt einen Zeitraum in Stunden für die Beibehaltung von Dateien an. Dateien, die älter als der Aufbewahrungszeitraum sind, werden beibehalten. Standardmäßig auf 168 Stunden (7 Tage) eingestellt.partitionPredicate
– Partitionen, die diese Bedingung erfüllen, werden umgewandelt. Dateien innerhalb des Aufbewahrungszeitraums in diesen Partitionen werden nicht transitioniert. Festgelegt auf""
– standardmäßig auf leer festgelegt.excludeStorageClasses
– Dateien mit Speicherklasse imexcludeStorageClasses
-Set werden nicht umgewandelt. Der Standardwert istSet()
– ein leeres Set.manifestFilePath
– Ein optionaler Pfad für die Generierung von Manifestdateien. Alle Dateien, die erfolgreich transitioniert wurden, werden inSuccess.csv
aufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, inFailed.csv
accountId
– Die Konto-ID von Amazon Web Services zum Ausführen der Umwandlungstransformation. Obligatorisch für diese Transformation.roleArn
— Die AWS Rolle bei der Durchführung der Transformationstransformation. Obligatorisch für diese Transformation.
transformation_ctx
– Der zu verwendende Transformationskontext (optional). Wird im Dateipfad des Manifests verwendet.catalog_id
– Die Katalog-ID des Data Catalogs, auf den zugegriffen wird (die Konto-ID des Data Catalogs). Standardmäßig aufNone
eingestellt.None
ist standardmäßig die Katalog-ID des aufrufenden Kontos im Service.
glueContext.transition_table("database", "table", "STANDARD_IA", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/", "accountId": "12345678901", "roleArn": "arn:aws:iam::123456789012:user/example-username"})
transition_s3_path
transition_s3_path(s3_path, transition_to, options={}, transformation_ctx="")
Rekursive Umwandlung der Speicherklasse der Dateien im angegebenen Amazon-S3-Pfad.
Sie können zwischen zwei beliebigen Speicherklassen wechseln. Für die Speicherklassen GLACIER
und DEEP_ARCHIVE
können Sie zu diesen Klassen wechseln. Sie würden jedoch eine S3 RESTORE
für den Übergang von den Speicherklassen GLACIER
und DEEP_ARCHIVE
verwenden.
Wenn Sie AWS Glue-ETL-Aufträge ausführen, die Dateien oder Partitionen aus Amazon S3 lesen, können Sie einige Amazon-S3-Speicherklassentypen ausschließen. Weitere Informationen finden Sie unter Ausschließen von Amazon-S3-Speicherklassen.
s3_path
– Der Pfad in Amazon S3 der umzuwandelnden Dateien im Formats3://<
.bucket
>/<prefix
>/transition_to
– Die Amazon-S3-Speicherklassen zum Umwandeln.options
– Optionen zum Filtern von zu löschenden Dateien und zur Generierung von Manifestdateien.retentionPeriod
– Gibt einen Zeitraum in Stunden für die Beibehaltung von Dateien an. Dateien, die älter als der Aufbewahrungszeitraum sind, werden beibehalten. Standardmäßig auf 168 Stunden (7 Tage) eingestellt.partitionPredicate
– Partitionen, die diese Bedingung erfüllen, werden umgewandelt. Dateien innerhalb des Aufbewahrungszeitraums in diesen Partitionen werden nicht transitioniert. Festgelegt auf""
– standardmäßig auf leer festgelegt.excludeStorageClasses
– Dateien mit Speicherklasse imexcludeStorageClasses
-Set werden nicht umgewandelt. Der Standardwert istSet()
– ein leeres Set.manifestFilePath
– Ein optionaler Pfad für die Generierung von Manifestdateien. Alle Dateien, die erfolgreich transitioniert wurden, werden inSuccess.csv
aufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, inFailed.csv
accountId
– Die Konto-ID von Amazon Web Services zum Ausführen der Umwandlungstransformation. Obligatorisch für diese Transformation.roleArn
— Die AWS Rolle für die Durchführung der Übergangstransformation. Obligatorisch für diese Transformation.
transformation_ctx
– Der zu verwendende Transformationskontext (optional). Wird im Dateipfad des Manifests verwendet.
glueContext.transition_s3_path("s3://bucket/prefix/", "STANDARD_IA", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/", "accountId": "12345678901", "roleArn": "arn:aws:iam::123456789012:user/example-username"})
Extrahieren
extract_jdbc_conf
extract_jdbc_conf(connection_name, catalog_id = None)
Gibt einen dict
mit Schlüsseln zurück mit den Konfigurationseigenschaften aus dem AWS Glue-Verbindungsobjekt im Datenkatalog.
user
– Der Datenbankbenutzername.password
– Das Datenbankpasswort.vendor
– Gibt einen Anbieter an (mysql
,postgresql
,oracle
,sqlserver
, usw.).enforceSSL
– Eine boolesche Zeichenfolge, die angibt, ob eine sichere Verbindung erforderlich ist.customJDBCCert
– Verwenden Sie ein bestimmtes Client-Zertifikat aus dem angegebenen Amazon-S3-Pfad.skipCustomJDBCCertValidation
– Eine boolesche Zeichenfolge, die angibt, ob dascustomJDBCCert
von einer CA validiert werden muss.customJDBCCertString
– Zusätzliche Informationen zum benutzerdefinierten Zertifikat, spezifisch für den Treibertyp.url
– (Veraltet) JDBC-URL nur mit Protokoll, Server und Port.fullUrl
– JDBC-URL wie beim Erstellen der Verbindung eingegeben (Verfügbar in AWS Glue-Version 3.0 oder höher).
Beispiel zum Abrufen von JDBC-Konfigurationen:
jdbc_conf = glueContext.extract_jdbc_conf(connection_name="your_glue_connection_name") print(jdbc_conf) >>> {'enforceSSL': 'false', 'skipCustomJDBCCertValidation': 'false', 'url': 'jdbc:mysql://myserver:3306', 'fullUrl': 'jdbc:mysql://myserver:3306/mydb', 'customJDBCCertString': '', 'user': 'admin', 'customJDBCCert': '', 'password': '1234', 'vendor': 'mysql'}
Transaktionen
start_transaction
start_transaction(read_only)
Starten Sie eine neue Transaktion. Ruft intern die startTransaction-API von Lake Formation auf.
read_only
– (Boolean) Gibt an, ob diese Transaktion schreibgeschützt oder gelesen und geschrieben werden soll. Schreibvorgänge mit einer schreibgeschützten Transaktions-ID werden abgelehnt. Schreibgeschützte Transaktionen müssen nicht festgeschrieben werden.
Gibt die Transaktions-ID zurück.
commit_transaction
commit_transaction(transaction_id, wait_for_commit = True)
Versucht, die angegebene Transaktion zu übernehmen. commit_transaction
kann zurückkehren, bevor die Transaktion abgeschlossen ist. Ruft intern die CommitTransaction-API von Lake Formation auf.
transaction_id
– (String) Die zu verbindende Transaktion.wait_for_commit
– (Boolean) Bestimmt, ob die Rückgabe voncommit_transaction
sofort erfolgt. Der Standardwert ist "True". Wenn false (falsch), befragtcommit_transaction
und wartet, bis die Transaktion übergeben wurde. Die Dauer der Wartezeit ist mit einem exponentiellen Backoff mit maximal 6 Wiederholungsversuchen auf 1 Minute beschränkt.
Gibt einen booleschen Wert zurück, um anzugeben, ob das Commit abgeschlossen ist oder nicht.
cancel_transaction
cancel_transaction(transaction_id)
Versucht, die angegebene Transaktion abzubrechen. Gibt eine TransactionCommittedException
-Ausnahme zurück, wenn die Transaktion zuvor festgeschrieben wurde. Ruft intern die Lake Formation CancelTransactionAPI auf.
-
transaction_id
– (String) Die abzubrechende Transaktion.
Writing
getSink
getSink(connection_type, format = None, transformation_ctx = "", **options)
Ruft ein DataSink
-Objekt ab, das zum Schreiben von DynamicFrames
in externen Quellen verwendet werden kann. Prüfen Sie zunächst das SparkSQL-format
, um sicherzustellen, dass Sie die erwartete Senke erhalten.
connection_type
– Der Verbindungstyp, z. B. Amazon S3, Amazon Redshift und JDBC. Zu den gültigen Werten gehörens3
mysql
postgresql
,redshift
,sqlserver
,oracle
,kinesis
, undkafka
.format
– Das zu verwendende SparkSQL-Format (optional).transformation_ctx
– Der zu verwendende Transformationskontext (optional).options
– Eine Sammlung von Name/Wert-Paaren, die zur Angabe der Verbindungsoptionen verwendet werden. Einige der möglichen Werte sind:-
user
undpassword
: Zur Autorisierung -
url
: Der Endpunkt für den Datenspeicher -
dbtable
: Der Name der Zieltabelle -
bulkSize
: Grad der Parallelität für Insert-Operationen
-
Die Optionen, die Sie angeben können, hängen vom Verbindungstyp ab. In Verbindungstypen und Optionen für ETL in AWS Glue für Spark finden Sie zusätzliche Werte und Beispiele.
Beispiel:
>>> data_sink = context.getSink("s3") >>> data_sink.setFormat("json"), >>> data_sink.writeFrame(myFrame)
write_dynamic_frame_from_options
write_dynamic_frame_from_options(frame, connection_type, connection_options={}, format=None,
format_options={}, transformation_ctx = "")
Schreibt und gibt einen DynamicFrame
mit der angegebenen Verbindung und dem angegebenen Format zurück.
frame
– Der zu schreibendeDynamicFrame
.connection_type
– Der Verbindungstyp, z. B. Amazon S3, Amazon Redshift und JDBC. Zu den gültigen Werten gehörens3
mysql
postgresql
,redshift
,sqlserver
,oracle
,kinesis
, undkafka
.connection_options
– Verbindungsoptionen, beispielsweise Pfad und Datenbanktabelle (optional). Für denconnection_type
s3
ist ein Amazon-S3-Pfad definiert.connection_options = {"path": "
s3://aws-glue-target/temp
"}Für JDBC-Verbindungen müssen mehrere Eigenschaften definiert werden. Beachten Sie, dass der Datenbankname Teil der URL sein muss. Er kann optional in die Verbindungsoptionen eingeschlossen werden.
Warnung
Das Speichern von Passwörtern in Ihrem Skript wird nicht empfohlen. Erwägen Sie, sie
boto3
zu verwenden, um sie aus AWS Secrets Manager dem AWS Glue-Datenkatalog abzurufen.connection_options = {"url": "
jdbc-url/database
", "user": "username
", "password":passwordVariable
,"dbtable": "table-name
", "redshiftTmpDir": "s3-tempdir-path
"}Die
dbtable
-Eigenschaft ist der Name der JDBC-Tabelle. Bei JDBC-Datenspeichern, die von Schemata innerhalb einer Datenbank unterstützen, geben Sieschema.table-name
an. Wenn kein Schema angegeben ist, wird der Standardwert "öffentliches" Schema verwendet.Weitere Informationen finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark.
format
— Eine Formatspezifikation. Diese wird für eine Amazon-S3- oder eine AWS Glue-Verbindung verwendet, die mehrere Formate unterstützt. Informationen zu den unterstützten Formaten finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark.format_options
– Formatoptionen für das angegebene Format. Informationen zu den unterstützten Formaten finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark.transformation_ctx
– Ein zu verwendender Transformationskontext (optional).
write_from_options
write_from_options(frame_or_dfc, connection_type,
connection_options={}, format={}, format_options={}, transformation_ctx = "")
Schreibt und gibt einen DynamicFrame
oder eine DynamicFrameCollection
zurück, der bzw. die mit den angegebenen Verbindungs- und Formatinformationen erstellt wird.
frame_or_dfc
– DerDynamicFrame
oder dieDynamicFrameCollection
, der bzw. die geschrieben werden soll.connection_type
– Der Verbindungstyp, z. B. Amazon S3, Amazon Redshift und JDBC. Gültige Werte sinds3
,mysql
,postgresql
,redshift
,sqlserver
undoracle
.connection_options
– Verbindungsoptionen, beispielsweise Pfad und Datenbanktabelle (optional). Für denconnection_type
s3
ist ein Amazon-S3-Pfad definiert.connection_options = {"path": "
s3://aws-glue-target/temp
"}Für JDBC-Verbindungen müssen mehrere Eigenschaften definiert werden. Beachten Sie, dass der Datenbankname Teil der URL sein muss. Er kann optional in die Verbindungsoptionen eingeschlossen werden.
Warnung
Das Speichern von Passwörtern in Ihrem Skript wird nicht empfohlen. Erwägen Sie, sie
boto3
zu verwenden, um sie aus AWS Secrets Manager dem AWS Glue-Datenkatalog abzurufen.connection_options = {"url": "
jdbc-url/database
", "user": "username
", "password":passwordVariable
,"dbtable": "table-name
", "redshiftTmpDir": "s3-tempdir-path
"}Die
dbtable
-Eigenschaft ist der Name der JDBC-Tabelle. Bei JDBC-Datenspeichern, die von Schemata innerhalb einer Datenbank unterstützen, geben Sieschema.table-name
an. Wenn kein Schema angegeben ist, wird der Standardwert "öffentliches" Schema verwendet.Weitere Informationen finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark.
format
— Eine Formatspezifikation. Diese wird für eine Amazon-S3- oder eine AWS Glue-Verbindung verwendet, die mehrere Formate unterstützt. Informationen zu den unterstützten Formaten finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark.format_options
– Formatoptionen für das angegebene Format. Informationen zu den unterstützten Formaten finden Sie unter Mögliche Formate für Eingaben und Ausgaben in AWS Glue für Spark.transformation_ctx
– Ein zu verwendender Transformationskontext (optional).
write_dynamic_frame_from_catalog
write_dynamic_frame_from_catalog(frame, database, table_name, redshift_tmp_dir, transformation_ctx = "", additional_options = {}, catalog_id = None)
Schreibt und gibt einen DynamicFrame
zurück, der mit einer Data-Catalog-Datenbank und einem Tabellennamen erstellt wird.
frame
– Der zu schreibendeDynamicFrame
.Database
– Die Data-Catalog-Datenbank, die die Tabelle enthält.table_name
– Der Name der Data-Catalog-Tabelle, die dem Ziel zugeordnet ist.redshift_tmp_dir
– Ein zu verwendendes temporäres Amazon-Redshift-Verzeichnis (optional).transformation_ctx
– Der zu verwendende Transformationskontext (optional).-
additional_options
– Eine Sammlung optionaler Name/Wert-Paare. catalog_id
– Die Katalog-ID (Konto-ID) des Data Catalogs, auf den zugegriffen wird. Bei None wird die Standard-Konto-ID des Aufrufers verwendet.
write_data_frame_from_catalog
write_data_frame_from_catalog(frame, database, table_name, redshift_tmp_dir,
transformation_ctx = "", additional_options = {}, catalog_id = None)
Schreibt und gibt einen DataFrame
zurück, der mit einer Data-Catalog-Datenbank und einem Tabellennamen erstellt wird. Diese Methode unterstützt das Schreiben in Data-Lake-Formate (Hudi, Iceberg und Delta Lake). Weitere Informationen finden Sie unter Verwendung von Data-Lake-Frameworks mit AWS Glue-ETL-Aufträgen.
frame
– Der zu schreibendeDataFrame
.Database
– Die Data-Catalog-Datenbank, die die Tabelle enthält.table_name
– Der Name der Data-Catalog-Tabelle, die dem Ziel zugeordnet ist.redshift_tmp_dir
– Ein zu verwendendes temporäres Amazon-Redshift-Verzeichnis (optional).transformation_ctx
– Der zu verwendende Transformationskontext (optional).-
additional_options
– Eine Sammlung optionaler Name/Wert-Paare.-
useSparkDataSink
— Wenn auf true gesetzt, zwingt AWS Glue, die native Spark Data Sink API zu verwenden, um in die Tabelle zu schreiben. Wenn Sie diese Option aktivieren, können Sie nachadditional_options
Bedarf alle Spark-Datenquellenoptionenhinzufügen. AWS Glue gibt diese Optionen direkt an den Spark-Writer weiter.
-
catalog_id
– Die Katalog-ID (Konto-ID) des Data Catalog, auf den zugegriffen wird. Wenn Sie keinen Wert angeben, wird die Standard-Konto-ID des Anrufers verwendet.
Einschränkungen
Berücksichtigen Sie die folgenden Einschränkungen, wenn Sie die useSparkDataSink
-Option verwenden:
-
Die enableUpdateCatalog-Option wird nicht unterstützt, wenn Sie die
useSparkDataSink
-Option verwenden.
Beispiel: Schreiben in eine Hudi-Tabelle mit dem Spark-Datenquellen-Writer
hudi_options = { 'useSparkDataSink': True, 'hoodie.table.name':
<table_name>
, 'hoodie.datasource.write.storage.type': 'COPY_ON_WRITE', 'hoodie.datasource.write.recordkey.field': 'product_id', 'hoodie.datasource.write.table.name':<table_name>
, 'hoodie.datasource.write.operation': 'upsert', 'hoodie.datasource.write.precombine.field': 'updated_at', 'hoodie.datasource.write.hive_style_partitioning': 'true', 'hoodie.upsert.shuffle.parallelism': 2, 'hoodie.insert.shuffle.parallelism': 2, 'hoodie.datasource.hive_sync.enable': 'true', 'hoodie.datasource.hive_sync.database':<database_name>
, 'hoodie.datasource.hive_sync.table':<table_name>
, 'hoodie.datasource.hive_sync.use_jdbc': 'false', 'hoodie.datasource.hive_sync.mode': 'hms'} glueContext.write_data_frame.from_catalog( frame =<df_product_inserts>
, database =<database_name>
, table_name =<table_name>
, additional_options = hudi_options )
write_dynamic_frame_from_jdbc_conf
write_dynamic_frame_from_jdbc_conf(frame, catalog_connection, connection_options={},
redshift_tmp_dir = "", transformation_ctx = "", catalog_id = None)
Schreibt und gibt einen DynamicFrame
mit den angegebenen JDBC-Verbindungsinformationen zurück.
frame
– Der zu schreibendeDynamicFrame
.catalog_connection
– Eine zu verwendende Katalogverbindung.connection_options
– Verbindungsoptionen, beispielsweise Pfad und Datenbanktabelle (optional). Weitere Informationen finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark.redshift_tmp_dir
– Ein zu verwendendes temporäres Amazon-Redshift-Verzeichnis (optional).transformation_ctx
– Ein zu verwendender Transformationskontext (optional).catalog_id
– Die Katalog-ID (Konto-ID) des Data Catalogs, auf den zugegriffen wird. Bei None wird die Standard-Konto-ID des Aufrufers verwendet.
write_from_jdbc_conf
write_from_jdbc_conf(frame_or_dfc, catalog_connection, connection_options={}, redshift_tmp_dir = "", transformation_ctx = "", catalog_id = None)
Schreibt und gibt eine DynamicFrame
oder DynamicFrameCollection
mit den angegebenen JDBC-Verbindungsinformationen zurück.
frame_or_dfc
– DerDynamicFrame
oder dieDynamicFrameCollection
, der bzw. die geschrieben werden soll.catalog_connection
– Eine zu verwendende Katalogverbindung.connection_options
– Verbindungsoptionen, beispielsweise Pfad und Datenbanktabelle (optional). Weitere Informationen finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue für Spark.redshift_tmp_dir
– Ein zu verwendendes temporäres Amazon-Redshift-Verzeichnis (optional).transformation_ctx
– Ein zu verwendender Transformationskontext (optional).catalog_id
– Die Katalog-ID (Konto-ID) des Data Catalogs, auf den zugegriffen wird. Bei None wird die Standard-Konto-ID des Aufrufers verwendet.