Andere Konfigurationsoptionen - Amazon Redshift

Amazon Redshift wird UDFs ab dem 1. November 2025 die Erstellung von neuem Python nicht mehr unterstützen. Wenn Sie Python verwenden möchten UDFs, erstellen Sie das UDFs vor diesem Datum liegende. Bestehendes Python UDFs wird weiterhin wie gewohnt funktionieren. Weitere Informationen finden Sie im Blogbeitrag.

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.

Andere Konfigurationsoptionen

Auf dieser Seite finden Sie Beschreibungen der Optionen, die Sie für den Amazon Redshift Spark-Connector angeben können.

Maximale Größe von Zeichenkettenspalten

Während des Erstellens von Tabellen erstellt Redshift Zeichenfolgespalten als Textspalten, die als VARCHAR(256) gespeichert werden. Wenn Sie Spalten benötigen, die größere Größen unterstützen, können Sie die maximale Länge von Zeichenfolgespalten mithilfe von maxlength angeben. Nachstehend finden Sie ein Beispiel zum Angeben von maxlength.

columnLengthMap.foreach { case (colName, length) => val metadata = new MetadataBuilder().putLong("maxlength", length).build() df = df.withColumn(colName, df(colName).as(colName, metadata)) }

Spaltentyp

Verwenden Sie das Feld redshift_type, um einen Spaltentyp festzulegen.

columnTypeMap.foreach { case (colName, colType) => val metadata = new MetadataBuilder().putString("redshift_type", colType).build() df = df.withColumn(colName, df(colName).as(colName, metadata)) }

Kompressionskodierung für eine Spalte

Verwenden Sie das Kodierungsfeld, um eine spezifische Kompressionskodierung für eine Spalte zu verwenden. Eine vollständige Liste der unterstützten Kompressionskodierungen finden Sie unter Kompressionskodierungen.

Beschreibung für eine Spalte

Verwenden Sie das Feld description, um eine Beschreibung anzugeben.

Authentifizierung zwischen Redshift und Amazon S3

Standardmäßig wird das Ergebnis im Parquet-Format in Amazon S3 entladen. Geben Sie folgende Option an, um das Ergebnis als Textdatei mit Pipe-Trennzeichen zu entladen.

.option("unload_s3_format", "TEXT")

Pushdown-Anweisungen

Parameter Erforderlich Standard Beschreibung
spark.datasource.redshift.community.autopushdown.lazyMode Nein True

Gibt an, ob der Connector Pushdown-Anweisungen in Redshift träge ausführen soll.

Wenn der Wert true ist, ruft der Spark-Connector alle zugehörigen Modelle und Informationen ab, bevor die Abfrage ausgeführt wird, was in der Regel zu einer besseren Leistung führt.

Wenn der Wert false ist, führt der Spark-Connector Pushdown-Anweisungen sofort im Spark-Treiber-Hauptthread aus und wird ausdrucksübergreifend serialisiert.

Connector-Parameter

Die Parameterzuordnung oder OPTIONS in Spark SQL unterstützt die folgenden Einstellungen.

Parameter Erforderlich Standard Beschreibung
dbtable Ja, wenn keine Abfrage angegeben ist N/A Die Tabelle, die in Redshift erstellt oder aus der gelesen werden soll. Dieser Parameter ist erforderlich, wenn Sie Daten in Redshift speichern.
query Ja, wenn dbtable nicht angegeben ist N/A Die Abfrage, aus der in Redshift gelesen werden soll.
user Nein N/A Der Redshift-Benutzername. Muss mit dem Passwort-Parameter verwendet werden. Gilt nur, wenn der Benutzer und das Passwort keine Parameter in der URL sind. Wenn beide verwendet werden, tritt ein Fehler auf.
password Nein N/A Das Redshift-Passwort. Muss mit dem Benutzer-Parameter verwendet werden. Gilt nur, wenn der Benutzer und das Passwort keine Parameter in der URL sind. Wenn beide verwendet werden, tritt ein Fehler auf.
URL Nein N/A

EINE JDBC-URL. Das Format ist jdbc:subprotocol://host:port/database?user=username&password=password.

