Cómo completar y administrar las tablas transaccionales - AWS Glue

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.

Cómo completar y administrar las tablas transaccionales

Apache Iceberg, Apache Hudi y Linux Foundation Delta Lake son formatos de tablas de código abierto diseñados para gestionar cargas de trabajo de análisis de datos y lagos de datos a gran escala en Apache Spark.

Puede completar las tablas de Iceberg, Hudi y Delta Lake en el AWS Glue Data Catalog mediante los siguientes métodos:

  • Rastreador de AWS Glue: Los Rastreador de AWS Glue pueden detectar y completar automáticamente los metadatos de las tablas de Iceberg, Hudi y Delta Lake en el Catálogo de datos. Para obtener más información, consulte Uso de rastreadores para completar el Catálogo de datos .

  • Trabajos de ETL de AWS Glue: Puede crear trabajos de ETL para escribir datos en las tablas de Iceberg, Hudi y Delta Lake, y completar sus metadatos en el Catálogo de datos. Para obtener más información, consulte Uso de marcos de lagos de datos con trabajos de ETL de AWS Glue.

  • Consola de AWS Glue, consola de AWS Lake Formation, AWS CLI o API: Puede usar la consola de AWS Glue, la consola de Lake Formation o API para crear y administrar las definiciones de las tablas de Iceberg en el Catálogo de datos.

Creación de tablas de Apache Iceberg

Puede crear tablas de Apache Iceberg que utilicen el formato de datos de Apache Parquet en el AWS Glue Data Catalog con datos que residan 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. AWS Glue crea tablas de Iceberg v2 de forma predeterminada. 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 usar la consola de AWS Glue o de Lake Formation, o bien la operación CreateTable en la API de AWS Glue, para crear una tabla de Iceberg en el Catálogo de datos. Para obtener más información, consulte la acción CreateTable (Python: create_table).

Cuando cree una tabla 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 utilizar Lake Formation para asegurar su tabla Iceberg utilizando permisos de control de acceso específicos cuando registre la ubicación de datos de Amazon S3 con AWS Lake Formation. Para los datos de origen en Amazon S3 y los metadatos que no están registrados en Lake Formation, el acceso se determina mediante las políticas de permisos de IAM para Amazon S3 y acciones de AWS Glue. Para obtener más información, consulte Administración de permisos.

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 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:PutObject en el recurso arn:aws:s3:::{bucketName}

    • s3:GetObject en el recurso arn:aws:s3:::{bucketName}

    • s3:DeleteObject en 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. De este modo, Lake Formation puede suministrar credenciales a servicios analíticos de AWS 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 Cómo 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 los permisos de ubicación de datos, consulte Control de acceso a los datos subyacentes.

Para habilitar la compactación, el servicio debe asumir un rol de IAM que tenga permisos para actualizar las tablas del Catálogo de datos. Para obtener más información, consulte Requisitos previos para la optimización de tablas

Creación de tablas de Iceberg

Puede crear tablas de Iceberg v1 y v2 con la consola de AWS Glue o de Lake Formation, o bien con la AWS Command Line Interface, tal como se documenta en esta página. También puede crear tablas de Iceberg con el 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.

Para crear una tabla de Iceberg

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

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

    • Nombre de la tabla: Ingrese el nombre de 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: Seleccione 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 la tabla: En Formato de la tabla, seleccione Apache Iceberg.

    • Activar la compactación: Seleccione Activar la compactación para compactar los objetos pequeños de Amazon S3 de la tabla de modo que formen objetos más grandes.

    • Rol de IAM: Para ejecutar la compactación, el servicio asume un rol de IAM en su nombre. Puede elegir un rol de IAM 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 Requisitos previos para la optimización de tablas .

    • Ubicación: Especifique la ruta a la carpeta en 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 los 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/" } }'
Temas