Redshift-Verbindungen - 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.

Redshift-Verbindungen

Sie können AWS Glue for Spark verwenden, um aus Tabellen in Amazon Redshift Redshift-Datenbanken zu lesen und in Tabellen zu schreiben. Bei der Verbindung zu Amazon Redshift-Datenbanken verschiebt AWS Glue Daten mithilfe von Amazon Redshift SQL COPY und UNLOAD Befehlen über Amazon S3, um einen maximalen Durchsatz zu erzielen. In AWS Glue 4.0 und höher können Sie die Amazon Redshift Redshift-Integration für Apache Spark verwenden, um mit Amazon Redshift Redshift-spezifischen Optimierungen und Funktionen zu lesen und zu schreiben, die über diejenigen hinausgehen, die bei Verbindungen über frühere Versionen verfügbar sind.

Erfahren Sie, wie AWS Glue es für Amazon Redshift Redshift-Benutzer einfacher denn je macht, für die serverlose Datenintegration zu AWS Glue zu migrieren und. ETL

Konfigurieren von Redshift-Verbindungen

Um Amazon Redshift Redshift-Cluster in AWS Glue verwenden zu können, benötigen Sie einige Voraussetzungen:

  • Ein Amazon-S3-Verzeichnis zur temporären Speicherung beim Lesen und Schreiben in die Datenbank.

  • Ein Amazon, das VPC die Kommunikation zwischen Ihrem Amazon Redshift Redshift-Cluster, Ihrem AWS Glue-Job und Ihrem Amazon S3 S3-Verzeichnis ermöglicht.

  • Entsprechende IAM Berechtigungen für den AWS Glue-Job und den Amazon Redshift Redshift-Cluster.

Rollen konfigurieren IAM

Einrichten der Rolle für den Amazon-Redshift-Cluster

Ihr Amazon Redshift Redshift-Cluster muss in der Lage sein, in Amazon S3 zu lesen und in Amazon S3 zu schreiben, um in AWS Glue-Jobs integriert zu werden. Um dies zu ermöglichen, können Sie IAM Rollen mit dem Amazon Redshift Redshift-Cluster verknüpfen, zu dem Sie eine Verbindung herstellen möchten. Ihre Rolle sollte über eine Richtlinie verfügen, die das Lesen und Schreiben in Ihrem temporären Amazon-S3-Verzeichnis ermöglicht. Ihre Rolle sollte über eine Vertrauensbeziehung verfügen, die den redshift.amazonaws.com.rproxy.goskope.com-Service zu AssumeRole ermöglicht.

So ordnen Sie Amazon Redshift eine IAM Rolle zu
  1. Voraussetzungen: Ein Amazon-S3-Bucket oder -Verzeichnis, der für die temporäre Speicherung von Dateien verwendet wird.

  2. Identifizieren Sie, welche Amazon-S3-Berechtigungen Ihr Amazon-Redshift-Cluster benötigt. Beim Verschieben von Daten zu und von einem Amazon Redshift-Cluster führt AWS Glue zu Problemen COPY und UNLOAD Aussagen gegen Amazon Redshift. Wenn Ihr Job eine Tabelle in Amazon Redshift ändert, gibt AWS Glue auch CREATE LIBRARY Kontoauszüge aus. Informationen zu bestimmten Amazon S3 S3-Berechtigungen, die Amazon Redshift zur Ausführung dieser Anweisungen benötigt, finden Sie in der Amazon Redshift-Dokumentation: Amazon Redshift: Zugriffsberechtigungen für andere Ressourcen. AWS

  3. Erstellen Sie in der IAM Konsole eine IAM Richtlinie mit den erforderlichen Berechtigungen. Weitere Informationen zum Erstellen einer Richtlinie: IAMRichtlinien erstellen.

  4. Erstellen Sie in der IAM Konsole eine Rollen- und Vertrauensbeziehung, sodass Amazon Redshift die Rolle übernehmen kann. Folgen Sie den Anweisungen in der IAM Dokumentation, um eine Rolle für einen AWS Service (Konsole) zu erstellen

    • Wenn Sie aufgefordert werden, einen AWS Service-Anwendungsfall auszuwählen, wählen Sie „Redshift — Customizable“.

    • Wenn Sie aufgefordert werden, eine Richtlinie anzufügen, wählen Sie die zuvor definierte Richtlinie aus.

    Anmerkung

    Weitere Informationen zur Konfiguration von Rollen für Amazon Redshift finden Sie in der Amazon Redshift-Dokumentation unter Autorisieren von Amazon Redshift, in Ihrem Namen auf andere AWS Services zuzugreifen.

  5. Ordnen Sie in der Amazon-Redshift-Konsole die Rolle Ihrem Amazon-Redshift-Cluster zu. Folgen Sie den Anweisungen in der Amazon-Redshift-Dokumentation.

    Wählen Sie die hervorgehobene Option in der Amazon-Redshift-Konsole aus, um diese Einstellung zu konfigurieren:

    Ein Beispiel für die Verwaltung von IAM Berechtigungen in der Amazon Redshift Redshift-Konsole.
