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.
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.
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
- SQL
sc.read.format("s3select").schema(...).options(...).load("s3://bucket/filename")
CREATE TABLE name (...) USING S3SELECT LOCATION 's3://bucket/filename' [ OPTIONS (...) ]
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') |
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 |
Options spécifiques à JSON
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 :
-
**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.
-
Définir les clés dans la configuration Hadoop : Spécifiez les clés AWS dans les propriétés de configuration Hadoop.
-
Lorsque vous utilisez des clés AWS pour accéder à S3, définissez toujours les propriétés de configuration
fs.s3n.awsAccessKeyIdetfs.s3n.awsSecretAccessKeycomme indiqué dans l'exemple suivant ; les propriétésfs.s3a.access.keyetfs.s3a.secret.key*ne sont pas prises en charge*. -
Pour référencer le système de fichiers
s3a://, définissez les propriétésfs.s3n.awsAccessKeyIdetfs.s3n.awsSecretAccessKeydans un fichier de configuration XML Hadoop ou appelezsc.hadoopConfiguration.set()pour définir la configuration Hadoop globale de Spark.Scalasc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "$AccessKey")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "$SecretKey")Pythonsc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", ACCESS_KEY)
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", SECRET_KEY)
- Encoder les clés dans l'URI : Par exemple, l'URI
s3a://$AccessKey:$SecretKey@bucket/path/to/direncode la paire de clés (AccessKey,SecretKey).