Creación de tablas de Apache Iceberg - AWS Lake Formation

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.

Creación de tablas de Apache Iceberg

AWS Lake Formation admite la creación de tablas Apache Iceberg que utilizan el formato de datos Apache Parquet AWS Glue Data Catalog con datos que residen en Amazon S3. Una tabla en el Catálogo de datos es la definición de metadatos que representa los datos en un almacén de datos. De forma predeterminada, Lake Formation crea tablas Iceberg v2. Para ver la diferencia entre las tablas v1 y v2, consulte Cambios de versión de formato en la documentación de Apache Iceberg.

Apache Iceberg es un formato de tabla abierto para conjuntos de datos analíticos muy grandes. Iceberg permite modificar fácilmente su esquema, o evolución del esquema, de manera que los usuarios pueden añadir, renombrar o eliminar columnas de una tabla de datos sin alterar los datos subyacentes. Iceberg también ofrece compatibilidad con el control de versiones de datos, que permite a los usuarios hacer un seguimiento de los cambios en los datos a lo largo del tiempo. Esto habilita la característica de viaje en el tiempo, con la que los usuarios pueden acceder a versiones históricas de los datos y consultarlas, así como analizar los cambios en los datos entre actualizaciones y eliminaciones.

Puede utilizar la consola Lake Formation o la CreateTable operación de AWS Glue API para crear una tabla de iceberg en el catálogo de datos. Para obtener más información, consulte CreateTable action (Python: create_table).

Cuando cree una tabla de Iceberg en el Catálogo de datos, deberá especificar el formato de la tabla y la ruta del archivo de metadatos en Amazon S3 para poder hacer lecturas y escrituras.

Puede usar Lake Formation para proteger su mesa de iceberg mediante permisos de control de acceso detallados al registrar la ubicación de datos de Amazon S3. AWS Lake Formation En el caso de los datos fuente de Amazon S3 y los metadatos que no estén registrados en Lake Formation, el acceso viene determinado por las políticas de IAM permisos y las AWS Glue acciones de Amazon S3. Para obtener más información, consulte Administrar los permisos de Lake Formation.

nota

El Catálogo de datos no admite la creación de particiones ni la adición de propiedades de tablas de iceberg.

Requisitos previos

Para crear tablas de Iceberg en el Catálogo de datos y configurar los permisos de acceso a los datos de Lake Formation, debe cumplir los siguientes requisitos:

  1. Se requieren permisos para crear tablas de Iceberg sin datos registrados en Lake Formation.

    Además de los permisos necesarios para crear una tabla en el Catálogo de datos, el creador de la tabla requiere los siguientes permisos:

    • s3:PutObjecten el recurso arn:aws:s3::: {} bucketName

    • s3:GetObjecten el recurso arn:aws:s3::: {} bucketName

    • s3:DeleteObjecten el recurso arn:aws:s3::: {} bucketName

  2. Se requieren permisos para crear tablas de Iceberg con datos registrados en Lake Formation:

    Para utilizar Lake Formation para administrar y asegurar los datos de su lago de datos, registre su ubicación de Amazon S3 que tiene los datos de las tablas con Lake Formation. Esto es para que Lake Formation pueda vender credenciales a servicios AWS analíticos como Athena, Redshift Spectrum y Amazon EMR para acceder a los datos. Para obtener más información sobre el registro de una ubicación de Amazon S3, consulte Añadir una ubicación de Amazon S3 a su lago de datos.

    Una entidad principal que lee y escribe los datos subyacentes que están registrados en Lake Formation requiere los siguientes permisos:

    • lakeformation:GetDataAccess

    • DATA_LOCATION_ACCESS

      Una entidad principal que tiene permisos de localización de datos en una localización también tiene permisos de localización en todas las ubicaciones secundarias.

      Para obtener más información sobre permisos de ubicación de datos, consulte Control de acceso a los datos subyacentes.

Para permitir la compactación, el servicio debe asumir una IAM función que tenga permisos para actualizar las tablas del catálogo de datos. Para obtener más información, consulte los requisitos previos de optimización de tablas.

