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.
Utiliser une CREATE TABLE déclaration
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
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
Avertissement
L'exécution CREATE EXTERNAL TABLE
entraîne le message d'erreur Le mot clé externe n'est pas 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://amzn-s3-demo-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.
Utiliser des partitions
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 partitionCREATE 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://amzn-s3-demo-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( |
Partition par valeur hachée (mod) N seaux. C'est le même concept que le compartiment de hachage pour les tables Hive. |
int , long , decimal ,
date , timestamp ,
string , binary
|
truncate( |
Partition par valeur tronquée en L |
int , long , decimal ,
string |
Athena prend en charge le partitionnement caché d'Iceberg. Pour plus d’informations, consultez Partitionnement caché d'Iceberg
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 Optimisez les 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 de plus amples informations, veuillez consulter Utiliser la compression de table Iceberg. |
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 de plus amples informations, veuillez consulter Utiliser la compression de table Iceberg. |
Valeur par défaut |
La compression d'écriture par défaut varie selon la version du moteur Athena. Pour de plus amples informations, veuillez consulter Utiliser la compression de table Iceberg. |
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é |
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 de CREATE TABLE déclaration
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://amzn-s3-demo-bucket/
iceberg-folder
' TBLPROPERTIES ( 'table_type'='ICEBERG', 'format'='parquet', 'write_compression'='snappy', 'optimize_rewrite_delete_file_threshold'='10' )
Utiliser 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 CTASpropriétés du tableau.
Utiliser un AWS Glue crawler
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.