Saltar al contenido principal

¿Qué es Apache Iceberg?

Apache Iceberg es un formato de tabla de datos distribuido, impulsado por la comunidad, con licencia Apache 2.0 y 100% de código abierto que ayuda a simplificar el procesamiento de datos en grandes conjuntos de datos almacenados en lagos de datos. Los ingenieros de datos utilizan Apache Iceberg porque es rápido, eficiente y fiable a cualquier escala y mantiene registros de cómo cambian los conjuntos de datos a lo largo del tiempo. Apache Iceberg ofrece integraciones sencillas con marcos de procesamiento de datos populares, como Apache Spark, Apache Flink, Apache Hive, Presto y más.

¿Qué es un lago de datos transaccional?

Un lago de datos es un repositorio centralizado que le permite almacenar todos sus datos estructurados y no estructurados a cualquier escala. Una transacción de datos es una serie de intercambios de datos que se llevan a cabo en una sola operación. Por ejemplo, cuando un cliente retira dinero de una cuenta bancaria, el banco realiza varios intercambios de datos al mismo tiempo en una transacción de datos, lo que incluye la verificación de que la cuenta tiene un saldo suficiente, la verificación de la identidad y el cargo de la retirada desde la cuenta. Un lago de datos transaccional es un tipo de lago de datos que no solo almacena datos a escala, sino que también admite operaciones transaccionales y garantiza que los datos sean precisos y coherentes, además de permitirle realizar un seguimiento de los cambios de los datos y su estructura a lo largo del tiempo. Estas propiedades se conocen colectivamente como Atomicidad, Consistencia, Aislamiento y Durabilidad (ACID):

  • Atomicity garantiza que cada transacción es un evento único que tiene éxito o falla por completo; no hay un estado intermedio.

  • La coherencia garantiza que todos los datos escritos sean válidos de acuerdo con las reglas definidas del lago de datos, lo que garantiza que los datos sean precisos y confiables.

  • El aislamiento garantiza que se puedan realizar varias transacciones al mismo tiempo sin interferir entre sí, lo que garantiza que cada transacción se ejecute de forma independiente.

  • La durabilidad significa que los datos no se pierden ni se corrompen una vez que se envía una transacción. Los datos se pueden recuperar en caso de una falla del sistema, como un corte de energía.

¿Qué beneficios tiene utilizar Apache Iceberg?

Algunos de los beneficios clave de usar Apache Iceberg para lagos de datos transaccionales incluyen:

  • Familiaridad con SQL: el lenguaje de consulta estructurado (SQL) es un lenguaje de consulta popular que se usa con frecuencia en todo tipo de aplicaciones. Los analistas de datos y desarrolladores aprenden y utilizan SQL porque se integra bien con diferentes lenguajes de programación y también es bastante fácil de aprender, ya que utiliza palabras clave comunes en inglés en sus instrucciones. Apache Iceberg permite a cualquier persona familiarizada con el lenguaje de consulta estructurado (SQL) crear lagos de datos y realizar la mayoría de las operaciones de lagos de datos sin necesidad de aprender un nuevo idioma.

  • Consistencia de los datos: Apache Iceberg proporciona coherencia de datos para garantizar que cualquier usuario que lea y escriba en los datos vea los mismos datos.

  • Estructura de datos: Apache Iceberg permite realizar cambios sencillos en la estructura de datos, lo que también se conoce como evolución del esquema, lo que significa que los usuarios pueden agregar, cambiar el nombre o eliminar columnas de una tabla de datos sin alterar los datos subyacentes.

  • Control de versiones de datos: Apache Iceberg admite el control de versiones de datos, lo que permite a los usuarios realizar un seguimiento de los cambios en los datos a lo largo del tiempo. Esto habilita la función de viaje en el tiempo, que permite a los usuarios acceder y consultar versiones históricas de los datos y analizar los cambios en los datos entre las actualizaciones y las eliminaciones.

  • Soporte multiplataforma: Apache Iceberg admite una variedad de sistemas de almacenamiento y motores de consulta diferentes, incluidos Apache Spark, Apache Hive y Presto. Esto facilita el uso de Iceberg en una variedad de entornos de procesamiento de datos diferentes.

  • Procesamiento incremental: Iceberg admite el procesamiento incremental, que permite a los usuarios procesar solo los datos que han cambiado desde la última ejecución, también conocido como CDC (Change Data Capture). Esto puede ayudar a mejorar la eficiencia y el rendimiento del procesamiento de datos.

