Athrun Data Intelligence


En los últimos abriles, hemos sido testigos de un cambio significativo en la forma en que las empresas gestionan y analizan sus lagos de datos en constante crecimiento. A la vanguardia de esta transformación está Iceberg apacheun formato de tabla abierta que está ganando contorno rápidamente entre los consumidores de datos a gran escalera.

Sin secuestro, a medida que las empresas amplían sus implementaciones de lagos de datos, administrar estas tablas Iceberg a escalera se vuelve un desafío. Los equipos de datos a menudo necesitan administrar la desarrollo del esquema de la tabla, su partición y las versiones de las instantáneas. La automatización agiliza estas operaciones, proporciona coherencia, reduce el error humano y ayuda a los equipos de datos a centrarse en tareas de longevo valencia.

El Pegamento AWS Catálogo de datos ahora admite la mandato de tablas Iceberg utilizando el API de pegamento de AWS, SDK de AWSy Formación en la estrato de AWS. Anteriormente, los usuarios tenían que crear tablas Iceberg en el catálogo de datos sin particiones usando CloudFormation o SDK y luego sumar particiones desde Atenea amazónica u otros motores de investigación. Esto evita que se realice un seguimiento del pelaje de las tablas en un solo zona y agrega pasos fuera de la automatización en el proceso de integración y entrega continua (CI/CD) para las operaciones de mantenimiento de las tablas. Con el propagación, los clientes de AWS Glue ahora pueden usar sus herramientas de automatización o infraestructura como código (IaC) preferidas para automatizar la creación de tablas Iceberg con particiones y usar las mismas herramientas para regir las actualizaciones de esquemas y el orden de clasificación.

En esta publicación, mostramos cómo crear y refrescar tablas Iceberg con particiones en el catálogo de datos utilizando AWS SDK y CloudFormation.

Descripción universal de la decisión

En las siguientes secciones, ilustramos la SDK de AWS para Python (Boto3) y Interfaz de dirección de comandos de AWS (AWS CLI) uso de las API del catálogo de datos:CrearTabla() y ActualizarTabla()-para Servicio de almacenamiento simple de Amazon (Amazon S3) Tablas Iceberg basadas en particiones. Todavía proporcionamos las plantillas de CloudFormation para crear y refrescar una tabla Iceberg con particiones.

Requisitos previos

Los cambios en la API del catálogo de datos están disponibles en las siguientes versiones de AWS CLI y SDK para Python:

  • Lectura de AWS CLI de 2.27.58 o superior
  • SDK para Python lectura 1.39.12 o superior

Uso de la CLI de AWS

Creemos una tabla Iceberg con una partición, usando CrearTabla() en la CLI de AWS:

aws glue create-table --cli-input-json file://createicebergtable.json

El createicebergtable.json es el posterior:

{
    "CatalogId": "123456789012",
    "DatabaseName": "bankdata_icebergdb",
    "Name": "transactiontable1",
    "OpenTableFormatInput": { 
      "IcebergInput": { 
         "MetadataOperation": "CREATE",
         "Version": "2",
         "CreateIcebergTableInput": { 
            "Location": "s3://sampledatabucket/bankdataiceberg/transactiontable1/",
            "Schema": {
                "SchemaId": 0,
                "Type": "struct",
                "Fields": ( 
                    { 
                        "Id": 1,
                        "Name": "transaction_id",
                        "Required": true,
                        "Type": "string"
                    },
                    { 
                        "Id": 2,
                        "Name": "transaction_date",
                        "Required": true,
                        "Type": "date"
                    },
                    { 
                        "Id": 3,
                        "Name": "monthly_balance",
                        "Required": true,
                        "Type": "float"
                    }
                )
            },
            "PartitionSpec": { 
                "Fields": ( 
                    { 
                        "Name": "by_year",
                        "SourceId": 2,
                        "Transform": "year"
                    }
                ),
                "SpecId": 0
            },
            "WriteOrder": { 
                "Fields": ( 
                    { 
                        "Direction": "asc",
                        "NullOrder": "nulls-last",
                        "SourceId": 1,
                        "Transform": "none"
                    }
                ),
                "OrderId": 1
            }  
        }
      }
   }
}

El comando de AWS CLI inicial crea la carpeta de metadatos para la tabla Iceberg en Amazon S3, como se muestra en la posterior captura de pantalla.

Interfaz del depósito de Amazon S3 que muestra la carpeta de metadatos que contiene un único archivo JSON con fecha del 6 de noviembre de 2025

Puede completar la tabla con títulos de la posterior forma y corroborar el esquema de la tabla usando la consola de Athena:

SELECT * FROM "bankdata_icebergdb"."transactiontable1" limit 10;
insert into bankdata_icebergdb.transactiontable1 values
    ('AFTERCREATE1234', DATE '2024-08-23', 6789.99),
    ('AFTERCREATE5678', DATE '2023-10-23', 1234.99);
SELECT * FROM "bankdata_icebergdb"."transactiontable1";

La posterior captura de pantalla muestra los resultados.

Editor de consultas de Amazon Athena que muestra consultas SQL y resultados para la base de datos bankdata_icebergdb con datos de transacciones

Luego de completar la tabla con datos, puede inspeccionar el prefijo S3 de la tabla, que ahora tendrá el data carpeta.

