Amazon Redshift ne prendra plus en charge la création de nouveaux Python UDFs à compter du 1er novembre 2025. Si vous souhaitez utiliser Python UDFs, créez la version UDFs antérieure à cette date. Le Python existant UDFs continuera à fonctionner normalement. Pour plus d'informations, consultez le billet de blog
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Autres options de configuration
Sur cette page, vous trouverez des descriptions des options que vous pouvez spécifier pour le connecteur Amazon Redshift Spark.
Taille maximale des colonnes de chaînes
Redshift crée des colonnes de chaîne sous forme de colonnes de texte lors de la création de tables, qui sont stockées en tant que VARCHAR(256). Si vous souhaitez que les colonnes prennent en charge de plus grandes tailles, vous pouvez utiliser maxlength pour spécifier la longueur maximale des colonnes de chaîne. Voici un exemple qui montre comment spécifier maxlength
.
columnLengthMap.foreach { case (colName, length) => val metadata = new MetadataBuilder().putLong("maxlength", length).build() df = df.withColumn(colName, df(colName).as(colName, metadata)) }
Type de colonne
Pour définir un type de colonne, utilisez le champ redshift_type
.
columnTypeMap.foreach { case (colName, colType) => val metadata = new MetadataBuilder().putString("redshift_type", colType).build() df = df.withColumn(colName, df(colName).as(colName, metadata)) }
Codage par compression sur une colonne
Pour utiliser un encodage de compression spécifique sur une colonne, utilisez le champ d'encodage. Pour obtenir la liste complète des encodages de compression pris en charge, consultez Encodages de compression.
Description d'une colonne
Pour définir une description, utilisez le champ description
.
Authentification entre Redshift et Amazon S3
Par défaut, le résultat est déchargé sur Amazon S3 au format Parquet. Pour décharger le résultat sous forme de fichier texte séparé par une barre verticale, spécifiez l'option suivante.
.option("unload_s3_format", "TEXT")
Déclarations push down
Paramètre | Obligatoire | Par défaut | Description |
---|---|---|---|
spark.datasource.redshift.community.autopushdown.lazyMode | Non | True | Spécifie si le connecteur doit exécuter lentement les instructions pushdown Redshift. S'il a pour valeur true, le connecteur Spark récupère tous les modèles et informations associés avant d'exécuter la requête, ce qui permet généralement d'obtenir de meilleures performances. S'il a pour valeur false, le connecteur Spark exécute les instructions pushdown immédiatement dans le thread principal du pilote Spark et il est sérialisé entre les expressions. |
Paramètres du connecteur
La carte des paramètres ou OPTIONS
dans Spark SQL prend en charge les paramètres suivants.
Paramètre | Obligatoire | Par défaut | Description |
---|---|---|---|
dbtable | Oui, sauf si la requête est spécifiée | N/A | La table à partir duquel créer ou lire dans Redshift. Ce paramètre est requis lors du réenregistrement de données dans Redshift. |
query | Oui, sauf si dbtable est spécifié | N/A | La requête à partir de laquelle lire dans Redshift. |
utilisateur | Non | N/A | Le nom d'utilisateur Redshift. Doit être utilisé avec le paramètre de mot de passe. Valide uniquement si l'utilisateur et le mot de passe ne sont pas des paramètres dans l'URL. Utiliser les deux entraînera une erreur. |
mot de passe | Non | N/A | Le mot de passe Redshift. Doit être utilisé avec le paramètre utilisateur. Valide uniquement si l'utilisateur et le mot de passe ne sont pas des paramètres dans l'URL. Utiliser les deux entraînera une erreur. |
url | Non | N/A |
Une URL JDBC. Le format est le suivant : jdbc:subprotocol://host:port/database?user=username&password=password. Le sous-protocole peut être postgresql ou Redshift, en fonction du pilote JDBC que vous avez chargé. Notez qu'un pilote compatible avec Redshift doit se trouver dans le chemin de classe et correspondre à cette URL. L'hôte et le port doivent pointer vers le nœud principal Redshift. Vous devez donc configurer les groupes de sécurité and/or VPC pour autoriser l'accès depuis votre application de pilote. Database est le nom de la base de données Redshift. L'utilisateur et le mot de passe sont des informations d'identification pour accéder à la base de données. Ils doivent être intégrés à cette URL pour JDBC, et votre compte utilisateur doit disposer des autorisations nécessaires pour accéder à la table. |
aws_iam_role | Uniquement si vous utilisez des rôles IAM pour autoriser les opérations Redshift COPY/UNLOAD | N/A | ARN entièrement spécifié du rôle IAM attaché au cluster Redshift. |
forward_spark_s3_credentials | Non | False | Indique si cette bibliothèque doit découvrir automatiquement les informations d'identification que Spark utilise pour se connecter à Amazon S3 et s'il faut transmettre ces informations d'identification à Redshift via le pilote JDBC. Ces informations d'identification sont envoyées dans le cadre de la requête JDBC. Nous vous recommandons donc d'activer le chiffrement SSL avec une connexion JDBC lorsque vous utilisez cette option. |
temporary_aws_access_key_id | Non | N/A | AWS clé d'accès. Vous devez disposer d'autorisations d'écriture sur le compartiment S3. |
temporary_aws_secret_access_key | Non | N/A | AWS une clé d'accès secrète correspondant à la clé d'accès. |
temporary_aws_session_token | Non | N/A | AWS jeton de session correspondant à la clé d'accès fournie. |
tempdir | Non | N/A | Emplacement accessible en écriture dans Amazon S3. Utilisé pour décharger des données lors de la lecture et charger les données Avro dans Redshift lors de l'écriture. Si vous utilisez une source de données Redshift pour Spark dans le cadre d'un pipeline ETL normal, il peut être utile de définir une politique de cycle de vie sur un compartiment et de l'utiliser comme emplacement temporaire pour ces données. |
jdbcdriver | Non | Déterminé par le sous-protocole de l'URL JDBC | Nom de classe du pilote JDBC à utiliser. Cette classe doit se trouver sur le chemin de classe. Dans la plupart des cas, il ne devrait pas être nécessaire de spécifier cette option, car le nom de classe du pilote approprié doit être automatiquement déterminé par le sous-protocole de l'URL JDBC. |
diststyle | Non | Even | Styles de distribution Redshift à utiliser lors de la création d'une table. Les options valides sont EVEN, KEY ou ALL. Lorsque vous utilisez KEY, vous devez également définir une clé de distribution avec l'option distkey. |
distkey | Non, sauf si vous utilisez DISTSTYLE_KEY | N/A | Nom d'une colonne de la table à utiliser comme clé de distribution lors de la création d'une table. |
sortkeyspec | Non | N/A | Une définition complète des clés de tri Redshift. |
include_column_list | Non | False | Indique si cette bibliothèque doit extraire automatiquement les colonnes du schéma et les ajouter à la commande COPY conformément aux options de mappage de colonnes. |
description | Non | N/A | Description de la table. La description est définie avec la commande SQL COMMENT et apparaît dans la plupart des outils de requête. Consultez les métadonnées description pour définir des descriptions sur des colonnes individuelles. |
preactions | Non | N/A | Une liste délimitée par des points-virgules de commandes SQL à exécuter avant de charger la commande COPY. Il peut être utile d'exécuter des commandes DELETE ou similaires avant de charger de nouvelles données. Si la commande contient %s, le nom de la table sera formaté avant l'exécution (si vous utilisez une table intermédiaire). Si cette commande échoue, elle est traitée comme une exception. Si vous utilisez une table intermédiaire, les modifications seront annulées et la table de sauvegarde sera restaurée si les actions préalables échouent. |
extracopyoptions | Non | N/A |
Liste d'options supplémentaires à ajouter à la commande Redshift COPY lors du chargement de données (par exemple Notez que ces options étant ajoutées à la fin de la commande |
sse_kms_key | Non | N/A | L'ID de AWS KMS clé à utiliser pour le chiffrement côté serveur dans S3 lors de l'opération Redshift UNLOAD plutôt que le chiffrement par défaut. AWS Le rôle IAM Redshift doit avoir accès à la clé KMS pour écrire avec elle et le rôle IAM Spark doit avoir accès à la clé pour les opérations de lecture. La lecture des données chiffrées ne nécessite aucune modification (AWS gère cela) tant que le rôle IAM de Spark dispose des droits d'accès appropriés. |
tempformat | Non | AVRO | Format dans lequel enregistrer les fichiers temporaires dans Amazon S3 lors de l'écriture dans Redshift. Les valeurs valides sont AVRO, CSV et CSV GZIP (CSV compressé). |
csvnullstring (expérimental) | Non | Null | La valeur de chaîne à écrire pour les valeurs nulles lors de l'utilisation de tempformat CSV. Il doit s'agir d'une valeur qui n'apparaît pas dans vos données réelles. |
autopushdown | Non | True | Indique s'il faut appliquer le pushdown des prédicats et des requêtes en capturant et en analysant les plans logiques de Spark pour les opérations SQL. Les opérations sont traduites en une requête SQL, puis exécutées dans Redshift pour améliorer les performances. |
autopushdown.s3_result_cache | Non | False | Mettez en cache la requête SQL pour décharger les données du mappage des chemins Amazon S3 en mémoire, afin que la même requête n'ait pas besoin de s'exécuter à nouveau dans la même session Spark. Uniquement pris en charge lorsque la fonction autopushdown est activée. Nous ne recommandons pas d'utiliser ce paramètre lorsque vous mélangez des opérations de lecture et d'écriture, car les résultats mis en cache peuvent contenir des informations périmées. |
unload_s3_format | Non | Parquet | Format utilisé pour décharger les résultats de la requête. Les options valides sont Parquet et Text, qui indiquent de décharger les résultats de la requête dans un format de texte séparé par une barre verticale. |
extraunloadoptions | Non | N/A | Options supplémentaires à ajouter à la commande Redshift UNLOAD. Le fonctionnement de toutes les options n'est pas garanti, car certaines d'entre elles peuvent entrer en conflit avec d'autres options définies dans le connecteur. |
copydelay | Non | 30 000 | Le délai (en ms) entre les tentatives pour les opérations COPY de Redshift. |
copyretrycount | Non | 2 | Nombre de tentatives d'opérations Redshift COPY. |
tempdir_region | Non | N/A | La AWS région où Ce paramètre est recommandé dans les situations suivantes : 1) Lorsque le connecteur fonctionne en dehors de AWS, la découverte automatique des régions échouera et affectera négativement les performances du connecteur. 2) Quand 3) Lorsque le connecteur fonctionne dans une région différente de |
secret.id | Non | N/A | Nom ou ARN de votre secret stocké dans AWS Secrets Manager. Vous pouvez utiliser ce paramètre pour fournir automatiquement les informations d'identification Redshift, mais uniquement si les informations d'identification d'utilisateur, de mot de passe et DbUser ne sont pas transmises dans l'URL JDBC ni sous la forme d'autres options. |
secret.region | Non | N/A | AWS Région principale, telle que USA Est (Virginie du Nord), dans laquelle rechercher la Si vous ne spécifiez pas cette région, le connecteur essaiera d'utiliser la chaîne de fournisseur d'informations d'identification par défaut pour résoudre la région de 1) Lorsque le connecteur fonctionne en dehors de AWS, la découverte automatique des régions échouera et empêchera l'authentification avec Redshift Lorsque le connecteur s'exécute dans une région différente de |
secret. vpcEndpointUrl | Non | N/A | URL du point de terminaison PrivateLink DNS à utiliser AWS Secrets Manager lors du remplacement de la chaîne de fournisseurs d'informations d'identification par défaut. |
secret. vpcEndpointRegion | Non | N/A | La région du point de terminaison PrivateLink DNS à utiliser AWS Secrets Manager lors du remplacement de la chaîne de fournisseurs d'informations d'identification par défaut. |
jdbc.* | Non | N/A | Paramètres supplémentaires à transmettre au pilote JDBC sous-jacent quand le caractère générique est le nom du paramètre JDBC, tels que jdbc.ssl. Notez que le préfixe jdbc sera supprimé avant d'être transmis au pilote JDBC. Pour voir toutes les options possibles pour le pilote JDBC Redshift, voir Options pour la configuration du pilote JDBC version 2.x. |
étiquette | Non | " " | Identifiant à inclure dans le groupe de requêtes défini lors de l'exécution de requêtes avec le connecteur. Doit comporter 100 caractères ou moins, et tous les caractères doivent être des unicodeIdentifierParts valides. Si votre identifiant comporte plus de 100 caractères, l'excédent est supprimé. Lors de l'exécution d'une requête avec le connecteur, le groupe de requêtes est défini sous la forme d'une chaîne au format JSON, telle que . Cette option remplace la valeur de la clé lbl . |
Note
Remerciement : cette documentation contient des exemples de code et de langage développés par l'Apache Software Foundation