„Subprotocol“ kann postgresql oder Redshift sein, je nachdem, welchen JDBC-Treiber Sie geladen haben. Beachten Sie, dass sich ein Redshift-kompatibler Treiber im Klassenpfad befinden und dieser URL entsprechen muss.

Host und Port sollten auf den Redshift-Masterknoten verweisen. Daher müssen Sie die and/or Sicherheitsgruppen-VPC konfigurieren, um den Zugriff von Ihrer Treiberanwendung aus zu ermöglichen.

„Database“ ist der Name der Redshift-Datenbank.

„User“ und „Password“ sind Anmeldeinformationen für den Zugriff auf die Datenbank, die in diese URL für JDBC eingebettet sein müssen, und der Datenbankbenutzer muss über die erforderlichen Berechtigungen für den Zugriff auf die Tabelle verfügen.

aws_iam_role Nur wenn Sie IAM-Rollen zur Autorisierung von Redshift-Vorgängen verwenden COPY/UNLOAD N/A Vollständig spezifizierter ARN der IAM-Rolle, die dem Redshift-Cluster zugeordnet ist
forward_spark_s3_credentials Nein False Gibt an, ob diese Bibliothek automatisch die Anmeldeinformationen erkennen soll, die Spark für die Verbindung mit Amazon S3 verwendet, und ob diese Anmeldeinformationen über den JDBC-Treiber an Redshift weitergeleitet werden sollen. Diese Anmeldeinformationen werden als Teil der JDBC-Abfrage gesendet. Daher empfehlen wir, bei Verwendung dieser Option die SSL-Verschlüsselung mit JDBC-Verbindung zu aktivieren.
temporary_aws_access_key_id Nein N/A AWS Zugriffsschlüssel. Muss über Schreibberechtigungen für den S3-Bucket verfügen.
temporary_aws_secret_access_key Nein N/A AWS geheimer Zugriffsschlüssel, der dem Zugriffsschlüssel entspricht.
temporary_aws_session_token Nein N/A AWS Sitzungstoken, das dem bereitgestellten Zugriffsschlüssel entspricht.
tempdir Nein N/A Ein beschreibbarer Speicherort in Amazon S3. Wird zum Entladen von Daten beim Lesen und zum Laden von Avro-Daten in Redshift beim Schreiben verwendet. Wenn Sie eine Redshift-Datenquelle für Spark als Teil einer regulären ETL-Pipeline verwenden, kann es nützlich sein, eine Lebenszyklus-Richtlinie für einen Bucket festzulegen und diesen als temporären Speicherort für diese Daten zu verwenden.
jdbcdriver Nein Wird durch das Unterprotokoll der JDBC-URL bestimmt Der Klassenname des zu verwendenden JDBC-Treibers. Diese Klasse muss sich im Klassenpfad befinden. In den meisten Fällen sollte die Angabe dieser Option nicht erforderlich sein, da der entsprechende Treiber-Klassenname automatisch durch das Unterprotokoll der JDBC-URL bestimmt werden sollte.
diststyle Nein Even Der Redshift-Verteilungsstil, der beim Erstellen einer Tabelle verwendet werden soll. Gültige Optionen sind EVEN, KEY oder ALL. Wenn Sie KEY verwenden, müssen Sie auch einen Verteilungsschlüssel mit der Option distkey festlegen.
distkey Nein, es sei denn, Sie verwenden DISTSTYLE_KEY N/A Der Name einer Tabellenspalte, die beim Erstellen einer Tabelle als Verteilungsschlüssel verwendet werden soll.
sortkeyspec Nein N/A Eine vollständige Redshift-Definition für Sortierschlüssel.
include_column_list Nein False Gibt an, ob diese Bibliothek die Spalten automatisch aus dem Schema extrahieren und sie gemäß den Optionen für die Zuweisung von Spalten dem Befehl COPY hinzufügen soll.
description Nein N/A Eine Beschreibung der Tabelle. Die Beschreibung wird mit dem Befehl SQL COMMENT festgelegt und in den meisten Abfragetools angezeigt. Sehen Sie sich die description-Metadaten an, um Beschreibungen für einzelne Spalten festzulegen.
preactions Nein N/A Eine durch Semikolons getrennte Liste von SQL-Befehlen, die vor dem Laden des COPY-Befehls ausgeführt werden müssen. Es kann nützlich sein, DELETE-Befehle oder ähnliches auszuführen, bevor neue Daten geladen werden. Wenn der Befehl %s enthält, wird der Tabellenname vor der Laufzeit formatiert (falls Sie eine Staging-Tabelle verwenden). Schlägt dieser Befehl fehl, wird er als Ausnahme behandelt. Wenn Sie eine Staging-Tabelle verwenden, werden die Änderungen rückgängig gemacht und die Backup-Tabelle wiederhergestellt, falls „preactions“ fehlschlägt.
extracopyoptions Nein N/A

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

