>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Rust

Apache Iceberg en Rust Sin Java Pesado

Si trabajas con big data, probablemente ya conoces Apache Iceberg. Básicamente, es el estándar para construir arquitectura Lakehouse sobre archivos Parquet u ORC. Durante mucho tiempo, Java fue el hogar principal de Iceberg. Casi todas las bibliotecas oficiales y las integraciones con Spark o Trino estaban escritas para la JVM.

Sin embargo, el stack de herramientas de procesamiento de datos ahora se está desplazando hacia Rust. Proyectos como Apache DataFusion, Polars y otros necesitan acceso a tablas Iceberg sin tener que iniciar un runtime Java pesado o tratar con enlaces JNI. Así es como un repositorio oficial apache/iceberg-rust llegó a existir dentro de la Apache Foundation.

Por Qué Portar a Rust

Una implementación nativa ofrece rendimiento y baja sobrecarga de memoria. Cuando estás escribiendo un microservicio para procesamiento de streams, una utilidad o un Foreign Data Wrapper personalizado para PostgreSQL, arrastrar la JVM es doloroso. La JVM requiere cientos de megabytes de memoria al inicio y se congela periódicamente debido a la recolección de basura.

La biblioteca en Rust puede leer metadatos y datos de Iceberg directamente desde archivos binarios ligeros. El proyecto se desarrolla dentro de la propia Apache Foundation, por lo que no es un fork privado sino un componente de infraestructura oficial.

Estructura del Repositorio

Los desarrolladores no empaquetaron todo en un monolito masivo. El proyecto está dividido en un conjunto de módulos independientes. Solo tomas las dependencias que realmente necesitas en tu servicio.

El núcleo de la biblioteca vive en el módulo iceberg. Maneja el análisis de metadatos, las manipulaciones de manifiestos y las operaciones de esquema de tablas según las especificaciones Iceberg v1 y v2.

Se han creado crates separados para trabajar con catálogos de metadatos:

  • iceberg-catalog-rest para operaciones de API REST
  • iceberg-catalog-glue para integración con AWS Glue Data Catalog
  • iceberg-catalog-hms para conectarse a Hive Metastore
  • iceberg-catalog-sql para almacenar metadatos en PostgreSQL o SQLite
  • iceberg-catalog-s3tables para trabajar con Amazon S3 Tables

El módulo iceberg-storage-opendal maneja el almacenamiento físico como S3, GCS o disco local. Utiliza la biblioteca Apache OpenDAL, que abre inmediatamente acceso a todos los almacenes de objetos populares.

Si necesitas un motor de ejecución de consultas, el módulo iceberg-datafusion es útil. Este módulo vincula Iceberg al motor SQL de Apache DataFusion, permitiéndote ejecutar consultas SQL contra tablas directamente desde Rust.

Dónde Ya Está Funcionando

El desarrollo es activo, pero productos serios ya están usando la biblioteca en producción:

  • Databend la usa en su data warehouse en la nube.
  • RisingWave aprovecha la biblioteca para trabajar con Iceberg desde su base de datos en tiempo real.
  • Supabase usa componentes Rust de Iceberg en extensiones para Postgres y en servicios de streaming ETL.
  • Moonlink usa la biblioteca para resolver la tarea de replicar datos CDC desde Postgres a formato Iceberg en fracciones de segundo.
  • Apache DataFusion Comet la usa para acelerar el rendimiento de Spark.

Soporte y Versionado

El equipo del proyecto sigue una política de MSRV (versión mínima soportada de Rust). El código se construye y prueba contra versiones estables de Rust. La versión mínima del compilador soportado se fija con un buffer de aproximadamente tres meses relativo a los lanzamientos recientes del lenguaje.

El desarrollo es completamente abierto. Todos los debates tienen lugar en la lista de correo [email protected] y en el canal #rust de la comunidad oficial de Apache Iceberg en Slack.

¿Vale la Pena Probarlo

Si estás construyendo servicios alrededor de data warehouses, escribiendo conectores en Rust, o desarrollando tus propias herramientas de procesamiento de datos, iceberg-rust parece ser la opción más lógica.

La biblioteca todavía se está refinando en términos de cubrir toda la especificación Iceberg, pero la lectura básica, escritura y soporte para catálogos clave funcionan de manera estable. Para proyectos basados en DataFusion, ya es un bloque de construcción listo para usar.

Proyectos relacionados