GlueContext Klasse - 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.

GlueContext Klasse

Umschließt das Apache SparkContextSpark-Objekt und bietet dadurch Mechanismen für die Interaktion mit der Apache Spark-Plattform.

__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 anderem s3, mysql, postgresql, redshift, sqlserver, oracle und dynamodb.

  • 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ßer endpointUrl, streamName, bootstrap.servers, security.protocol, topicName, classification und delimiter. Eine weitere unterstützte Option ist catalogPartitionPredicate:

    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, dass push_down_predicate und catalogPartitionPredicate 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 anderem s3, mysql, postgresql, redshift, sqlserver, oracle und dynamodb.

  • connection_options – Verbindungsoptionen, beispielsweise Pfade und Datenbanktabelle (optional). Für einen connection_type von s3 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 Sie schema.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ßer endpointUrl, streamName, bootstrap.servers, security.protocol, topicName, classification und delimiter.

  • 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 und maxSampleFilesPerPartition = 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 auf None 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 anderem s3, mysql, postgresql, redshift, sqlserver, oracle und dynamodb.

  • 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 und maxSampleFilesPerPartition = 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 – Der dataFrame, 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 Original dataFrame 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 wie startingPosition, maxFetchTimeInMs und startingOffsets.

    • 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 der classification-Eigenschaft an. Weitere Informationen zur Spark-Datenquellen-API finden Sie in der offiziellen Apache-Spark-Dokumentation.

      Die Verwendung von create_data_frame_from_catalog mit useSparkDataSource bietet die folgenden Vorteile:

      • Gibt direkt ein DataFrame zurück und bietet eine Alternative zu create_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 aktivierenuseSparkDataSource, können Sie bei Bedarf auch jede der Spark-Datenquellenoptionen hinzufü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 Sie useCatalogSchema aktivieren, müssen Sie auch useSparkDataSource auf wahr setzen.

Einschränkungen

Berücksichtigen Sie die folgenden Einschränkungen, wenn Sie die useSparkDataSource-Option verwenden:

  • Wenn Sie AWS Glue verwendenuseSparkDataSource, erstellt es DataFrame 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 sind kinesis und kafka.

  • 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 und classification.

    • Kafka-Streaming-Quellen erfordern connectionName, topicName, startingOffsets, inferSchema und classification.

  • 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? im AWS Support Wissenscenter.

  • catalog_id – Die Katalog-ID des Data Catalogs, auf den zugegriffen wird (die Konto-ID des Data Catalogs). Standardmäßig auf None 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 im excludeStorageClasses-Set werden nicht gelöscht. Der Standardwert ist Set() – ein leeres Set.

    • manifestFilePath – Ein optionaler Pfad für die Generierung von Manifestdateien. Alle Dateien, die erfolgreich gelöscht wurden, werden in Success.csv aufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, in Failed.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? im AWS Support Knowledge Center.

  • s3_path – Der Pfad in Amazon S3 der zu löschenden Dateien im Format s3://<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 im excludeStorageClasses-Set werden nicht gelöscht. Der Standardwert ist Set() – ein leeres Set.

    • manifestFilePath – Ein optionaler Pfad für die Generierung von Manifestdateien. Alle Dateien, die erfolgreich gelöscht wurden, werden in Success.csv aufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, in Failed.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 im excludeStorageClasses-Set werden nicht umgewandelt. Der Standardwert ist Set() – ein leeres Set.

    • manifestFilePath – Ein optionaler Pfad für die Generierung von Manifestdateien. Alle Dateien, die erfolgreich transitioniert wurden, werden in Success.csv aufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, in Failed.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 auf None 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 Format s3://<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 im excludeStorageClasses-Set werden nicht umgewandelt. Der Standardwert ist Set() – ein leeres Set.

    • manifestFilePath – Ein optionaler Pfad für die Generierung von Manifestdateien. Alle Dateien, die erfolgreich transitioniert wurden, werden in Success.csv aufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, in Failed.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 das customJDBCCert 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 von commit_transaction sofort erfolgt. Der Standardwert ist "True". Wenn false (falsch), befragt commit_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ören s3 mysqlpostgresql,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 und password: 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 schreibende DynamicFrame.

  • connection_type – Der Verbindungstyp, z. B. Amazon S3, Amazon Redshift und JDBC. Zu den gültigen Werten gehören s3 mysqlpostgresql,redshift,sqlserver,oracle,kinesis, undkafka.

  • connection_options – Verbindungsoptionen, beispielsweise Pfad und Datenbanktabelle (optional). Für den connection_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 Sie schema.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 – Der DynamicFrame oder die DynamicFrameCollection, der bzw. die geschrieben werden soll.

  • connection_type – Der Verbindungstyp, z. B. Amazon S3, Amazon Redshift und JDBC. Gültige Werte sind s3, mysql, postgresql, redshift, sqlserver und oracle.

  • connection_options – Verbindungsoptionen, beispielsweise Pfad und Datenbanktabelle (optional). Für den connection_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 Sie schema.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 schreibende DynamicFrame.

  • 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 schreibende DataFrame.

  • 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 nach additional_options Bedarf alle Spark-Datenquellenoptionen hinzufü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 schreibende DynamicFrame.

  • 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 – Der DynamicFrame oder die DynamicFrameCollection, 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.