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. Beachten Sie Folgendes: Da diese Optionen an das Ende des Befehls |
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 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 3) Wenn der Connector in einer anderen Region als |
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 Wenn Sie diese Region nicht angeben, versucht der Connector, die Standardmäßige Kette der Anbieter von Anmeldeinformationen zu verwenden, um die Region der 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 |
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. . Diese Option ersetzt den Wert des lbl -Schlüssels. |
Anmerkung
Danksagung: Diese Dokumentation enthält Beispielcode und Sprache, die von der Apache Software Foundation