Création de tables Iceberg - 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.

Création de tables Iceberg

Pour créer une table Iceberg à utiliser dans Athena, vous pouvez utiliser CREATE TABLE une instruction telle que décrite sur cette page, ou vous pouvez utiliser AWS Glue un robot d'exploration.

Utilisation d'une instruction CREATE TABLE

Athena crée des tables Iceberg v2. Pour connaître la différence entre les tables v1 et v2, consultez la section Modifications de version de format dans la documentation Apache Iceberg.

Athena CREATE TABLE crée une table Iceberg sans données. Vous pouvez interroger une table à partir de systèmes externes tels qu'Apache Spark directement si la table utilise le catalogue open source Glue d'Iceberg. Il n'est pas nécessaire de créer une table externe.

Avertissement

L'exécution de CREATE EXTERNAL TABLE entraîne le message d'erreur External keyword not supported for table type ICEBERG (Mot clé externe non pris en charge pour le type de table ICEBERG).

Pour créer une table Iceberg à partir d'Athena, définissez la propriété de table 'table_type' à 'ICEBERG' dans la clause TBLPROPERTIES, comme dans le récapitulatif de la syntaxe suivant.

CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ( 'table_type' ='ICEBERG' [, property_name=property_value] )

Pour plus d'informations sur les types de données que vous pouvez interroger dans les tables Iceberg, consultez Types de données pris en charge pour les tables Iceberg sur Athena.

Partitioning

Pour créer des tables Iceberg avec des partitions, utilisez la syntaxe PARTITIONED BY. Les colonnes utilisées pour le partitionnement doivent d'abord être spécifiées dans les déclarations de colonnes. Dans la clause PARTITIONED BY, le type de colonne ne doit pas être inclus. Vous pouvez également définir des transformations de partition dans la syntaxe CREATE TABLE. Pour spécifier plusieurs colonnes à partitionner, séparez les colonnes par la virgule (,), comme dans l'exemple suivant.

