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
Avec les EMR versions 5.17.0 et ultérieures d'Amazon, vous pouvez utiliser S3 Select
S3 Select est pris en charge avec CSV JSON les fichiers utilisant s3selectCSV
et s3selectJSON
les valeurs pour spécifier le format des 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 EMR cluster Amazon offre une bonne vitesse de transfert et une bonne bande passante disponible. Amazon S3 ne compresse pas HTTP les réponses. La taille des réponses est donc susceptible d'augmenter pour les fichiers d'entrée compressés.
Considérations et restrictions
-
Le chiffrement côté serveur Amazon S3 avec les 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 CSV les JSON fichiers 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.
-
Spark CSV et JSON les options telles que
nanValue
,positiveInf
negativeInf
, et les options liées aux enregistrements corrompus (par exemple, le mode failfast et dropmalformed) ne sont pas pris 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, mais10000
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()
etSUM()
. -
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 utiliser ScalaSQL, R et PySpark. Vous pouvez utiliser S3 Select JSON de la même manière. Pour une liste d'options, leurs valeurs par défaut et leurs limitations, consultez Options.
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 S3select CSV
Option | Par défaut | Utilisation |
---|---|---|
|
|
Indique si la compression est utilisée. |
|
"," |
Spécifie le caractère délimiteur de champ. |
|
|
Spécifie le caractère de citation. La spécification d'une chaîne vide n'est pas prise en charge et entraîne une XML erreur mal formée. |
|
|
Spécifie le caractère échappe. |
|
|
|
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 |
|
"" |
Options avec S3select JSON
Option | Par défaut | Utilisation |
---|---|---|
|
|
Indique si la compression est utilisée. |
|
« false » |
|