Creación de tablas de Iceberg
Para crear una tabla de Iceberg a fin de utilizarla en Athena, puede utilizar una instrucción CREATE TABLE
como se documenta en esta página, o puede utilizar un rastreador de AWS Glue.
Uso de una instrucción CREATE TABLE
Athena crea tablas de Iceberg v2. Para conocer la diferencia entre las tablas v1 y v2, consulta los cambios de versión de formato
El comando CREATE TABLE
de Athena crea una tabla de Iceberg sin datos. Puede consultar una tabla desde sistemas externos como Apache Spark directamente si la tabla utiliza el catálogo de Glue de código abierto de Iceberg
aviso
La ejecución del comando CREATE EXTERNAL TABLE
da como resultado el mensaje de error External keyword not supported for table type ICEBERG
(Palabra clave externa no admitida para el tipo de tabla ICEBERG).
Para crear una tabla de Iceberg en Athena, establezca la propiedad de tabla 'table_type'
como 'ICEBERG'
en la cláusula TBLPROPERTIES
, como en el siguiente resumen de sintaxis.
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
] )
Para obtener información sobre los tipos de datos que puede consultar en las tablas de Iceberg, consulte Tipos de datos compatibles con las tablas de Iceberg en Athena.
Uso de particiones
Para crear tablas de Iceberg con particiones, use la sintaxis PARTITIONED BY
. Las columnas que se usan para la partición deben especificarse primero en las instrucciones de las columnas. Dentro de la cláusula PARTITIONED BY
, no se debe incluir el tipo de columna. También puede definir transformaciones de particiónCREATE TABLE
. Para especificar varias columnas para la partición, sepárelas con el carácter coma (,
), como en el siguiente ejemplo:
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' )
En la siguiente tabla, se muestran las funciones de transformación de particiones disponibles.
Función | Descripción | Tipos admitidos |
---|---|---|
year(ts) |
Partición por año | date , timestamp |
month(ts) |
Partición por mes | date , timestamp |
day(ts) |
Partición por día | date , timestamp |
hour(ts) |
Partición por hora | timestamp |
bucket( |
Partición por valor de hash mod N buckets. Este es el mismo concepto que el bucket de hash para tablas de Hive. |
int , long , decimal ,
date , timestamp ,
string , binary
|
truncate( |
Partición por valor truncado a L |
int , long , decimal ,
string |
Athena admite el particionamiento oculto de Iceberg. Para más información, consulte Partición oculta de Iceberg
Esta sección describe las propiedades de la tabla que puedes especificar como pares valor de clave en la cláusula TBLPROPERTIES
de la instrucción CREATE
TABLE
. Athena solo permite una lista predefinida de pares valor de clave en las propiedades de la tabla para crear o alterar tablas de Iceberg. En las siguientes tablas, se muestran las propiedades de la tabla que se pueden especificar. Para más información sobre las opciones de compactación, consulte Optimización de las tablas de Iceberg en este documento. Si desea que Athena incluya compatibilidad con una propiedad de configuración de tabla específica de código abierto, envíe sus comentarios a athena-feedback@amazon.com
formato
Descripción | Formato de datos del archivo |
Valores de propiedad permitidos | Las combinaciones de formato de archivo y compresión compatibles varían en función de la versión del motor de Athena. Para obtener más información, consulte Uso de la compresión de tablas de Iceberg. |
Valor predeterminado | parquet |
write_compression
Descripción | Códec de compresión de archivos |
Valores de propiedad permitidos | Las combinaciones de formato de archivo y compresión compatibles varían en función de la versión del motor de Athena. Para obtener más información, consulte Uso de la compresión de tablas de Iceberg. |
Valor predeterminado |
La compresión de escritura predeterminada varía en función de la versión del motor de Athena. Para obtener más información, consulte Uso de la compresión de tablas de Iceberg. |
optimize_rewrite_data_file_threshold
Descripción | Configuración específica de optimización de datos. Si los archivos de datos que requieren optimización son menores que el límite determinado, los archivos no se reescriben. Esto permite acumular más archivos de datos para producir archivos más cercanos al tamaño objetivo y omitir cálculos innecesarios para ahorrar costos. |
Valores de propiedad permitidos | Un número positivo. Debe ser menos de 50. |
Valor predeterminado | 5 |
optimize_rewrite_delete_file_threshold
Descripción | Configuración específica de optimización de datos. Si los archivos de eliminación asociados a un archivo de datos son menores que el límite, el archivo de datos no se reescribe. Esto permite acumular más archivos de eliminación para cada archivo de datos para ahorrar costos. |
Valores de propiedad permitidos | Un número positivo. Debe ser menos de 50. |
Valor predeterminado | 2 |
vacuum_min_snapshots_to_keep
Descripción |
Cantidad mínima de instantáneas que se deben retener en la rama principal de una tabla. Este valor tiene prioridad sobre la propiedad |
Valores de propiedad permitidos | Un número positivo. |
Valor predeterminado | 1 |
vacuum_max_snapshot_age_seconds
Descripción | Antigüedad máxima de las instantáneas que se deben retener en la rama principal. Este valor se omite si el número mínimo restante de instantáneas especificado por vacuum_min_snapshots_to_keep es superior a la antigüedad especificada. Esta propiedad de comportamiento de la tabla corresponde a la propiedad history.expire.max-snapshot-age-ms de la configuración de Apache Iceberg. |
Valores de propiedad permitidos | Un número positivo. |
Valor predeterminado | 432 000 segundos (5 días) |
vacuum_max_metadata_files_to_keep
Descripción | Cantidad máxima de archivos de metadatos anteriores que se deben retener en la ramificación principal de la tabla. |
Valores de propiedad permitidos | Un número positivo. |
Valor predeterminado | 100 |
Ejemplo de instrucción CREATE TABLE
En el siguiente ejemplo, se crea una tabla de Iceberg que tiene tres columnas.
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' )
Uso de la instrucción CREATE TABLE AS SELECT (CTAS)
Para obtener información sobre la creación de una tabla de Iceberg mediante la instrucción CREATE TABLE
AS
, consulte CREATE TABLE AS, con especial atención a la sección Propiedades de la tabla CTAS.
Uso de un rastreador de AWS Glue
Puede utilizar un rastreador de AWS Glue para registrar de forma automática sus tablas de Iceberg en AWS Glue Data Catalog. Si desea migrar desde otro catálogo de Iceberg, puede crear y programar un rastreador de AWS Glue y proporcionar las rutas de Amazon S3 en las que se encuentran las tablas de Iceberg. Puede especificar la profundidad máxima de las rutas de Amazon S3 que puede recorrer el rastreador de AWS Glue. Tras programar un rastreador de AWS Glue, este extrae la información del esquema y actualiza AWS Glue Data Catalog con los cambios del esquema cada vez que se ejecuta. El rastreador de AWS Glue admite la fusión de esquemas en todas las instantáneas y actualiza la ubicación más reciente del archivo de metadatos en AWS Glue Data Catalog. Para obtener más información, consulte Catálogo de datos y rastreadores en AWS Glue.