Beachten Sie Folgendes: Da diese Optionen an das Ende des Befehls COPY angehängt werden, können nur Optionen verwendet werden, die am Ende des Befehls Sinn ergeben. Das sollte die meisten möglichen Anwendungsfälle abdecken.

sse_kms_key Nein N/A Die AWS KMS Schlüssel-ID, die für die serverseitige Verschlüsselung in S3 während des Redshift UNLOAD-Vorgangs anstelle der AWS Standardverschlüsselung verwendet werden soll. Die IAM-Rolle von Redshift muss Zugriff auf den KMS-Schlüssel haben, um damit schreiben zu können, und die IAM-Rolle von Spark muss Zugriff auf den Schlüssel für Leseoperationen haben. Das Lesen der verschlüsselten Daten erfordert keine Änderungen (AWS erledigt dies), solange die IAM-Rolle von Spark über den richtigen Zugriff verfügt.
tempformat Nein AVRO Das Format, in dem temporäre Dateien in Amazon S3 gespeichert werden, wenn in Redshift geschrieben wird. Gültige Werte sind AVRO, CSV und CSV GZIP (komprimierte Größe).
csvnullstring (experimentell) Nein Null Der Zeichenfolgenwert, der bei Verwendung von CSV als „tempformat“ für Nullen geschrieben werden soll. Dies sollte ein Wert sein, der in Ihren tatsächlichen Daten nicht vorkommt.
autopushdown Nein True Gibt an, ob Prädikat- und Abfrage-Pushdown angewendet werden soll, indem die logischen Spark-Pläne für SQL-Operationen erfasst und analysiert werden. Die Operationen werden in eine SQL-Abfrage übersetzt und dann in Redshift ausgeführt, um die Leistung zu verbessern.
autopushdown.s3_result_cache Nein False Speichern Sie die SQL-Abfrage im Cache, um Daten aus der Amazon-S3-Pfadzuweisung 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. Wir empfehlen, diesen Parameter nicht zu verwenden, wenn Lese- und Schreiboperationen kombiniert werden, da zwischengespeicherte Ergebnisse möglicherweise veraltete Informationen enthalten.
unload_s3_format Nein Parquet Das Format, mit dem Abfrageergebnisse entladen werden sollen. Gültige Optionen sind Parquet und Text, bei dem die Abfrageergebnisse im Textformat mit Pipe-Trennzeichen entladen werden.
extraunloadoptions Nein N/A Zusätzliche Optionen, die an den Redshift-Befehl UNLOAD angehängt werden können. Es ist nicht garantiert, dass alle Optionen funktionieren, da einige Optionen mit anderen im Connector festgelegten Optionen im Konflikt stehen könnten.
copydelay Nein 30000 Die Verzögerung (in ms) zwischen Wiederholungsversuchen für Redshift-COPY-Operationen.
copyretrycount Nein 2 Die Anzahl der erneuten Versuche von Redshift-COPY-Operationen
tempdir_region Nein N/A

Die AWS Region, in der sich tempdir befindet. Die Einstellung dieser Option verbessert die Leistung des Connectors bei Interaktionen mit tempdir und gibt diesen Wert während der Lese- und Schreibvorgänge des Connector automatisch als Teil der COPY- und UNLOAD-Operationen an.

