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 Spark 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,oracleunddynamodb.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. Bei Verwendung dieser Methode stellen Sie format_options über Tabelleneigenschaften für die angegebene Tabelle von AWS Glue Data Catalog und andere Optionen über das additional_options-Argument bereit.
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,classificationunddelimiter. 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_predicateundcatalogPartitionPredicateverschiedene 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,oracleunddynamodb.connection_options– Verbindungsoptionen, beispielsweise Pfade und Datenbanktabelle (optional). Für einenconnection_typevons3ist 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 die Verwendung von
boto3, um diese aus dem AWS Secrets Manager oder AWS Glue Data Catalog 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-namean. 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 Formatspezifizierung. 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,classificationunddelimiter. -
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 aufNoneeingestellt.Noneist 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,oracleunddynamodb.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 Formatspezifizierung. 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 OriginaldataFramedie 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,maxFetchTimeInMsundstartingOffsets.-
useSparkDataSource– Wenn der Wert auf wahr festgelegt ist, 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_catalogmituseSparkDataSourcebietet die folgenden Vorteile:-
Gibt direkt ein
DataFramezurück und bietet eine Alternative zucreate_dynamic_frame.from_catalog().toDF(). -
Unterstützt die AWS Lake Formation-Berechtigungskontrolle auf Tabellenebene für native Formate.
-
Unterstützt das Lesen von Data-Lake-Formaten ohne AWS Lake Formation-Berechtigungskontrolle auf Tabellenebene. Weitere Informationen finden Sie unter Verwendung von Data-Lake-Frameworks mit AWS Glue-ETL-Aufträgen.
Wenn Sie
useSparkDataSourceaktivieren, können Sie bei Bedarf auch beliebige Spark-Datenquellenoptionenin additional_optionshinzufügen. AWS Glue gibt diese Optionen direkt an den Spark-Reader weiter. -
-
useCatalogSchema– Wenn der Wert auf wahr festgelegt ist, wendet AWS Glue das Data-Catalog-Shema auf das ErgebnisDataFramean. Andernfalls leitet der Reader das Schema aus den Daten ab. Wenn SieuseCatalogSchemaaktivieren, müssen Sie auchuseSparkDataSourceauf wahr setzen.
-
Einschränkungen
Berücksichtigen Sie die folgenden Einschränkungen, wenn Sie die useSparkDataSource-Option verwenden:
-
Wenn Sie
useSparkDataSourceverwenden, erstellt AWS Glue ein neuesDataFramein einer separaten Spark-Sitzung, die sich von der ursprünglichen Spark-Sitzung unterscheidet. -
Die Spark-DataFrame-Partitionsfilterung funktioniert mit den folgenden AWS-Glue-Features nicht.
Um die Partitionsfilterung mit diesen Features 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 sindkinesisundkafka. -
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,inferSchemaundclassification. -
Kafka-Streaming-Quellen erfordern
connectionName,topicName,startingOffsets,inferSchemaundclassification.
-
-
format– Eine Formatspezifizierung. 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 den aktuellen Mikrobatch 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. Wir unterstützen keine purge_table-Aktion für Tabellen, die bei Lake Formation registriert sind.
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 aufNoneeingestellt.Noneist 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.csvaufgezeichnet 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 Versioning-fä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?
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.csvaufgezeichnet 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.csvaufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, inFailed.csvaccountId– Die Konto-ID von Amazon Web Services zum Ausführen der Umwandlungstransformation. Obligatorisch für diese Transformation.roleArn– Die AWS-Rolle zum Ausführen der Umwandlungstransformation. 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 aufNoneeingestellt.Noneist 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.csvaufgezeichnet und diejenigen, für die dies fehlgeschlagen ist, inFailed.csvaccountId– Die Konto-ID von Amazon Web Services zum Ausführen der Umwandlungstransformation. Obligatorisch für diese Transformation.roleArn– Die AWS-Rolle zum Ausführen der Umwandlungstransformation. 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 dascustomJDBCCertvon 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_transactionsofort erfolgt. Der Standardwert ist "True". Wenn false (falsch), befragtcommit_transactionund 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 CancelTransaction-API von Lake Formation 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. Gültige Werte sind unter anderems3,mysql,postgresql,redshift,sqlserver,oracle,kinesisundkafka.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:-
userundpassword: 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. Gültige Werte sind unter anderems3,mysql,postgresql,redshift,sqlserver,oracle,kinesisundkafka.connection_options– Verbindungsoptionen, beispielsweise Pfad und Datenbanktabelle (optional). Für denconnection_types3ist 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 die Verwendung von
boto3, um diese aus dem AWS Secrets Manager oder AWS Glue Data Catalog 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-namean. 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 Formatspezifizierung. 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– DerDynamicFrameoder 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,sqlserverundoracle.connection_options– Verbindungsoptionen, beispielsweise Pfad und Datenbanktabelle (optional). Für denconnection_types3ist 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 die Verwendung von
boto3, um diese aus dem AWS Secrets Manager oder AWS Glue Data Catalog 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-namean. 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 Formatspezifizierung. 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 dieser Wert auf wahr festgelegt ist, wird AWS Glue gezwungen, die native Spark-Data-Sink-API zu verwenden, um in die Tabelle zu schreiben. Wenn Sie diese Option aktivieren, können Sie je nach Bedarf beliebige Spark-Datenquellenoptionenzu additional_optionshinzufügen. AWS Glue übergibt diese Optionen direkt an den Spark-Writer.
-
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– DerDynamicFrameoder 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.