Anmerkung

Standardmäßig übergeben AWS Glue-Jobs temporäre Amazon Redshift Redshift-Anmeldeinformationen, die mit der Rolle erstellt wurden, die Sie für die Ausführung des Jobs angegeben haben. Wir raten von der Verwendung dieser Anmeldeinformationen ab. Aus Sicherheitsgründen verfallen diese Zugangsdaten nach einer Stunde.

Richten Sie die Rolle für den AWS Glue-Job ein

Der AWS Glue-Job benötigt eine Rolle für den Zugriff auf den Amazon S3 S3-Bucket. Sie benötigen keine IAM Berechtigungen für den Amazon Redshift Redshift-Cluster. Ihr Zugriff wird durch die Konnektivität in Amazon VPC und Ihre Datenbankanmeldedaten gesteuert.

Amazon einrichten VPC

So richten Sie den Zugriff für Amazon-Redshift-Datenspeicher ein
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon Redshift Redshift-Konsole unter https://console.aws.amazon.com/redshiftv2/.

  2. Wählen Sie im linken Navigationsbereich die Option Cluster aus.

  3. Wählen Sie den Cluster-Namen aus, auf den Sie von AWS Glue zugreifen möchten.

  4. Wählen Sie im Abschnitt Clustereigenschaften unter Sicherheitsgruppen eine Sicherheitsgruppe aus, deren Verwendung zulässig AWS Glue ist. VPC Notieren Sie sich den Namen der Sicherheitsgruppe, die Sie gewählt haben, um später darauf zurückgreifen zu können. Wenn Sie die Sicherheitsgruppe auswählen, wird die Liste der Sicherheitsgruppen der EC2 Amazon-Konsole geöffnet.

  5. Wählen Sie die Sicherheitsgruppe aus, die geändert werden soll, und navigieren Sie zur Registerkarte Eingehend.

  6. Fügen Sie eine selbstreferenzierende Regel hinzu, um die Kommunikation von AWS Glue-Komponenten zuzulassen. Insbesondere fügen Sie hinzu oder bestätigen Sie, dass eine Regel des Typs All TCP vorhanden ist, das Protokoll TCP lautet, der Port-Bereich alle Ports umfasst und deren Quelle über denselben Sicherheitsgruppennamen verfügt wie die Gruppen-ID.

    Die eingehende Regel sollte wie folgt aussehen:

    Typ Protocol (Protokoll) Port-Bereich Quelle

    Alle TCP

    TCP

    0–65535

    database-security-group

    Beispielsweise:

    Ein Beispiel für eine selbstreferenzierende eingehende Regel.
  7. Fügen Sie ebenfalls eine Regel für ausgehenden Datenverkehr hinzu. Erlauben Sie entweder ausgehenden Datenverkehr für alle Ports, beispielsweise:

    Typ Protocol (Protokoll) Port-Bereich Bestimmungsort

    Gesamter Datenverkehr

    ALL

    ALL

    0.0.0.0/0

    Oder erstellen Sie eine selbstreferenzierende Regel, wobei der Typ All TCP ist, das Protokoll TCP lautet, der Port-Bereich alle Ports umfasst und deren Ziel über denselben Sicherheitsgruppennamen wie die Gruppen-ID verfügt. Wenn Sie einen Amazon S3 VPC S3-Endpunkt verwenden, fügen Sie auch eine HTTPS Regel für den Amazon S3 S3-Zugriff hinzu. Das Tool s3-prefix-list-id ist in der Sicherheitsgruppenregel erforderlich, um Datenverkehr vom VPC zum Amazon S3 VPC S3-Endpunkt zuzulassen.

    Beispielsweise:

    Typ Protocol (Protokoll) Port-Bereich Bestimmungsort

    Alle TCP

    TCP

    0–65535

    security-group

    HTTPS

    TCP

    443

    s3-prefix-list-id

