Registro de catálogos de buckets de tabla de S3 y consulta de tablas desde Athena
Los buckets de tabla de S3 son un tipo de bucket de Amazon S3 diseñado específicamente para almacenar datos tabulares en tablas de Apache Iceberg. Los buckets de tablas automatizan tareas de administración de tablas, como la compactación, la administración de instantáneas y la recopilación de elementos no utilizados, para optimizar continuamente el rendimiento de las consultas y minimizar los costos. Tanto si recién comienza como si cuenta con miles de tablas en el entorno de Iceberg, los buckets de tabla simplifican el uso de los lagos de datos a cualquier escala. Para obtener más información, consulte buckets de tabla.
Consideraciones y limitaciones
-
Todas las operaciones DDL compatibles con las tablas de Iceberg son compatibles con las tablas de S3, excepto los siguientes:
-
ALTER TABLE RENAME,CREATE VIEWyALTER DATABASEno son compatibles. -
OPTIMIZEyVACUUM: puede gestionar la compactación y la gestión de instantáneas en S3. Para obtener más información, consulte la documentación de mantenimiento de tablas de S3.
-
-
No se admiten consultas DDL en tablas de S3 registradas como orígenes de datos de Athena.
-
No se admite la reutilización del resultado de la consulta.
-
En los grupos de trabajo con el cifrado SSE-KMS, CSE-KMS activado, no se pueden ejecutar operaciones de escritura como
INSERT,UPDATE,DELETEoMERGEen tablas de S3. -
En los grupos de trabajo con la opción Pagos de solicitantes de S3 (S3 Requester Pays) habilitada, no puede ejecutar operaciones DML en tablas de S3.
Consulta de tablas de S3 desde Athena
Complete estos requisitos previos antes de consultar las tablas de S3 desde Athena
Cree un bucket de tabla de S3. Para obtener más información, consulte Cómo crear un bucket de tabla en la Guía del usuario de Amazon Simple Storage Service.
-
Asegúrese de que la integración de sus cubos de mesa con AWS Glue Data Catalog sea correcta. Para conocer los permisos necesarios y los pasos de configuración, consulte Requisitos previos para la integración de las Tablas de S3 y Habilitar la integración de las tablas de S3 con los Catálogo de datos de Glue en la Guía para desarrolladores AWS Glue.
Para la entidad principal que utilice para ejecutar consultas con Athena, conceda permisos sobre el catálogo de tablas de S3 mediante uno de los siguientes enfoques:
Opción 1: usar permisos de IAM
Al utilizar el control de acceso de IAM, su entidad principal necesita permisos tanto en los recursos AWS Glue Data Catalog como en los recursos de tablas de Amazon S3.
La siguiente lista contiene todos los permisos
s3tablesnecesarios para realizar cualquier operación DDL o DML compatible en sus tablas de S3 en Athena:s3tables:GetTableBuckets3tables:GetNamespaces3tables:GetTables3tables:GetTableDatas3tables:PutTableDatas3tables:ListNamespacess3tables:ListTabless3tables:DeleteNamespaces3tables:DeleteTables3tables:CreateNamespaces3tables:CreateTables3tables:UpdateTableMetadataLocation
Aplique estos permisos a un grupo de tablas de S3 y a recursos de tablas de S3 específicos o utilice
*como recurso para conceder acceso a todos los grupos de tablas y tablas de su cuenta. Estos permisos se pueden combinar con la política administradaAmazonAthenaFullAccesspara habilitar una funcionalidad completa.Opción 2: usar los permisos de Lake Formation
Para habilitar el control de acceso detallado, puede conceder permisos de Lake Formation en el catálogo de la tabla de S3, ya sea a través de la consola de Lake Formation o la AWS CLI. Esto requiere registrar sus buckets de tablas de S3 como una ubicación de datos de Lake Formation. Para obtener más información sobre el proceso de migración o integración, consulte Creación de un catálogo de tablas de Amazon S3 en la AWS Glue Data Catalog en la Guía para desarrolladores de Lake Formation.
Enviar consultas para tablas de S3
Envíe una consulta
CREATE DATABASEdesde Athena con el usuario/rol concedido anteriormente. En este ejemplo,s3tablescataloges el catálogo de datos de Glue principal creado a partir de la integración, ys3tablescatalog/es el catálogo de datos de Glue secundario creado para cada bucket de tabla de S3. Existen dos formas de realizar la consulta.amzn-s3-demo-bucket-
Con la base de datos que creó en el paso anterior, utilice
CREATE TABLEpara crear una tabla. En el siguiente ejemplo, se crea una tabla en la base de datosque creó anteriormente en el catálogotest_namespaces3tablescatalog/de Glue.amzn-s3-demo-bucket -
Inserte datos en la tabla que creó en el paso anterior.
-
Después de insertar los datos en la tabla, puede consultarlos.
Creación de tablas de S3 en Athena
Athena admite la creación de tablas en los espacios de nombres de tablas de S3 existentes o en los espacios de nombres creados en Athena con introducciones CREATE DATABASE. Para crear una tabla de S3 desde Athena, la sintaxis es la misma que cuando se crea una tabla de Iceberg normal, excepto que no se especifica la LOCATION, como se muestra en el siguiente ejemplo.
CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] [TBLPROPERTIES ([, property_name=property_value] )]
También puede crear tablas de S3 por medio de las instrucciones CREATE TABLE AS SELECT (CTAS). Para obtener más información, consulte CTAS para tablas de S3.
Registro de catálogos de buckets de tabla de S3 como orígenes de datos de Athena
Para registrar catálogos de buckets de tabla de S3 en la consola de Athena, siga estos pasos.
-
Abra la consola de Athena en https://console.aws.amazon.com/athena/
. -
En el panel de navegación, elija Orígenes de datos y catálogos.
-
En la página Orígenes de datos y catálogos, elija Crear origen de datos.
-
En Elegir un origen de datos, elija Amazon S3: AWS Glue Data Catalog.
-
En la sección AWS Glue Data Catalog, bajo Cuenta de origen de datos, elija AWS Glue Data Catalog en esta cuenta.
-
En Crear una tabla o registrar un catálogo, elija Registrar un nuevo catálogo de AWS Glue.
-
En la sección Detalles del origen de datos, en Nombre del origen de datos, ingrese el nombre que desea utilizar para especificar el origen de datos en las consultas SQL o utilice el nombre predeterminado que se genera.
-
En Catálogo, seleccione Examinar para buscar una lista de catálogos de AWS Glue en la misma cuenta. Si no ve ningún catálogo existente, cree uno en la consola de AWS Glue
. -
En el cuadro de diálogo Examinar catálogos de AWS Glue, seleccione el catálogo que desea utilizar y, a continuación, elija Seleccionar.
-
(Opcional) En Etiquetas, ingrese cualquier par de clave/valor que desee asociar al origen de datos.
-
Elija Siguiente.
-
En la página Revisar y crear, compruebe que la información introducida es correcta y, a continuación, seleccione Crear origen de datos.
CTAS para tablas de S3
Amazon Athena ahora admite operaciones CREATE TABLE AS SELECT (CTAS) para tablas de S3. Esta característica permite crear nuevas tablas de S3 en función de los resultados de una consulta SELECT.
Al crear una consulta CTAS para una tabla de S3, existen algunas diferencias importantes en comparación con las tablas estándar de Athena:
-
Debe omitir la propiedad de ubicación porque las tablas de S3 administran automáticamente sus propias ubicaciones de almacenamiento.
-
La propiedad
table_typese establece de forma predeterminada enICEBERG, por lo que no es necesario especificarla explícitamente en la consulta. -
Si no se especifica un formato, el sistema utiliza automáticamente
PARQUETcomo formato predeterminado para los datos. -
Todas las demás propiedades siguen la misma sintaxis que las tablas de Iceberg normales.
Antes de crear tablas de S3 por medio de CTAS, asegúrese de contar con los permisos necesarios configurados en IAM o AWS Lake Formation. Específicamente, necesita permisos para crear tablas en el catálogo de las tablas de S3. Sin estos permisos, se producirá un error en las operaciones CTAS.
nota
Si se produce un error en la consulta CTAS, es posible que tenga que eliminar la tabla por medio de la API de las tablas de S3 antes de intentar volver a ejecutar la consulta. No puede usar las instrucciones DROP TABLE de Athena para eliminar la tabla que fue creada parcialmente por la consulta.
Ejemplo
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name" WITH ( format = 'PARQUET' ) AS SELECT * FROMsource_table;