Diese Einstellung wird in folgenden Situationen empfohlen:

1) Wenn der Connector außerhalb von läuft AWS, schlägt die automatische Regionserkennung fehl und wirkt sich negativ auf die Leistung des Connectors aus.

2) Wenn tempdir sich in einer anderen Region als der Redshift-Cluster befindet, da durch die Verwendung dieser Einstellung die Notwendigkeit entfällt, die Region mit dem extracopyoptions- und extraunloadoptions-Parameter manuell zu versorgen. tempdir kann sich bei der Verwendung nicht in einer anderen Region als der Redshift-Cluster befinden, wenn PARQUET als tempformat verwendet wird, auch wenn dabei dieser Parameter verwendet wird.

3) Wenn der Connector in einer anderen Region als tempdir ausgeführt wird, da dies die Zugriffsleistung des Connectors von tempdir verbessert.

secret.id Nein N/A Der Name oder der ARN Ihres Secrets, der in AWS Secrets Manager gespeichert ist. Sie können diesen Parameter verwenden, um automatisch Redshift-Anmeldeinformationen bereitzustellen, aber nur, wenn der Benutzer, das Passwort und die DbUser-Anmeldeinformationen nicht an die JDBC-URL oder als andere Optionen übergeben werden.
secret.region Nein N/A

Die primäre AWS Region, z. B. USA Ost (Nord-Virginia), in der nach dem secret.id Wert gesucht werden soll.

Wenn Sie diese Region nicht angeben, versucht der Connector, die Standardmäßige Kette der Anbieter von Anmeldeinformationen zu verwenden, um die Region der secret.id aufzulösen. In einigen Fällen, z. B. wenn Sie den Connector außerhalb eines verwenden, kann der Connector die Region nicht finden. Diese Einstellung wird in folgenden Situationen empfohlen:

1) Wenn der Connector außerhalb von läuft AWS, schlägt die automatische Regionserkennung fehl und verhindert die Authentifizierung mit Redshift

Wenn der Connector in einer anderen Region als secret.id ausgeführt wird, da dies die Zugriffsleistung des Connector vom Secret verbessert.

geheim. vpcEndpointUrl Nein N/A Die PrivateLink DNS-Endpunkt-URL für das AWS Secrets Manager Überschreiben der Standard-Anmeldeinformationsanbieterkette.
geheim. vpcEndpointRegion Nein N/A Die PrivateLink DNS-Endpunktregion für das AWS Secrets Manager Überschreiben der Standard-Anmeldeinformationsanbieterkette.
jdbc.* Nein N/A Zusätzliche Parameter, die an den zugrunde liegenden JDBC-Treiber übergeben werden, wobei der Platzhalter der Name des JDBC-Parameters ist, z. B. jdbc.ssl. Beachten Sie, dass das jdbc-Präfix entfernt wird, bevor es an den JDBC-Treiber übergeben wird. Alle möglichen Optionen für den Redshift-JDBC-Treiber finden Sie unter Optionen für die Konfiguration des JDBC-Treibers Version 2.x.
Bezeichnung Nein " " Ein Bezeichner, der in den Abfragegruppensatz aufgenommen werden soll, wenn Abfragen mit dem Connector ausgeführt werden. Darf maximal 100 Zeichen enthalten, und alle Zeichen müssen unicodeIdentifierParts entsprechen. Wenn Ihre Kennung mehr als 100 Zeichen enthält, wird der Überschuss entfernt. Wenn Sie eine Abfrage mit dem Connector ausführen, wird die Abfragegruppe als Zeichenfolge im JSON-Format festgelegt, z. B.
{"spark-redshift-connector":{"svc":"","ver":"5.1.0-amzn-1-spark_3.3","op":"Read","lbl":""}}`)
. Diese Option ersetzt den Wert des lbl-Schlüssels.
Anmerkung

Danksagung: Diese Dokumentation enthält Beispielcode und Sprache, die von der Apache Software Foundation entwickelt wurden und unter der Apache-2.0-Lizenz lizenziert sind.