Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Utilizar tablas de Apache Iceberg mediante SQL de Amazon Athena
Amazon Athena ofrece soporte integrado para Apache Iceberg y no requiere pasos ni configuración adicionales. Esta sección proporciona una descripción detallada de las funciones compatibles y una guía de alto nivel para usar Athena para interactuar con las tablas de Iceberg.
Compatibilidad de versiones y funciones
nota
En las siguientes secciones se asume que está utilizando la versión 3 del motor Athena.
Soporte de especificaciones de tablas Iceberg
La especificación de la tabla Iceberg de Apache especifica cómo deben comportarse las tablas Iceberg. Athena admite la versión 2 del formato de tabla, por lo que cualquier tabla Iceberg que cree con la consola, la CLI o el SDK utiliza esa versión de forma inherente.
Si usa una tabla Iceberg que se creó con otro motor, como Apache Spark en Amazon EMR AWS Glue, asegúrese de configurar la versión del formato de la tabla mediante
Compatibilidad con las funciones de Iceberg
Puedes usar Athena para leer y escribir en las tablas de Iceberg. Al cambiar los datos mediante las DELETE FROM
sentencias UPDATE
MERGE INTO
, y, Athena solo admite el merge-on-read modo. Esta propiedad no se puede cambiar. Para actualizar o eliminar datos con copy-on-write, debe utilizar otros motores como Apache Spark en Amazon EMR o. AWS Glue En la siguiente tabla se resume la compatibilidad con las funciones de Iceberg en Athena.
Soporte DDL | Soporte DML | AWS Lake Formation por motivos de seguridad (opcional) | ||||
---|---|---|---|---|---|---|
Formato de tabla | Crear tablas | Evolución del esquema | Lectura de datos | Escritura de datos | Control de acceso por filas/columnas | |
Amazon Athena | Versión 2 | ✓ | ✓ | ✓ | X C opy-on-write | ✓ |
✓ M erge-on-read | ✓ |
nota
Athena no admite consultas incrementales.
Trabajar con tablas Iceberg
Para empezar rápidamente a utilizar Iceberg en Athena, consulte la sección Introducción a las tablas de Iceberg en Athena SQL, que aparece anteriormente en esta guía.
En la siguiente tabla se enumeran las limitaciones y recomendaciones.
Escenario |
Limitación |
Recomendación |
---|---|---|
Tabla: generación de DDL |
Las tablas de iceberg creadas con otros motores pueden tener propiedades que no están expuestas en Athena. Para estas tablas, no es posible generar el DDL. |
Usa la sentencia equivalente en el motor que creó la tabla (por ejemplo, la |
Prefijos aleatorios de Amazon S3 en objetos que se escriben en una tabla de Iceberg |
De forma predeterminada, las tablas Iceberg que se crean con Athena tienen |
Para deshabilitar este comportamiento y obtener el control total sobre las propiedades de la tabla Iceberg, cree una tabla Iceberg con otro motor, como Spark en Amazon EMR o. AWS Glue |
Consultas incrementales |
Actualmente no es compatible con Athena. |
Para usar consultas incrementales para habilitar canalizaciones de ingesta de datos incrementales, usa Spark en Amazon EMR o. AWS Glue |
¿Migrar las tablas existentes a Iceberg
Para migrar su Athena o sus AWS Glue tablas actuales (también conocidas como tablas de colmena) al formato Iceberg, puede utilizar la migración de datos local o completa:
-
La migración in situ es el proceso de generar los archivos de metadatos de Iceberg sobre los archivos de datos existentes.
-
La migración completa de datos crea la capa de metadatos de Iceberg y también reescribe los archivos de datos existentes de la tabla original a la nueva tabla de Iceberg.
En las siguientes secciones, se proporciona una descripción general de las API disponibles para migrar, tablas y orientación para elegir una estrategia de migración. Para obtener más información sobre estas dos estrategias, consulte la sección sobre migración de tablas
Migración in situ
La migración in situ elimina la necesidad de volver a escribir todos los archivos de datos. En su lugar, los archivos de metadatos de Iceberg se generan y se vinculan a los archivos de datos existentes. Iceberg ofrece tres opciones para implementar la migración in situ:
-
Utilice el
snapshot
procedimiento, tal como se explica en las secciones Tabla de instantáneasy Procedimiento de Spark: instantánea de la documentación de Iceberg. -
Utilice el
add_files
procedimiento, tal y como se explica en las secciones Añadir archivosy Procedimiento de Spark: add_files de la documentación de Iceberg. -
Utilice el
migrate
procedimiento, tal y como se explica en las secciones Migrate Tabley Spark Procedure: Migrate de la documentación de Iceberg.
Actualmente, el procedimiento de migración no funciona directamente con el metaalmacén de Hive AWS Glue Data Catalog; solo funciona con el metaalmacén de Hive. Si tiene la obligación de utilizar el migrate
procedimiento en lugar deadd_files
, snapshot
o puede utilizar, un clúster de Amazon EMR temporal con el metaalmacén de Hive (HMS). Este enfoque requiere la versión 1.2 o posterior de Iceberg.
Supongamos que desea crear la siguiente tabla de colmenas:
Puede crear esta tabla Hive ejecutando este código en la consola de Athena:
CREATE EXTERNAL TABLE 'hive_table'( 'id' bigint, 'data' string) USING parquet LOCATION 's3://datalake-xxxx/aws_workshop/iceberg_db/hive_table' INSERT INTO iceberg_db.hive_table VALUES (1, 'a')
Si la tabla de Hive está particionada, incluye la sentencia de partición y añade las particiones según los requisitos de Hive.
ALTER TABLE default.placeholder_table_for_migration ADD PARTITION (date = '2023-10-10')
Pasos:
-
Cree un clúster de Amazon EMR sin habilitar la AWS Glue Data Catalog integración, es decir, no active las casillas de verificación de los metadatos de las tablas de Hive o Spark. Esto se debe a que utilizará el metaalmacén de Hive (HMS) nativo que está disponible en el clúster para esta solución alternativa.
-
Configure la sesión de Spark para usar la implementación del catálogo de Iceberg Hive.
"spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions", "spark.sql.catalog.spark_catalog": "org.apache.iceberg.spark.SparkSessionCatalog", "spark.sql.catalog.spark_catalog.type": "hive",
-
Valide que su clúster de Amazon EMR no esté conectado al AWS Glue Data Catalog ejecutando
show databases
o.show tables
-
Registre la tabla Hive en el metaalmacén de Hive de su clúster de Amazon EMR y, a continuación, utilice el procedimiento Iceberg.
migrate
Este procedimiento crea los archivos de metadatos de Iceberg en la misma ubicación que la tabla Hive.
-
Registre la tabla Iceberg migrada en. AWS Glue Data Catalog
-
Vuelva a un clúster de Amazon EMR que tenga la AWS Glue Data Catalog integración habilitada.
-
Usa la siguiente configuración de Iceberg en la sesión de Spark.
"spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions", "spark.sql.catalog.glue_catalog": "org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.glue_catalog.warehouse": "s3://datalake-xxxx/aws_workshop", "spark.sql.catalog.glue_catalog.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog", "spark.sql.catalog.glue_catalog.io-impl": "org.apache.iceberg.aws.s3.S3FileIO",
Ahora puede consultar esta tabla desde Amazon EMR o AWS Glue Athena.
Migración completa de datos
La migración de datos completa recrea los archivos de datos y los metadatos. Este enfoque lleva más tiempo y requiere recursos informáticos adicionales en comparación con la migración in situ. Sin embargo, esta opción ayuda a mejorar la calidad de las tablas: puede validar los datos, realizar cambios en el esquema y la partición, reorganizar los datos, etc. Para implementar una migración de datos completa, utilice una de las siguientes opciones:
-
Usa la declaración
CREATE TABLE ... AS SELECT
(CTAS) en Spark AWS Glue, Amazon EMR o Athena. Puede establecer la especificación de la partición y las propiedades de la tabla nueva de Iceberg mediante las cláusulas y. PARTITIONED BY
TBLPROPERTIES
Puede ajustar el esquema y las particiones de la nueva tabla según sus necesidades, en lugar de simplemente heredarlos de la tabla de origen. -
Lee la tabla de origen y escribe los datos como una nueva tabla de Iceberg mediante Spark en Amazon EMR AWS Glue o (consulta Crear una
tabla en la documentación de Iceberg).
Elección de una estrategia de migración
Para elegir la mejor estrategia de migración, considera las preguntas de la siguiente tabla.
Pregunta |
Recomendación |
---|---|
¿Qué formato tiene el archivo de datos (por ejemplo, CSV o Apache Parquet)? |
|
¿Desea actualizar o consolidar el esquema de la tabla? |
|
¿Se beneficiaría la tabla de cambiar la estrategia de partición? |
|
¿Sería beneficioso para la tabla añadir o cambiar la estrategia de ordenación? |
|
¿La tabla tiene muchos archivos pequeños? |
|