¿Cuáles son los casos de uso más comunes de Apache Iceberg?

Apache Iceberg es adecuado para muchos casos de uso de lagos de datos, entre los que se incluyen:

  • Tablas de datos en lagos de datos que requieren eliminaciones frecuentes, por ejemplo cuando se aplican leyes de privacidad de datos.

  • Tablas de datos del lago de datos que requieren actualizaciones a nivel de registro. Esto resulta útil cuando el conjunto de datos requiere actualizaciones frecuentes después de que los datos se asienten, por ejemplo cuando los datos de ventas pueden cambiar debido a eventos posteriores, como las devoluciones realizadas por los clientes. Iceberg proporciona capacidades para actualizar registros individuales sin necesidad de volver a publicar todo el conjunto de datos.

  • Tablas de datos en lagos de datos que tienen cambios impredecibles, como las tablas de dimensiones que cambian lentamente (SCD). Un ejemplo de SCD es una tabla de registro de clientes que incluye el nombre, la ubicación y la información de contacto, que puede cambiar con el tiempo a intervalos desconocidos.

  • Cuando las transacciones con el lago de datos requieren una validez, durabilidad y fiabilidad de los datos garantizadas, se pueden implementar formatos de tabla de Apache Iceberg para garantizar las transacciones de ACID.

  • Cuando sea necesario retroceder en el tiempo para consultar versiones de histórico de los datos a fin de realizar análisis de tendencias, analizar los cambios en los datos durante un período de tiempo o restaurar o revertir a una versión anterior para corregir problemas.

¿Quién usa Apache Iceberg?

Los ingenieros de datos, los administradores de datos, los analistas de datos y los científicos de datos se encuentran entre las personas que utilizan Apache Iceberg.  Los ingenieros y administradores de datos pueden utilizar Apache Iceberg para diseñar y crear sistemas de almacenamiento de datos escalables.  Los analistas de datos y los científicos de datos pueden usar Apache Iceberg para analizar grandes conjuntos de datos de manera eficiente.

¿Por qué elegir Apache Iceberg?

Apache Iceberg ofrece una forma rápida y eficiente de procesar grandes conjuntos de datos a escala. Aporta los siguientes beneficios:

  1. Código abierto: Apache Iceberg es un proyecto de código abierto, lo que significa que es de uso gratuito y se puede personalizar para satisfacer sus necesidades específicas. También cuenta con una comunidad activa de desarrolladores que mejoran y añaden nuevas funciones al proyecto de forma continua.

  2. Escalabilidad: Apache Iceberg está diseñado para gestionar grandes conjuntos de datos de manera eficiente. Puede particionar y organizar los datos en varios nodos, lo que ayuda a distribuir la carga de trabajo y acelerar el procesamiento de los datos.

  3. Rendimiento: Apache Iceberg tiene una variedad de funciones para optimizar el rendimiento de las consultas, incluidas las técnicas de compresión y almacenamiento en columnas, como la transferencia de predicados y la evolución de esquemas.

  4. Flexibilidad: Apache Iceberg le permite cambiar la forma en que se organizan sus datos para que puedan evolucionar con el tiempo sin necesidad de volver a escribir sus consultas o reconstruir sus estructuras de datos. También admite varios formatos de datos y fuentes de datos, lo que facilita la integración con los sistemas existentes.

  5. Fiabilidad: Apache Iceberg garantiza la consistencia y confiabilidad de los datos mediante su soporte para transacciones. Puede realizar un seguimiento de los cambios de los datos a lo largo del tiempo y volver a las versiones históricas para ayudarle a corregir los problemas.

