Utilisation de S3 Select Pushdown avec Presto 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.

Utilisation de S3 Select Pushdown avec Presto pour améliorer les performances

Avec la version 5.18.0 et ultérieure d'Amazon EMR, vous pouvez utiliser S3 select Pushdown avec Presto sur Amazon EMR. Cette fonctionnalité permet à Presto de « pousser vers le bas » le travail de calcul d'opérations de projection (par exemple, SELECT) et les opérations de prédicat (par exemple, WHERE) sur Amazon S3. Cela autorise des requêtes à récupérer uniquement les données nécessaires d'Amazon S3 , ce qui peut améliorer les performances et réduire les quantités de données transférées entre Amazon EMR et Amazon S3 dans certaines applications.

S3 Select Pushdown est-il adapté à mon application ?

Nous vous recommandons de tester vos applications avec et sans S3 Select Pushdown 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 Presto et S3 Select. Les types de données horodateur, réel et double ne sont pas pris en charge par S3 Select Pushdown. Nous recommandons d'utiliser le type de données décimal pour les données quantitatives. Pour plus d'informations sur les types de données pris en charge pour S3 Select, veuillez consulter Amazon Simple Storage Service, veuillez consulter 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

  • Seuls les objets stockés en format CSV sont pris en charge. Les objets peuvent être décompressés ou facultativement compressés avec gzip ou bzip2.

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

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

  • S3 Select Pushdown n'est pas un substitut pour l'utilisation de formats en colonne ou compressés tels qu'ORC ou Parquet.

Activation de S3 Select Pushdown avec PrestoDB ou Trino

Pour autoriser S3 Select Pushdown pour PrestoDB sur Amazon EMR, utilisez la classification de configuration presto-connector-hive pour définir hive.s3select-pushdown.enabled sur true, tel qu'illustré dans l'exemple suivant. Pour plus d’informations, consultez Configuration des applications. La valeur hive.s3select-pushdown.max-connections doit également être définie. Le paramètre 500 par défaut devrait être approprié pour la plupart des applications. Pour plus d’informations, consultez Comprendre et régler hive.s3select-pushdown.max-connections ci-dessous.

Pour PrestoSQL sur EMR versions 6.1.0 à 6.3.0, remplacez presto-connector-hive dans l'exemple ci-dessous par prestosql-connector-hive.

Les versions 6.4.0 et ultérieures d'Amazon EMR utilisent le nouveau nom Trino au lieu de PrestoSQL. Si vous utilisez Trino, remplacez presto-connector-hive dans l'exemple ci-dessous par trino-connector-hive

[ { "classification": "presto-connector-hive", "properties": { "hive.s3select-pushdown.enabled": "true", "hive.s3select-pushdown.max-connections": "500" } } ]

Comprendre et régler hive.s3select-pushdown.max-connections

Presto utilise EMRFS comme système de fichier par défaut. Le paramètre fs.s3.maxConnections dans la configuration de classification emrfs-site spécifie le nombre de connexions de client permissibles à Amazon S3 via EMRFS pour Presto. 500 par défaut. S3 Select Pushdown contourne EMRFS lorsqu'il accède à Amazon S3 pour les opérations de prédicats. Dans ce cas, la valeur de hive.s3select-pushdown.max-connections détermine le nombre maximal de connexions clients autorisées pour ces opérations de nœuds de travail. Cependant, toute demande à Amazon S3 initiée par Presto qui n'est pas poussée vers le bas (par exemple, les opérations GET) continue d'être régie par la valeur de fs.s3.maxConnections.

Si votre application fait l'expérience de l'erreur « Temporisation attente de connexion du groupe », augmentez la valeur de hive.s3select-pushdown.max-connections et de fs.s3.maxConnections.