CREATE TABLE iceberg_table (id bigint, data string, category string) PARTITIONED BY (category, bucket(16, id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ( 'table_type' = 'ICEBERG' )

Le tableau suivant présente les fonctions de transformation de partition disponibles.

Fonction Description Types pris en charge
year(ts) Partition par année date, timestamp
month(ts) Partition par mois date, timestamp
day(ts) Partition par jour date, timestamp
hour(ts) Partition par heure timestamp
bucket(N, col) Partition par compartiments de valeur hachée mod N. C'est le même concept que le compartiment de hachage pour les tables Hive. int, long, decimal, date, timestamp, string, binary
truncate(L, col) Partition par valeur tronquée à L int, long, decimal, string

Athena prend en charge le partitionnement caché d'Iceberg. Pour plus d’informations, consultez Partitionnement caché d'Iceberg dans la documentation Apache Iceberg.

Propriétés de la table

Cette section décrit les propriétés de la table que vous pouvez spécifier sous forme de paires clé-valeur dans la clause TBLPROPERTIES de l'instruction CREATE TABLE. Athena n'autorise qu'une liste prédéfinie de paires clé-valeur dans les propriétés de la table pour créer ou modifier des tables Iceberg. Les tableaux suivants présentent les propriétés de la table que vous pouvez spécifier. Pour plus d'informations sur les options de compactage, consultez la section Optimisation des tables Iceberg dans cette documentation. Si vous souhaitez qu'Athena prenne en charge une propriété de configuration de table open source spécifique, envoyez vos commentaires à athena-feedback@amazon.com.

format

Description Format de données du fichier
Valeurs de propriété autorisées Le format de fichier et les combinaisons de compression pris en charge varient selon la version du moteur Athena. Pour plus d’informations, consultez Prise en charge de la compression de la table Iceberg par format de fichier.
Valeur par défaut parquet

write_compression

Description Codec de compression de fichier
Valeurs de propriété autorisées Le format de fichier et les combinaisons de compression pris en charge varient selon la version du moteur Athena. Pour plus d’informations, consultez Prise en charge de la compression de la table Iceberg par format de fichier.
Valeur par défaut

La compression d'écriture par défaut varie selon la version du moteur Athena. Pour plus d’informations, consultez Prise en charge de la compression de la table Iceberg par format de fichier.

optimize_rewrite_data_file_threshold

Description Configuration spécifique à l'optimisation des données. S'il y a moins de fichiers de données nécessitant une optimisation que le seuil donné, les fichiers ne sont pas réécrits. Cela permet d'accumuler davantage de fichiers de données pour produire des fichiers plus proches de la taille cible et ignorer les calculs inutiles pour économiser les coûts.
Valeurs de propriété autorisées Nombre positif. Il doit être inférieur à 50.
Valeur par défaut 5

optimize_rewrite_delete_file_seuil

Description Configuration spécifique à l'optimisation des données. S'il y a moins de fichiers de suppression associés à un fichier de données que le seuil, le fichier de données n'est pas réécrit. Cela permet d'accumuler davantage de fichiers supprimés pour chaque fichier de données afin de réaliser des économies.
Valeurs de propriété autorisées Nombre positif. Il doit être inférieur à 50.
Valeur par défaut 2

vacuum_min_snapshots_to_keep

Description

Nombre minimum d'instantanés à retenir sur la branche principale d'une table.

Cette valeur est prioritaire sur la propriété vacuum_max_snapshot_age_seconds. Si le nombre minimal d'instantanés restants est supérieur à l'âge spécifié par vacuum_max_snapshot_age_seconds, les instantanés sont conservés et la valeur de vacuum_max_snapshot_age_seconds est ignorée.

Valeurs de propriété autorisées Nombre positif.
Valeur par défaut 1

vacuum_max_snapshot_age_seconds

Description Âge maximum des instantanés à retenir sur la branche principale. Cette valeur est ignorée si le minimum d'instantanés restant spécifié par vacuum_min_snapshots_to_keep est supérieur à l'âge spécifié. Cette propriété de comportement de table correspond à la history.expire.max-snapshot-age-ms propriété de la configuration d'Apache Iceberg.
Valeurs de propriété autorisées Nombre positif.
Valeur par défaut 432 000 secondes (5 jours)

vacuum_max_metadata_files_to_keep

Description Nombre maximal de fichiers de métadonnées précédents à conserver dans la branche principale de la table.
Valeurs de propriété autorisées Nombre positif.
Valeur par défaut 100

Exemple d'instruction CREATE TABLE (CRÉER UNE TABLE)

L'exemple suivant crée une table Iceberg à trois colonnes.

CREATE TABLE iceberg_table ( id int, data string, category string) PARTITIONED BY (category, bucket(16,id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/iceberg-folder' TBLPROPERTIES ( 'table_type'='ICEBERG', 'format'='parquet', 'write_compression'='snappy', 'optimize_rewrite_delete_file_threshold'='10' )

CREATE TABLE AS SELECT (CTAS)

Pour plus d'informations sur la création d'une table Iceberg à l'aide de l'instruction CREATE TABLE AS, veuillez consulter CREATE TABLE AS, en portant une attention particulière à la section Propriétés de la table CTAS.

Utilisation d'un Crawler AWS Glue

Vous pouvez utiliser un AWS Glue robot pour enregistrer automatiquement vos tables Iceberg dans le. AWS Glue Data Catalog Si vous souhaitez effectuer une migration depuis un autre catalogue Iceberg, vous pouvez créer et planifier un AWS Glue robot et fournir les chemins Amazon S3 où se trouvent les tables Iceberg. Vous pouvez spécifier la profondeur maximale des chemins Amazon S3 que le Crawler AWS Glue peut parcourir. Une fois que vous avez planifié un AWS Glue robot d'exploration, celui-ci extrait les informations du schéma et les met à jour en fonction des modifications apportées AWS Glue Data Catalog au schéma à chaque fois qu'il s'exécute. Le AWS Glue robot d'exploration prend en charge la fusion de schémas entre les instantanés et met à jour l'emplacement du dernier fichier de métadonnées dans le. AWS Glue Data Catalog Pour plus d'informations, consultez la section Catalogue de données et robots d'exploration dans AWS Glue.