Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Utilisation de S3 Select avec Spark pour améliorer les performances des requêtes - Amazon EMR

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.

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.

Utilisation de S3 Select avec Spark pour améliorer les performances des requêtes

Important

Amazon S3 Select n’est plus disponible pour les nouveaux clients. Les clients existants d’Amazon S3 Select peuvent continuer à utiliser cette fonctionnalité comme d’habitude. En savoir plus

À partir de la version 5.17.0 d'Amazon EMR, vous pouvez utiliser S3 Select avec Spark sur Amazon EMR. S3 Select permet aux applications de ne récupérer qu’un sous-ensemble de données d’un objet. Pour Amazon EMR, le travail de calcul qu’implique le filtrage d’importants jeux de données pour le traitement est « poussé » du cluster vers Amazon S3, ce qui peut améliorer les performances de certaines applications et réduire le volume de données transféré entre Amazon EMR et Amazon S3.

S3 Select est pris en charge avec les fichiers CSV et JSON à l'aide des valeurs s3selectCSV et s3selectJSON pour spécifier le format de données. Pour plus d’informations et d’exemples, consultez Spécifier S3 Select dans votre code.

S3 Select est-il adapté à mon application ?

Nous vous recommandons de tester vos applications avec et sans S3 Select pour voir si son utilisation peut être adaptée à votre application.

Utilisez les consignes suivantes pour déterminer si votre application peut utiliser S3 Select :

  • Votre requête exclut plus de la moitié de l'ensemble de données d'origine.

  • Votre connexion réseau entre Amazon S3 et le cluster Amazon EMR a une bonne vitesse de transfert et une bande passante disponible. Amazon S3 ne compresse pas les réponses HTTP, de sorte que la taille de la réponse est susceptible d'augmenter pour les fichiers d'entrée compressés.

Considérations et restrictions

  • Le chiffrement côté serveur d'Amazon S3 avec des clés de chiffrement fournies par le client (SSE-C) et le chiffrement côté client ne sont pas pris en charge.

  • La propriété AllowQuotedRecordDelimiters n'est pas prise en charge. Si cette propriété est spécifiée, la requête échoue.

  • Seuls les fichiers CSV et JSON au format UTF-8 sont pris en charge. CSVsLes lignes multiples ne sont pas prises en charge.

  • Seuls les fichiers non compressés ou gzip sont pris en charge.

  • Les options Spark CSV et JSON telles que nanValue, positiveInf, negativeInf et les options liées aux enregistrements corrompus (par exemple, les modes failfast et dropmalformed) ne sont pas prises en charge.

  • L'utilisation de virgules (,) avec des décimales n'est pas prise en charge. Par exemple, 10,000 n'est pas pris en charge, mais 10000 l'est.

  • Les caractères de commentaire ne sont pas pris en charge dans la dernière ligne.

  • Des lignes vides à la fin d'un fichier ne sont pas traitées.

  • Les filtres suivants ne sont pas transmis à Amazon S3 :

    • Fonctions d'agrégation, telles que COUNT() et SUM().

    • Filtres qui CAST() un attribut. Par exemple, CAST(stringColumn as INT) = 1.

    • Filtres avec un attribut d'objet ou complexe. Par exemple, intArray[1] = 1, objectColumn.objectNumber = 1.

    • Filtres pour lesquels la valeur n'est pas une valeur littérale. Par exemple, intColumn1 = intColumn2

    • Seuls les types de données S3 Select pris en charge sont pris en charge par les limitations de documentation.

Spécifier S3 Select dans votre code

Les exemples suivants montrent comment spécifier S3 Select pour CSV à l'aide de Scala, SQL, R et PySpark. Vous pouvez utiliser S3 Select pour JSON de la même manière. Pour une liste d'options, leurs valeurs par défaut et leurs limitations, consultez Options.

PySpark
spark .read .format("s3selectCSV") // "s3selectJson" for Json .schema(...) // optional, but recommended .options(...) // optional .load("s3://path/to/my/datafiles")
R
read.df("s3://path/to/my/datafiles", "s3selectCSV", schema, header = "true", delimiter = "\t")
Scala
spark .read .format("s3selectCSV") // "s3selectJson" for Json .schema(...) // optional, but recommended .options(...) // optional. Examples: // .options(Map("quote" -> "\'", "header" -> "true")) or // .option("quote", "\'").option("header", "true") .load("s3://path/to/my/datafiles")
SQL
CREATE TEMPORARY VIEW MyView (number INT, name STRING) USING s3selectCSV OPTIONS (path "s3://path/to/my/datafiles", header "true", delimiter "\t")
spark .read .format("s3selectCSV") // "s3selectJson" for Json .schema(...) // optional, but recommended .options(...) // optional .load("s3://path/to/my/datafiles")

Options

Les options suivantes sont disponibles lors de l'utilisation de s3selectCSV et s3selectJSON. Si rien n'est spécifié, les valeurs par défaut sont utilisées.

Options avec S3selectCSV

Option Par défaut Utilisation

compression

"none"

Indique si la compression est utilisée. "gzip" est le seul paramètre pris en charge, à part "none".

delimiter

","

Spécifie le caractère délimiteur de champ.

quote

'\"'

Spécifie le caractère de citation. La spécification d'une chaîne vide n'est pas prise en charge et mène à une erreur de XML malformé.

escape

'\\'

Spécifie le caractère échappe.

header

"false"

"false" spécifie qu'il n'y a pas d'en-tête. "true" spécifie qu'une en-tête est dans la première ligne. Les en-têtes ne sont prises en charge que pour la première ligne, et les lignes vides avant une en-tête ne sont pas prises en charge.

comment

"#"

Spécifie le caractère de commentaire. L'indicateur de commentaire ne peut pas être désactivé. En d'autres termes, la valeur de \u0000 n'est pas prise en charge.

nullValue

""

Options avec S3selectJSON

Option Par défaut Utilisation

compression

"none"

Indique si la compression est utilisée. "gzip" est le seul paramètre pris en charge, à part "none".

multiline

« false »

"false" spécifie que JSON est en format LINES S3 Select. Cela implique que chaque ligne des données d'entrée contient un seul objet JSON. "true" spécifie que JSON est en format DOCUMENT S3 Select, ce qui signifie qu'un objet JSON peut s'étendre sur plusieurs lignes dans les données d'entrée.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.