AWS Glue einrichten

Sie müssen eine AWS Glue Data Catalog-Verbindung erstellen, die VPC Amazon-Verbindungsinformationen bereitstellt.

So konfigurieren Sie die Amazon Redshift VPC Amazon-Konnektivität zu AWS Glue in der Konsole
  1. Erstellen Sie eine Data-Catalog-Verbindung, indem Sie die Schritte in AWS Glue Verbindung hinzufügen ausführen. Nachdem Sie die Verbindung hergestellt haben, behalten Sie den Verbindungsnamen bei, connectionName, für den nächsten Schritt.

    • Wählen Sie bei der Auswahl eines Verbindungstyps die Option Amazon Redshift aus.

    • Wählen Sie bei der Auswahl eines Redshift-Clusters Ihren Cluster nach Namen aus.

    • Stellen Sie Standardverbindungsinformationen für einen Amazon-Redshift-Benutzer in Ihrem Cluster bereit.

    • Ihre VPC Amazon-Einstellungen werden automatisch konfiguriert.

    Anmerkung

    Sie müssen Ihren Amazon manuell angebenPhysicalConnectionRequirements, VPC wenn Sie eine Amazon Redshift Redshift-Verbindung über den AWS SDK herstellen.

  2. Geben Sie in Ihrer AWS Glue-Job-Konfiguration Folgendes an connectionName als zusätzliche Netzwerkverbindung.

Beispiel: Lesen aus Amazon-Redshift-Tabellen

Sie können aus Amazon-Redshift-Clustern und Serverless-Amazon-Redshift-Umgebungen lesen.

Voraussetzungen: Eine Amazon-Redshift-Tabelle, aus der Sie gerne lesen möchten. Folgen Sie den Schritten im vorherigen Abschnitt. Konfigurieren von Redshift-Verbindungen Danach sollten Sie Amazon S3 URI für ein temporäres Verzeichnis haben. temp-s3-dir und eine IAM Rolle, rs-role-name, (im Konto role-account-id).

Using the Data Catalog

Zusätzliche Voraussetzungen: Eine Data-Catalog-Datenbank und -Tabelle für die Amazon-Redshift-Tabelle, aus der Sie lesen möchten. Weitere Informationen zu Data Catalog finden Sie unter Datenermittlung und Katalogisierung in AWS Glue. Nachdem Sie einen Eintrag für Ihre Amazon Redshift Redshift-Tabelle erstellt haben, identifizieren Sie Ihre Verbindung mit einem redshift-dc-database-name and redshift-table-name.

Konfiguration: In Ihren Funktionsoptionen identifizieren Sie Ihre Datenkatalogtabelle mit den database- und table_name-Parametern. Sie identifizieren Ihr temporäres Amazon-S3-Verzeichnis mit redshift_tmp_dir. Sie werden auch Folgendes angeben rs-role-name mit dem aws_iam_role Schlüssel im additional_options Parameter.

glueContext.create_dynamic_frame.from_catalog( database = "redshift-dc-database-name", table_name = "redshift-table-name", redshift_tmp_dir = args["temp-s3-dir"], additional_options = {"aws_iam_role": "arn:aws:iam::role-account-id:role/rs-role-name"})
Connecting directly

