Projection de partition avec Amazon Athena - Amazon Athena

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.

Projection de partition avec Amazon Athena

Vous pouvez utiliser la projection de partition dans Athena pour accélérer le traitement des requêtes de tables hautement partitionnées et automatiser la gestion des partitions.

Dans une projection de partition, Athena calcule les valeurs et les emplacements de partition à l'aide des propriétés de table que vous configurez directement sur votre table dans AWS Glue. Les propriétés de table permettent à Athena de « projeter », ou de déterminer, les informations de partition nécessaires au lieu d'avoir à effectuer une recherche de métadonnées fastidieuse dans le AWS Glue Data Catalog. Étant donné que les opérations en mémoire sont souvent plus rapides que les opérations distantes, la projection de partition peut réduire le temps d'exécution des requêtes sur les tables hautement partitionnées. Selon les caractéristiques spécifiques de la requête et des données sous-jacentes, la projection de partition peut réduire considérablement le temps d'exécution des requêtes qui sont contraintes lors de la récupération des métadonnées de partition.

Élagage et projection pour les tables fortement partitionnées

L'élagage des partitions rassemble les métadonnées et les « élaguent » afin de ne conserver que les partitions qui s'appliquent à votre requête. Cette approche accélère souvent les requêtes. Athena utilise l'élagage de partition pour toutes les tables contenant des colonnes de partition, y compris les tables configurées pour la projection de partition.

Normalement, lors du traitement des requêtes, Athena lance un appel GetPartitions au AWS Glue Data Catalog avant de procéder à l'élagage de la partition. Si une table comporte un grand nombre de partitions, l'utilisation de GetPartitions peut nuire aux performances. Pour pallier ce problème, vous pouvez utiliser la projection de partition. La projection de partition permet à Athena d'éviter d'appeler GetPartitions, car la configuration de la projection de partition donne à Athena toutes les informations nécessaires pour créer les partitions.

Utilisation de la projection de partition

Pour utiliser la projection de partition, vous devez spécifier les plages de valeurs des partitions et les types de projection pour chaque colonne de partition dans les propriétés de table du AWS Glue Data Catalog ou dans le métastore Hive externe. Ces propriétés personnalisées permettent à Athena d'identifier les modèles de partition prévus lorsqu'il exécute une requête au niveau de la table. Lors de l'exécution de la requête, Athena utilise ces informations pour projeter les valeurs de partition au lieu de les récupérer à partir du AWS Glue Data Catalog ou du métastore Hive externe. Cette approche permet non seulement de réduire le temps d'exécution des requêtes, mais aussi d'automatiser la gestion des partitions, car cela élimine la nécessité de créer manuellement des partitions dans Athena, AWS Glue ou dans votre métastore Hive externe.

Important

En cas d'activation de la projection de partition sur une table, Athena ignore les métadonnées de partition enregistrées dans la table dans le AWS Glue Data Catalog ou dans le métastore Hive.

Cas d’utilisation

Les scénarios dans lesquels la projection de partition est utile sont les suivants :

  • Les requêtes relatives à une table hautement partitionnée ne se terminent pas aussi rapidement que vous le souhaitez.

  • Vous ajoutez régulièrement des partitions aux tables au fur et à mesure que de nouvelles partitions de date ou d'heure sont créées dans vos données. Avec la projection de partition, vous configurez des plages de dates relatives qui peuvent être utilisées lors de l'arrivée de nouvelles données.

  • Des données sont hautement partitionnées dans Simple Storage Service (Amazon S3). Les données ne sont pas faciles à modéliser dans le AWS Glue Data Catalog ou dans le métastore Hive, et vos requêtes n'en lisent que de petites parties.

Structures de partition projetables

La projection de partition est plus facilement configurée lorsque vos partitions respectent un modèle prévisible comme suit (exemple non exhautif) :

  • Entiers : toute séquence continue d'entiers, telle que [1, 2, 3, 4, ..., 1000] ou [0500, 0550, 0600, ..., 2500].

  • Dates : toute séquence continue de dates ou de dates et heures, telle que [20200101, 20200102, ..., 20201231] ou [1-1-2020 00:00:00, 1-1-2020 01:00:00, ..., 12-31-2020 23:00:00].

  • Valeurs énumérées : ensemble fini de valeurs énumérées, tel que les codes d'aéroport ou les Régions AWS.

  • Journaux Service AWS : les journaux Service AWS ont généralement une structure connue dont vous pouvez spécifier le schéma de partition dans AWS Glue et qu'Athena peut donc utiliser pour la projection de partition.

Personnalisation du modèle de chemin de partition

Par défaut, Athena construit des emplacements de partition à l'aide du formulaire s3://<bucket>/<table-root>/partition-col-1=<partition-col-1-val>/partition-col-2=<partition-col-2-val>/, mais si vos données sont organisées différemment, Athena offre un mécanisme pour personnaliser ce modèle de chemin. Pour les étapes, consultez Spécification d'emplacements de stockage S3 personnalisés.

Considérations et restrictions

Les considérations suivantes s'appliquent :

  • La projection de partition élimine le besoin de spécifier manuellement des partitions dans AWS Glue ou dans un métastore Hive externe.

  • Lorsque vous activez la projection de partition sur une table, Athena ignore les métadonnées de partition dans le AWS Glue Data Catalog ou le métastore Hive externe correspondant.

  • Si une partition projetée n'existe pas dans Simple Storage Service (Amazon S3), Athena projette quand même la partition. Athena ne renvoie pas d'erreur, mais aucune donnée n'est renvoyée. Toutefois, si un trop grand nombre de vos partitions sont vides, les performances peuvent être plus lentes que celles des partitions AWS Glue traditionnelles. Si plus de la moitié de vos partitions projetées sont vides, il est recommandé d'utiliser des partitions traditionnelles.

  • Les requêtes portant sur des valeurs qui dépassent les limites de l'intervalle défini pour la projection de partition ne renvoient pas d'erreur. Au lieu de cela, la requête s'exécute, mais retourne zéro ligne. Par exemple, si vous avez des données temporelles qui commencent en 2020 et qui sont définies comme 'projection.timestamp.range'='2020/01/01,NOW', une requête comme SELECT * FROM table-name WHERE timestamp = '2019/02/02' se terminera avec succès, mais renverra zéro ligne.

  • La projection des partitions n'est utilisable que lorsque la table est interrogée par Athena. Si la même table est lue par un autre service tel que Amazon Redshift Spectrum, Athena pour Spark ou Amazon EMR, les métadonnées de partition standard sont utilisées.

  • Étant donné que la projection de partition est une fonction DML uniquement, SHOW PARTITIONS ne répertorie pas les partitions projetées par Athena, mais non enregistrées dans le catalogue AWS Glue ou le métastore Hive externe.

  • Athena n'utilise pas les propriétés des tables des vues comme configuration pour la projection des partitions. Pour contourner cette limitation, configurez et activez la projection de partition dans les propriétés des tables auxquelles les vues font référence.

  • Les filtres de données de Lake Formation ne peuvent pas être utilisés avec la projection de partition dans Athena.

Vidéo

La vidéo suivante montre comment utiliser la projection de partition pour augmenter les performances de vos requêtes dans Athena.