Creación de tablas de Iceberg

Puede crear tablas Iceberg v1 y v2 con la consola Lake Formation o AWS Command Line Interface tal como se documenta en esta página. También puede crear tablas Iceberg utilizando la AWS Glue consola o. Rastreador de AWS Glue Para más información, consulte Catálogo de datos y rastreadores en la Guía para desarrolladores de AWS Glue .

Creación de una tabla de Iceberg

Console
  1. Inicie sesión en y abra la AWS Management Console consola de Lake Formation en https://console.aws.amazon.com/lakeformation/.

  2. En Catálogo de datos, seleccione Tablas y utilice el botón Crear tabla para especificar los siguientes atributos:

    • Nombre de tabla. Escriba un nombre para la tabla. Si utiliza Athena para acceder a las tablas, utilice los consejos para nombres recogidos en la Guía del usuario de Amazon Athena.

    • Base de datos. Elija una base de datos existente o cree una nueva.

    • Descripción. Descripción de la tabla. Puede escribir una descripción para ayudarle a entender el contenido de la tabla.

    • Formato de tabla. Para el formato de la tabla, elija Apache Iceberg.

      Se ha seleccionado la opción de tabla Apache Iceberg con las opciones de optimización de la tabla.
    • Optimización de tablas

      • Compactación: los archivos de datos se combinan y se reescriben, eliminan los datos obsoletos y consolidan los datos fragmentados en archivos más grandes y eficientes.

      • Retención de instantáneas: las instantáneas son versiones con fecha y hora de una tabla de Iceberg. Las configuraciones de retención de instantáneas permiten a los clientes determinar cuánto tiempo se deben retener las instantáneas y cuántas instantáneas retener. La configuración de un optimizador de retención de instantáneas puede ayudar a gestionar la sobrecarga de almacenamiento al eliminar las instantáneas antiguas e innecesarias y sus archivos subyacentes asociados.

      • Eliminación de archivos huérfanos: los archivos huérfanos son archivos a los que los metadatos de la tabla de Iceberg ya no hacen referencia. Estos archivos pueden acumularse con el tiempo, especialmente después de operaciones como la eliminación de tablas o los trabajos fallidos. ETL Habilitar la eliminación de archivos huérfanos AWS Glue permite identificar y eliminar periódicamente estos archivos innecesarios, liberando espacio de almacenamiento.

      Para obtener más información, consulte Optimización de las tablas de Iceberg.

    • IAMfunción: para ejecutar la compactación, el servicio asume una IAM función en su nombre. Puede elegir un IAM rol mediante el menú desplegable. Asegúrese de que el rol tenga los permisos necesarios para habilitar la compactación.

      Para obtener más información sobre los permisos necesarios, consulte la tabla sobre los requisitos previos de optimización.

    • Ubicación. Especifique la ruta a la carpeta de Amazon S3 que almacena la tabla de metadatos. Iceberg necesita un archivo de metadatos y una ubicación en el Catálogo de datos para poder hacer lecturas y escrituras.

    • Esquema. Seleccione Agregar columnas para añadir columnas y tipos de datos de las columnas. Tiene la opción de crear una tabla vacía y actualizar el esquema más adelante. El Catálogo de datos admite los tipos de datos de Hive. Para obtener más información, consulte Tipos de datos de Hive.

      Con Iceberg podrá desarrollar el esquema y la partición después de crear la tabla. Puede utilizar consultas de Athena para actualizar el esquema de la tabla y consultas de Spark para actualizar las particiones.

AWS CLI
aws glue create-table \ --database-name iceberg-db \ --region us-west-2 \ --open-table-format-input '{ "IcebergInput": { "MetadataOperation": "CREATE", "Version": "2" } }' \ --table-input '{"Name":"test-iceberg-input-demo", "TableType": "EXTERNAL_TABLE", "StorageDescriptor":{ "Columns":[ {"Name":"col1", "Type":"int"}, {"Name":"col2", "Type":"int"}, {"Name":"col3", "Type":"string"} ], "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/" } }'