Zusätzliche Voraussetzungen: Sie benötigen den Namen Ihrer Amazon Redshift Redshift-Tabelle (redshift-table-name. Sie benötigen die JDBC Verbindungsinformationen für den Amazon Redshift Redshift-Cluster, der diese Tabelle speichert. Sie geben Ihre Verbindungsinformationen mit host, port, redshift-database-name, username and password.

Sie können Ihre Verbindungsinformationen von der Amazon-Redshift-Konsole abrufen, wenn Sie mit Amazon-Redshift-Clustern arbeiten. Wenn Sie Amazon Redshift Serverless verwenden, lesen Sie den Abschnitt Herstellen einer Verbindung zu Amazon Redshift Serverless in der Amazon Redshift-Dokumentation.

Konfiguration: In Ihren Funktionsoptionen kennzeichnen Sie Ihre Verbindungsparameter url, dbtable, user und password. Sie identifizieren Ihr temporäres Amazon-S3-Verzeichnis mit redshift_tmp_dir. Sie können Ihre IAM Rolle angebenaws_iam_role, indem Sie verwendenfrom_options. Die Syntax ähnelt der Verbindung über den Datenkatalog, Sie geben die Parameter jedoch in die connection_options-Zuordnung ein.

Es ist eine schlechte Praxis, Passwörter in AWS Glue-Skripten fest zu codieren. Erwägen Sie, Ihre Passwörter in Ihrem Skript mit SDK for Python (Boto3) zu speichern AWS Secrets Manager und abzurufen.

my_conn_options = { "url": "jdbc:redshift://host:port/redshift-database-name", "dbtable": "redshift-table-name", "user": "username", "password": "password", "redshiftTmpDir": args["temp-s3-dir"], "aws_iam_role": "arn:aws:iam::account id:role/rs-role-name" } df = glueContext.create_dynamic_frame.from_options("redshift", my_conn_options)

Beispiel: Schreiben in Amazon-Redshift-Tabellen

Sie können in Amazon-Redshift-Cluster und Serverless-Amazon-Redshift-Umgebungen schreiben.

Voraussetzungen: Ein Amazon Redshift Redshift-Cluster und folgen Sie den Schritten im vorherigen Abschnitt. Konfigurieren von Redshift-Verbindungen Danach sollten Sie Amazon S3 URI für ein temporäres Verzeichnis haben, temp-s3-dir und eine IAM Rolle, rs-role-name, (im Konto role-account-id). Sie benötigen außerdem eineDynamicFrame, deren Inhalt Sie in die Datenbank schreiben möchten.

Using the Data Catalog

Zusätzliche Voraussetzungen Eine Datenkatalogdatenbank für den Amazon-Redshift-Cluster und die Tabelle, in die Sie schreiben möchten. Weitere Informationen zu Data Catalog finden Sie unter Datenermittlung und Katalogisierung in AWS Glue. Sie werden Ihre Verbindung identifizieren mit redshift-dc-database-name und die Zieltabelle mit redshift-table-name.

Konfiguration: In Ihren Funktionsoptionen identifizieren Sie Ihre Data-Catalog-Datenbank mit dem database-Parameter und stellen dann die Tabelle mit table_name bereit. Sie identifizieren Ihr temporäres Amazon-S3-Verzeichnis mit redshift_tmp_dir. Sie werden auch zur Verfügung stellen rs-role-name mit dem aws_iam_role Schlüssel im additional_options Parameter.

glueContext.write_dynamic_frame.from_catalog( frame = input dynamic frame, database = "redshift-dc-database-name", table_name = "redshift-table-name", redshift_tmp_dir = args["temp-s3-dir"], additional_options = {"aws_iam_role": "arn:aws:iam::account-id:role/rs-role-name"})
Connecting through a AWS Glue connection

Mit dieser write_dynamic_frame.from_options-Methode können Sie direkt eine Verbindung zu Amazon Redshift herstellen. Anstatt Ihre Verbindungsdetails jedoch direkt in Ihr Skript einzufügen, können Sie mit der from_jdbc_conf-Methode auf Verbindungsdetails verweisen, die in einer Data-Catalog-Verbindung gespeichert sind. Sie können dies tun, ohne Ihre Datenbank zu crawlen oder Data-Catalog-Tabellen zu erstellen. Weitere Informationen zu Data-Catalog-Verbindungen finden Sie unter Herstellen einer Verbindung zu Daten.

Zusätzliche Voraussetzungen: Eine Data-Catalog-Verbindung für Ihre Datenbank, eine Amazon-Redshift-Tabelle, aus der Sie lesen möchten

Konfiguration: Sie identifizieren Ihre Datenkatalogverbindung mit dc-connection-name. Sie identifizieren Ihre Amazon Redshift Redshift-Datenbank und -Tabelle mit redshift-table-name and redshift-database-name. Sie geben Ihre Datenkatalog-Verbindungsinformationen mit catalog_connection und Ihre Amazon Redshift Redshift-Informationen mit dbtable und database an. Die Syntax ähnelt der Verbindung über den Datenkatalog, Sie geben die Parameter jedoch in die connection_options-Zuordnung ein.

my_conn_options = { "dbtable": "redshift-table-name", "database": "redshift-database-name", "aws_iam_role": "arn:aws:iam::role-account-id:role/rs-role-name" } glueContext.write_dynamic_frame.from_jdbc_conf( frame = input dynamic frame, catalog_connection = "dc-connection-name", connection_options = my_conn_options, redshift_tmp_dir = args["temp-s3-dir"])

Referenz zur Amazon-Redshift-Verbindungsoption

Die grundlegenden Verbindungsoptionen, die für alle AWS JDBC Glue-Verbindungen verwendet werden, um Informationen wie einzurichtenurl, user und password sind für alle JDBC Typen konsistent. Weitere Hinweise zu JDBC Standardparametern finden Sie unterReferenz zur JDBC-Verbindungsoption.

Der Amazon-Redshift-Verbindungstyp erfordert einige zusätzliche Verbindungsoptionen:

  • "redshiftTmpDir": (Erforderlich) Der Amazon-S3-Pfad, in dem temporäre Daten beim Kopieren aus der Datenbank bereitgestellt werden können.

  • "aws_iam_role": (Optional) ARN für eine IAM Rolle. Der AWS Glue-Job leitet diese Rolle an den Amazon Redshift Redshift-Cluster weiter, um den Cluster-Berechtigungen zu erteilen, die für die Ausführung der Anweisungen aus dem Job erforderlich sind.

Zusätzliche Verbindungsoptionen in AWS Glue 4.0+ verfügbar

Sie können Optionen für den neuen Amazon Redshift Redshift-Connector auch über die AWS Glue-Verbindungsoptionen übergeben. Eine vollständige Liste der unterstützten Connector-Optionen finden Sie im Abschnitt SQLSpark-Parameter unter Amazon Redshift Redshift-Integration für Apache Spark.

Zur Vereinfachung möchten wir Sie hier noch einmal auf bestimmte neue Optionen hinweisen:

Name Erforderlich Standard Beschreibung

autopushdown

Nein TRUE

Wendet Prädikat- und Abfrage-Pushdown an, indem die logischen Spark-Betriebspläne erfasst und analysiert werden. SQL Die Operationen werden in eine SQL Abfrage übersetzt und dann in Amazon Redshift ausgeführt, um die Leistung zu verbessern.

autopushdown.s3_result_cache

Nein FALSE

Zwischenspeichert die SQL Abfrage, um Daten für die Amazon S3 S3-Pfadzuordnung im Speicher zu entladen, sodass dieselbe Abfrage nicht erneut in derselben Spark-Sitzung ausgeführt werden muss. Wird nur unterstützt wenn autopushdown aktiviert ist.

unload_s3_format

Nein PARQUET

PARQUET- Entlädt die Abfrageergebnisse im Parquet-Format.

TEXT- Entlädt die Abfrageergebnisse im durch Leerzeichen getrennten Textformat.

sse_kms_key

Nein N/A

Der KMS Schlüssel AWS SSE -, der für die Verschlüsselung während des UNLOAD Betriebs anstelle der Standardverschlüsselung für verwendet wird. AWS

extracopyoptions

Nein N/A

Eine Liste zusätzlicher Optionen, die beim Laden von Daten an den Amazon Redshift COPY Redshift-Befehl angehängt werden können, z. B. TRUNCATECOLUMNS oder MAXERROR n (weitere Optionen finden Sie unter COPY: Optionale Parameter).

Beachten Sie, dass nur Optionen verwendet werden können, die am Ende des Befehls sinnvoll sind, da diese Optionen an das Ende des COPY-Befehls angefügt werden. Damit sollten die meisten Anwendungsfälle abgedeckt werden.

csvnullstring (experimentell)

Nein NULL

Der String-Wert, der bei Verwendung von für Nullen geschrieben werden soll. CSV tempformat Dies sollte ein Wert sein, der in Ihren tatsächlichen Daten nicht vorkommt.

Diese neuen Parameter können auf folgende Weise verwendet werden.

Neue Optionen zur Leistungsverbesserung

Der neue Konnektor bietet einige neue Optionen zur Leistungsverbesserung:

  • autopushdown: Standardmäßig aktiviert.

  • autopushdown.s3_result_cache: Standardmäßig deaktiviert.

  • unload_s3_format: Standardmäßig PARQUET.

Informationen zur Verwendung dieser Optionen finden Sie unter Amazon-Redshift-Integration für Apache Spark. Es wird empfohlen, das autopushdown.s3_result_cache nicht einzuschalten, wenn Sie Lese- und Schreibvorgänge miteinander kombinieren, da die zwischengespeicherten Ergebnisse möglicherweise veraltete Informationen enthalten. Die Option unload_s3_format ist standardmäßig auf PARQUET für den UNLOAD-Befehl festgelegt, um die Leistung zu verbessern und die Speicherkosten zu reduzieren. Um das Standardverhalten des UNLOAD-Befehls zu verwenden, setzen Sie die Option auf TEXT zurück.

Neue Verschlüsselungsoption für das Lesen

Standardmäßig werden die Daten im temporären Ordner, den AWS Glue beim Lesen von Daten aus der Amazon-Redshift-Tabelle verwendet, mit der SSE-S3-Verschlüsselung verschlüsselt. Um Ihre Daten mit vom Kunden verwalteten Schlüsseln von AWS Key Management Service (AWS KMS) zu verschlüsseln, können Sie festlegen, ("sse_kms_key" → kmsKey) woher ksmKey die Schlüssel-ID stammt AWS KMS, und nicht die alte Einstellungsoption ("extraunloadoptions" → s"ENCRYPTED KMS_KEY_ID '$kmsKey'") in AWS Glue Version 3.0.

datasource0 = glueContext.create_dynamic_frame.from_catalog( database = "database-name", table_name = "table-name", redshift_tmp_dir = args["TempDir"], additional_options = {"sse_kms_key":"<KMS_KEY_ID>"}, transformation_ctx = "datasource0" )
IAMSupport-basiert JDBC URL

Der neue Connector unterstützt eine IAM basierte Verbindung, JDBC URL sodass Sie weder einen Benutzer/ein Passwort noch ein Geheimnis eingeben müssen. Bei einem IAM based JDBC URL verwendet der Connector die Job-Runtime-Rolle für den Zugriff auf die Amazon Redshift Redshift-Datenquelle.

Schritt 1: Fügen Sie die folgende minimal erforderliche Richtlinie an Ihre AWS Glue-Auftrag-Laufzeitrolle an.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": [ "arn:aws:redshift:<region>:<account>:dbgroup:<cluster name>/*", "arn:aws:redshift:*:<account>:dbuser:*/*", "arn:aws:redshift:<region>:<account>:dbname:<cluster name>/<database name>" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "redshift:DescribeClusters", "Resource": "*" } ] }

Schritt 2: Verwenden Sie IAM based JDBC URL wie folgt. Geben Sie eine neue Option DbUser mit dem Amazon-Redshift-Benutzernamen an, mit dem Sie eine Verbindung herstellen.

conn_options = { // IAM-based JDBC URL "url": "jdbc:redshift:iam://<cluster name>:<region>/<database name>", "dbtable": dbtable, "redshiftTmpDir": redshiftTmpDir, "aws_iam_role": aws_iam_role, "DbUser": "<Redshift User name>" // required for IAM-based JDBC URL } redshift_write = glueContext.write_dynamic_frame.from_options( frame=dyf, connection_type="redshift", connection_options=conn_options ) redshift_read = glueContext.create_dynamic_frame.from_options( connection_type="redshift", connection_options=conn_options )
Anmerkung

A unterstützt DynamicFrame derzeit nur ein IAM based JDBC URL mit a DbUser im GlueContext.create_dynamic_frame.from_options Workflow.

Migrieren von der AWS Glue-Version 3.0 zu Version 4.0

In AWS Glue 4.0 haben ETL Jobs Zugriff auf einen neuen Amazon Redshift Spark-Konnektor und einen neuen JDBC Treiber mit unterschiedlichen Optionen und Konfigurationen. Der neue Amazon-Redshift-Konnektor und -Treiber sind auf Leistung ausgelegt und gewährleisten die Transaktionskonsistenz Ihrer Daten. Diese Produkte sind in der Amazon-Redshift-Dokumentation dokumentiert. Weitere Informationen finden Sie unter:

Einschränkung für Tabellen-/Spaltennamen und Kennungen

Für den neuen Amazon-Redshift-Spark-Konnektor und -Treiber gelten strengere Anforderungen für den Redshift-Tabellennamen. Weitere Informationen finden Sie unter Namen und Kennungen zum Definieren des Namens Ihrer Amazon-Redshift-Tabelle. Der Workflow für Auftragslesezeichen funktioniert möglicherweise nicht mit einem Tabellennamen, der nicht mit den Regeln übereinstimmt, und mit bestimmten Zeichen, z. B. einem Leerzeichen.

Wenn Sie über veraltete Tabellen mit Namen verfügen, die nicht den Regeln für Namen und Kennungen entsprechen, und Probleme mit Lesezeichen sehen (Aufträge, die alte Amazon-Redshift-Tabellendaten neu verarbeiten), empfehlen wir Ihnen, Ihre Tabellennamen umzubenennen. Weitere Informationen finden Sie in den ALTERTABLEBeispielen.

Änderung des Standard-Tempformats in Dataframe

Der Spark-Connector der AWS Glue Version 3.0 ist CSV beim Schreiben tempformat in Amazon Redshift standardmäßig auf. Um konsistent zu sein, wird in der AWS Glue-Version 3.0 der DynamicFrame immer noch standardmäßig von dem tempformat verwendet, um CSV zu verwenden. Wenn Sie Spark Dataframe zuvor APIs direkt mit dem Amazon Redshift Spark-Konnektor verwendet haben, können Sie den Wert CSV in den DataframeReader Optionen/explizit tempformat auf setzen. Writer Andernfalls wird tempformat im neuen Spark-Konnektor standardmäßig auf AVRO festgelegt.

Verhaltensänderung: Ordnen Sie den Amazon Redshift Redshift-Datentyp REAL dem Spark-Datentyp zu, FLOAT anstatt DOUBLE

In der AWS Glue-Version 3.0 wird Amazon Redshift REAL in einen DOUBLE-Typ von Spark konvertiert. Der neue Amazon-Redshift-Spark-Konnektor hat das Verhalten so aktualisiert, dass der REAL-Typ von Amazon Redshift in den FLOAT-Typ von Spark konvertiert wird und umgekehrt. Wenn Sie einen älteren Anwendungsfall haben, bei dem Sie den REAL-Typ von Amazon Redshift weiterhin einem DOUBLE-Typ von Spark zuordnen möchten, können Sie die folgende Problemumgehung verwenden:

  • Ordnen Sie für eine DynamicFrame den Float-Typ einem Double-Typ mit DynamicFrame.ApplyMapping zu. Für eine Dataframe müssen Sie cast verwenden.

Codebeispiel:

dyf_cast = dyf.apply_mapping([('a', 'long', 'a', 'long'), ('b', 'float', 'b', 'double')])