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
Avec les EMR versions 5.18.0 et ultérieures d'Amazon, vous pouvez utiliser S3 Select
S3 Select est compatible avec les tables Hive basées sur CSV des JSON fichiers et en définissant la variable s3select.filter
de configuration sur true
pendant 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 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. Multilignes CSVs et ne JSON 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 on Amazon EMR prend en charge les types de données primitifs pris en charge par S3 Select. 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 ci-dessous montrent comment spécifier S3 Select lors de la création d'une table à partir du sous-jacent CSV et de JSON fichiers, puis lors de l'interrogation de la table à l'aide d'une simple instruction select.
Exemple CREATETABLEdéclaration pour une table CSV basée
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 CREATETABLEdéclaration pour une table JSON basée
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 SELECTTABLEdéclaration
SET s3select.filter=true; SELECT * FROM mys3selecttable WHERE col2 > 10;