¿Qué servicios de AWS son compatibles con Iceberg?

Apache Iceberg es compatible con los marcos de procesamiento de datos más populares, como Apache Spark, Apache Flink, Apache Hive y Presto. Los servicios de AWS, como Amazon Redshift , Amazon Athena , Amazon EMR , AWS Glue y Amazon Data Firehose , incluyen soporte nativo para Marcos de lagos de datos transaccionales, incluido Apache Iceberg. Apache Iceberg, en combinación con los servicios de AWS compatibles, habilita un lago de datos transaccional, que a menudo se basa en el almacenamiento en S3 .

  • Amazon Redshift es un servicio de análisis de SQL y almacenamiento de datos totalmente gestionado y con tecnología de inteligencia artificial que permite a los clientes tomar decisiones empresariales de forma rápida y rentable. Amazon Redshift ofrece una arquitectura de procesamiento paralelo de forma masiva (MPP), de varios clústeres y sin servidores con capacidades sin ETL que impulsan casos de uso de análisis, IA y ML casi en tiempo real con el intercambio de datos. Los clientes pueden usar Amazon Redshift para consultar las tablas de Apache Iceberg en el lago de datos, acceder a ellas a través del catálogo de datos de AWS Glue y unirlas a sus tablas del almacén de datos para realizar análisis exhaustivos.

  • Amazon Athena es un servicio de análisis interactivo sin servidor creado en marcos de código abierto que admite formatos de archivo y tablas abiertas. Athena proporciona un método simplificado y flexible de analizar petabytes de datos donde residan. Athena proporciona soporte nativo para consultas de lectura, viaje en el tiempo, escritura y DDL para tablas de Apache Iceberg que utilizan el formato Apache Parquet para los datos y el catálogo de AWS Glue para su metaalmacén.

  • Amazon EMR es una solución de big data para el procesamiento de datos a escala de petabytes, el análisis interactivo y el aprendizaje automático que utiliza marcos de código abierto como Apache Spark, Hadoop, Presto y Hive. Con Amazon EMR 6.5.0, puede utilizar Apache Spark 3 en clústeres de Amazon EMR con el formato de tabla de Iceberg. Los marcos de EMR, incluidos Spark, Trino, Flink y Hive, son compatibles con Apache Iceberg.

  • AWS Glue es un servicio de integración de datos sin servidor que facilita el descubrimiento, la preparación, el traslado y la integración de datos de varias fuentes para el análisis, el aprendizaje automático (ML) y el desarrollo de aplicaciones.  AWS Glue 3.0 y versiones posteriores admiten el marco Apache Iceberg para lagos de datos. Puede utilizar AWS Glue para realizar operaciones de lectura y escritura en tablas de Iceberg en Amazon S3, o trabajar con tablas de Iceberg mediante el catálogo de datos de AWS Glue. También se admiten operaciones adicionales, como insertar, actualizar y todas las consultas de Spark y escrituras de Spark.

  • Amazon Data Firehose es un servicio totalmente gestionado y sin servidor para entregar datos de streaming en tiempo real a destinos como Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Amazon OpenSearch Serverless, Splunk, Snowflake, Apache Iceberg Tables y cualquier punto de enlace HTTP o punto de enlace HTTP personalizado que pertenezca a proveedores de servicios externos compatibles, incluidos Datadog, Dynatrace, LogicMonitor, MongoDB, New Relic, Gigix y Elastic. Con Amazon Data Firehose, no necesita escribir aplicaciones ni administrar recursos. Usted configura sus productores de datos para que envíen datos a Amazon Data Firehose y este entrega inmediatamente los datos al destino que usted especificó. También puede configurar Amazon Data Firehose para transformar los datos antes de entregarlos.