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 Hive pour améliorer les performances - 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 Hive pour améliorer les performances

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.18.0 d'Amazon EMR, vous pouvez utiliser S3 Select avec Hive 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 impliqué dans le filtrage d'ensembles larges de données pour le traitement est « poussé en bas », du cluster vers Amazon S3, ce qui peut améliorer la performance de certaines applications et peut réduire la quantité de données transférée entre Amazon EMR et Amazon S3.

S3 Select est pris en charge avec les tables Hive en fonction des fichiers JSON et CSV, et en définissant la variable de configuration s3select.filter sur true durant votre session Hive. Pour plus d’informations et d’exemples, consultez Spécification de 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.

  • Vos prédicats de filtre de requête utilisent les colonnes qui ont un type de données pris en charge par Amazon S3 Select. Pour plus d'informations, consultez Types de données dans le Guide de l'utilisateur Amazon Simple Storage Service.

  • 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. Le format multiligne CSVs et le format JSON ne sont pas pris en charge.

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

  • 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.

  • Hive sur Amazon EMR prend en charge les types de données primitifs que S3 Select prend en charge. Pour plus d'informations, consultez Types de données dans le Guide de l'utilisateur Amazon Simple Storage Service.

Spécification de S3 Select dans votre code

Pour utiliser S3 Select dans votre table Hive, créez la table en spécifiant com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat comme nom de classe INPUTFORMAT et spécifiez une valeur pour la propriété s3select.format à l'aide de la clause TBLPROPERTIES.

S3 Select est désactivé par défaut lorsque vous exécutez des requêtes. Activez S3 Select en définissant s3select.filter sur true dans votre session Hive, comme illustré ci-dessous. Les exemples suivants montrent comment spécifier S3 Select lors de la création d'une table à partir de fichiers CSV et JSON sous-jacents, puis comment interroger la table à l'aide d'une instruction de sélection simple.

Exemple Instruction CREATE TABLE pour une table basée sur CSV
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/mycsvfile/' TBLPROPERTIES ( "s3select.format" = "csv", "s3select.headerInfo" = "ignore" );
Exemple Instruction CREATE TABLE pour une table basée sur JSON
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/json/' TBLPROPERTIES ( "s3select.format" = "json" );
Exemple Instruction SELECT TABLE
SET s3select.filter=true; SELECT * FROM mys3selecttable WHERE col2 > 10;
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.