Interfaz de depósito de Amazon S3 que muestra una carpeta de datos con dos subcarpetas organizadas por año: 2023 y 2024

El data Las carpetas particionadas de acuerdo con nuestra definición de tabla y los archivos de datos de Parquet creados a partir de nuestro comando INSERT están disponibles debajo de cada prefijo particionado.

Interfaz del depósito de Amazon S3 que muestra la carpeta by_year=2023 que contiene un único archivo Parquet de 575 bytes

A continuación, actualizamos la tabla Iceberg agregando una nueva partición, usando ActualizarTabla():

aws glue update-table --cli-input-json file://updateicebergtable.json

El updateicebergtable.json es el posterior.

{
  "CatalogId": "123456789012",
  "DatabaseName": "bankdata_icebergdb",
  "Name": "transactiontable1",
  "UpdateOpenTableFormatInput": {
    "UpdateIcebergInput": {
      "UpdateIcebergTableInput": {
        "Updates": (
          {
            "Location": "s3://sampledatabucket/bankdataiceberg/transactiontable1/",
            "Schema": {
              "SchemaId": 1,
              "Type": "struct",
              "Fields": (
                {
                  "Id": 1,
                  "Name": "transaction_id",
                  "Required": true,
                  "Type": "string"
                },
                {
                  "Id": 2,
                  "Name": "transaction_date",
                  "Required": true,
                  "Type": "date"
                },
                {
                  "Id": 3,
                  "Name": "monthly_balance",
                  "Required": true,
                  "Type": "float"
                }
              )
            },
            "PartitionSpec": {
              "Fields": (
                {
                  "Name": "by_year",
                  "SourceId": 2,
                  "Transform": "year"
                },
                {
                  "Name": "by_transactionid",
                  "SourceId": 1,
                  "Transform": "identity"
                }
              ),
              "SpecId": 1
            },
            "SortOrder": {
              "Fields": (
                {
                  "Direction": "asc",
                  "NullOrder": "nulls-last",
                  "SourceId": 1,
                  "Transform": "none"
                }
              ),
              "OrderId": 2
            }
          }
        )
      }
    }
  }
}

UpdateTable() modifica el esquema de la tabla agregando un archivo JSON de metadatos al subyacente metadata carpeta de la tabla en Amazon S3.

Interfaz de depósito de Amazon S3 que muestra cinco objetos de metadatos, incluidos archivos JSON y Avro con marcas de tiempo

Insertamos títulos en la tabla usando Athena de la posterior forma:

insert into bankdata_icebergdb.transactiontable1 values
    ('AFTERUPDATE1234', DATE '2025-08-23', 4536.00),
    ('AFTERUPDATE5678', DATE '2022-10-23', 23489.00);
SELECT * FROM "bankdata_icebergdb"."transactiontable1";

La posterior captura de pantalla muestra los resultados.

Editor de consultas de Amazon Athena con declaraciones SQL y resultados después de actualizar la partición iceberg e insertar datos

Inspeccionar los cambios correspondientes al data carpeta en la ubicación de Amazon S3 de la tabla.

Prefijo de Amazon S3 que muestra nuevas particiones para la tabla Iceberg

Este ejemplo ha ilustrado cómo crear y refrescar tablas Iceberg con particiones mediante comandos de AWS CLI.

SDK para uso de Python

Los siguientes scripts de Python ilustran el uso CrearTabla() y ActualizarTabla() para una mesa Iceberg con particiones:

Uso de CloudFormation

Utilice las siguientes plantillas de CloudFormation para CreateTable() y UpdateTable(). Luego del CreateTable plantilla está completa, actualice la misma pila con el UpdateTable plantilla creando un nuevo conjunto de cambios para su pila y ejecutándolo.

Acicalar

Para evitar incurrir en costos en las tablas de Iceberg creadas con la CLI de AWS, elimine las tablas del catálogo de datos.

Conclusión

En esta publicación, ilustramos cómo utilizar la CLI de AWS para crear y refrescar tablas Iceberg con particiones en el catálogo de datos. Todavía proporcionamos el código de muestra y las plantillas del SDK para Python y CloudFormation. Esperamos que esto le ayude a automatizar la creación y mandato de sus tablas Iceberg con particiones en sus canales de CI/CD y entornos de producción. Pruébelo en su propio caso de uso y comparta sus comentarios en la sección de comentarios.


Sobre los autores

Agradecimientos: Un agradecimiento específico a todos los que contribuyeron al expansión y propagación de esta función: Purvaja Narayanaswamy, Sachet Saurabh, Akhil Yendluri y Mohit Chandak.

Aarthi Srinivasan

Aarthi Srinivasan

Aarthi es arquitecto sénior de Big Data en AWS. Trabaja con clientes y socios de AWS para diseñar soluciones de data lake house, mejorar las características de los productos y establecer las mejores prácticas para la mandato de datos.

Pratik Das

Pratik Das

pratik es directivo senior de productos en AWS. Le apasiona todo lo relacionado con los datos y trabaja con los clientes para comprender sus evacuación y crear experiencias maravillosas. Tiene experiencia en la creación de soluciones basadas en datos y sistemas de enseñanza forzoso en producción.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *