Bonnes pratiques d'utilisation d'Amazon Redshift Spectrum - AWS Conseils prescriptifs

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.

Bonnes pratiques d'utilisation d'Amazon Redshift Spectrum

Cette section fournit une vue d'ensemble des meilleures pratiques relatives à l'utilisation d'Amazon Redshift Spectrum. Nous vous recommandons de suivre les meilleures pratiques suivantes pour obtenir des performances optimales lorsque vous utilisez Redshift Spectrum :

  • Sachez que les types de fichiers ont une influence significative sur les performances des requêtes Redshift Spectrum. Pour améliorer les performances, utilisez des fichiers codés en colonnes tels que ORC ou Parquet, et utilisez le format CSV uniquement pour les tableaux de très petites dimensions.

  • Utilisez le partitionnement basé sur des préfixes pour tirer parti de l'élagage des partitions. Cela implique d'utiliser des filtres attachés aux partitions de votre lac de données.

  • Redshift Spectrum s'adapte automatiquement pour traiter les demandes volumineuses, alors faites tout ce qui est possible dans Redshift Spectrum (par exemple, le pushdown des prédicats).

  • Faites attention à partitionner les fichiers sur des colonnes fréquemment filtrées. Si les données sont partitionnées par une ou plusieurs colonnes filtrées, Redshift Spectrum peut tirer parti de l'élagage des partitions et éviter de scanner les partitions et les fichiers inutiles. Il est courant de les partitionner selon des critères temporels.

  • Vous pouvez vérifier l'efficacité de vos partitions et l'efficacité de votre requête Redshift Spectrum à l'aide de la requête suivante.

    Select query, segment, max(assigned_partitions) as total_partitions, max(qualified_partitions) as qualified_partitions From svl_s3partition Where query=pg_last_query_id() Group by 1,2;

    La requête précédente montre ce qui suit :

    • total_partitions — Le nombre de partitions reconnues par AWS Glue Data Catalog

    • qualified_partitions — Le nombre de préfixes sur Amazon Simple Storage Service (Amazon S3) auxquels on accède pour la requête Redshift Spectrum

  • Vous pouvez également consulter la table SVL_S3QUERY_SUMMARY système pour en savoir plus sur l'efficacité de vos partitions et l'efficacité de votre requête Redshift Spectrum. Pour cela, utilisez l'instruction suivante.

    Select * From svl_s3query_summary Where query=pg_last_query_id();

    La requête précédente renvoie encore plus d'informations, notamment is_partitioneds3_scanned_rows/bytes, et des s3_returned_rows/bytes valeurs en plus des fichiers montrant l'efficacité de l'élagage des partitions.

Pushdown des prédicats dans Redshift Spectrum

L'utilisation du pushdown des prédicats permet d'éviter de consommer des ressources dans le cluster Amazon Redshift. Vous pouvez transférer de nombreuses opérations SQL vers la couche Redshift Spectrum. Nous vous recommandons d'en profiter dans la mesure du possible.

Gardez à l’esprit les points suivants :

  • Vous pouvez évaluer complètement certains types d'opérations SQL au sein de la couche Redshift Spectrum, notamment les suivantes :

    • GROUP BYclauses

    • Conditions de comparaison et de correspondance de modèles (par exemple,) LIKE

    • Fonctions d'agrégation (par exempleCOUNT,SUM,AVG,MIN, etMAX)

    • regex_replace, to_upperdate_trunc, et autres fonctions

  • Vous ne pouvez pas transférer certaines opérations vers la couche Redshift Spectrum, notamment DISTINCT et. ORDER BY Effectuez cette opération ORDER BY uniquement au niveau supérieur de la requête si possible, car le tri est effectué dans le nœud principal.

  • Examinez votre EXPLAIN plan de requête pour vérifier si le transfert des prédicats est efficace. Pour rechercher des portions de Redshift Spectrum dans une EXPLAIN commande, suivez les étapes suivantes :

    • S3 Seq Scan

    • S3 HashAggregate

    • S3 Query Scan

    • Scan Seq PartitionInfo

    • Partition Loop

  • Utilisez le plus petit nombre de colonnes dans votre requête. Redshift Spectrum peut éliminer les colonnes à scanner si les données sont au format Parquet ou ORC.

  • Utilisez largement les partitions pour le traitement parallèle et l'élimination des partitions, et maintenez la taille des fichiers à au moins 64 Mo si possible.

  • Réglez le TABLE PROPERTIES 'numRows'='nnn' si vous utilisez CREATE EXTERNAL TABLE ouALTER TABLE. Amazon Redshift n'analyse pas les tables externes pour générer des statistiques de table que l'optimiseur de requêtes utilise pour générer un plan de requêtes. Si les statistiques ne sont pas définies, Amazon Redshift part du principe que les tables externes sont les plus grandes et que les tables locales sont les plus petites.

Conseils de réglage des requêtes pour Redshift Spectrum

Nous vous recommandons de garder les points suivants à l'esprit lorsque vous ajustez vos requêtes :

  • Le nombre de nœuds Redshift Spectrum que votre cluster Amazon Redshift peut engager pour une requête est lié au nombre de tranches de votre cluster.

  • Le redimensionnement de votre cluster peut bénéficier aux profils de calcul locaux, aux profils de stockage et aux capacités de requête de la requête du lac de données Amazon S3.

  • Le planificateur de requêtes Amazon Redshift pousse les prédicats et les agrégations vers la couche de requêtes Redshift Spectrum lorsque cela est possible.

  • Lorsque de grandes quantités de données sont renvoyées depuis Amazon S3, le traitement est limité par les ressources de votre cluster.

  • Comme Redshift Spectrum évolue automatiquement pour traiter les demandes volumineuses, vos performances globales s'améliorent chaque fois que vous pouvez transférer le traitement vers la couche Redshift Spectrum.