Aller au contenu principal

Amazon S3 Select

Amazon S3 Select permet de récupérer uniquement les données requises d’un objet. Le connecteur Databricks S3 Select fournit une source de données Apache Spark qui exploite S3 Select. Lorsque vous utilisez une source de données S3 Select, le filtrage et la sélection de colonnes sur un DataFrame sont transférés, ce qui réduit la bande passante des données S3.

info

Expérimental

La documentation sur la fédération des query héritées a été retirée et pourrait ne pas être mise à jour. Les configurations mentionnées dans ce contenu ne sont ni officiellement approuvées ni testées par Databricks. Si la Lakehouse Federation prend en charge votre base de données source, Databricks recommande d'utiliser cette dernière.

Limitations

Amazon S3 Select prend en charge les formats de fichier suivants :

  • Fichiers CSV et JSON
  • Encodage UTF-8
  • GZIP ou sans compression

Le connecteur Databricks S3 Select présente les limitations suivantes :

  • Les types complexes (tableaux et objets) ne peuvent pas être utilisés en JSON
  • L'inférence de schéma n'est pas prise en charge.
  • Le fractionnement de fichiers n'est pas pris en charge, cependant les enregistrements multilignes sont pris en charge.
  • Les points de montage DBFS ne sont pas pris en charge.
important

Databricks vous encourage vivement à utiliser S3AFileSystem fourni par Databricks, qui est le default pour les schémas de système de fichiers s3a://, s3:// et s3n:// dans Databricks Runtime. Si vous avez besoin d'aide pour la migration vers S3AFileSystem, contactez l'assistance Databricks ou votre équipe de compte Databricks.

Utilisation

Scala
sc.read.format("s3select").schema(...).options(...).load("s3://bucket/filename")

Si l'extension du nom de fichier est .csv ou .json, le format est automatiquement détecté ; sinon, vous devez fournir l'option FileFormat.

Options

Cette section décrit les options pour tous les types de fichiers et les options spécifiques à CSV et JSON.

Options génériques

Nom de l'option

Valeur par défaut

Description

Format de fichier

« auto »

Type de fichier d'entrée ('auto', 'csv' ou 'JSON')

CompressionType

'aucun'

Codec de compression utilisé par le fichier d'entrée ('none' ou 'gzip')

Nom de l'option

Valeur par défaut

Description

Format de fichier

« auto »

Type de fichier d'entrée ('auto', 'csv' ou 'JSON')

CompressionType

'aucun'

Codec de compression utilisé par le fichier d'entrée ('none' ou 'gzip')

Options spécifiques au CSV

Nom de l'option

Valeur par défaut

Description

Valeur nulle

''

Chaîne de caractères représentant les valeurs nulles dans l’entrée

En-tête

false

S'il faut ignorer la première ligne de l'entrée (le contenu potentiel de l'en-tête est ignoré)

Commentaire

'#'

Les lignes commençant par la valeur de ce paramètre sont ignorées.

Délimiteur d'enregistrements

'n'

Caractère séparant les enregistrements dans un fichier

Délimiteur

,

Caractère séparant les champs au sein d'un enregistrement

Citation

»

Caractère utilisé pour citer les valeurs contenant des caractères réservés

Échappement

»

Caractère utilisé pour échapper le caractère de guillemet cité

AllowQuotedRecordDelimiter

false

Si les valeurs peuvent contenir des délimiteurs d'enregistrements entre guillemets

Nom de l'option

Valeur par défaut

Description

Valeur nulle

''

Chaîne de caractères représentant les valeurs nulles dans l’entrée

En-tête

false

S'il faut ignorer la première ligne de l'entrée (le contenu potentiel de l'en-tête est ignoré)

Commentaire

'#'

Les lignes commençant par la valeur de ce paramètre sont ignorées.

Délimiteur d'enregistrements

'n'

Caractère séparant les enregistrements dans un fichier

Délimiteur

,

Caractère séparant les champs au sein d'un enregistrement

Citation

»

Caractère utilisé pour citer les valeurs contenant des caractères réservés

Échappement

»

Caractère utilisé pour échapper le caractère de guillemet cité

AllowQuotedRecordDelimiter

false

Si les valeurs peuvent contenir des délimiteurs d'enregistrements entre guillemets

Options spécifiques à JSON

Nom de l'option

Valeur par défaut

Description

Type

document

Type d'entrée (« document » ou « lignes »)

Nom de l'option

Valeur par défaut

Description

Type

document

Type d'entrée (« document » ou « lignes »)

Authentification S3

Vous pouvez utiliser les méthodes d'authentification S3 (clés et profils d'instance) disponibles dans Databricks ; nous vous recommandons d'utiliser les profils d'instance. Il existe trois façons de fournir les identifiants :

  1. **Chaîne de fournisseur d'identifiant default (option recommandée) :** Les informations d'identification AWS sont automatiquement récupérées via DefaultAWSCredentialsProviderChain. Si vous utilisez des profils d'instance pour vous authentifier auprès de S3, vous devez utiliser cette méthode. D'autres méthodes de fourniture d'identifiants (méthodes 2 et 3) prennent le pas sur cette valeur par default.

  2. Définir les clés dans la configuration Hadoop : Spécifiez les clés AWS dans les propriétés de configuration Hadoop.

important
  • Lorsque vous utilisez des clés AWS pour accéder à S3, définissez toujours les propriétés de configuration fs.s3n.awsAccessKeyId et fs.s3n.awsSecretAccessKey comme indiqué dans l'exemple suivant ; les propriétés fs.s3a.access.key et fs.s3a.secret.key *ne sont pas prises en charge*.

  • Pour référencer le système de fichiers s3a://, définissez les propriétés fs.s3n.awsAccessKeyId et fs.s3n.awsSecretAccessKey dans un fichier de configuration XML Hadoop ou appelez sc.hadoopConfiguration.set() pour définir la configuration Hadoop globale de Spark.

    Scala
    sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "$AccessKey")
    sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "$SecretKey")
    Python
    sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", ACCESS_KEY)
    sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", SECRET_KEY)
  1. Encoder les clés dans l'URI : Par exemple, l'URI s3a://$AccessKey:$SecretKey@bucket/path/to/dir encode la paire de clés (AccessKey, SecretKey).