Communitygithub.com

apache/beam

Guía completa para desarrollar correctamente nuevos conectores I/O de Apache Beam, incluyendo transformaciones I/O principales, SchemaTransforms, definiciones de protos URN, integración con API administrada, servicio de expansión entre lenguajes y pruebas.

¿Qué es beam?

Esta habilidad proporciona una guía integral y detallada para desarrolladores que deseen crear nuevos conectores de E/S (I/O) para Apache Beam de manera correcta y eficiente. Apache Beam es un modelo de programación unificado para pipelines de datos por lotes y streaming, y sus conectores I/O son esenciales para integrar sistemas externos como bases de datos, sistemas de archivos o servicios web. El contenido cubre desde los fundamentos de las transformaciones I/O principales, hasta conceptos avanzados como SchemaTransforms, que permiten una integración más rica con el ecosistema Beam, y la definición de protos URN para identificar de manera única los conectores. También se aborda la integración con la API administrada de Beam (Managed API), la implementación de servicios de expansión entre lenguajes (cross-language) para soportar múltiples SDKs, y las mejores prácticas para pruebas unitarias y de integración. Esta guía es útil para contribuyentes de código abierto, ingenieros de datos y desarrolladores que necesiten extender Beam con conectores personalizados, y es aplicable a plataformas como Apache Beam SDK (Java, Python, Go) y sus frameworks de ejecución (Dataflow, Flink, Spark, etc.).

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add apache/beam

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace beam?

Guía completa para desarrollar correctamente nuevos conectores I/O de Apache Beam, incluyendo transformaciones I/O principales, SchemaTransforms, definiciones de protos URN, integración con API administrada, servicio de expansión entre lenguajes y pruebas.

Introducción

Esta guía proporciona un enfoque paso a paso para construir conectores I/O de Apache Beam robustos y mantenibles. Apache Beam ofrece un modelo de programación unificado para pipelines de datos, y los conectores I/O son el mecanismo para leer y escribir datos desde y hacia sistemas externos.

Transformaciones I/O principales

Las transformaciones I/O principales son la base de cualquier conector. Deben implementar las interfaces PTransform, BoundedSource o UnboundedSource, y Sink según corresponda.

Lectura (Read)

Para implementar una transformación de lectura, se debe crear una subclase de PTransform que devuelva un PCollection. El origen debe definir cómo dividir el trabajo en paralelo y cómo leer los registros.

public class MyIO {
  public static Read read() {
    return new Read();
  }
}

Escritura (Write)

Las transformaciones de escritura deben implementar la interfaz Sink y gestionar correctamente la escritura en lotes o streaming.

SchemaTransforms

Los SchemaTransforms permiten que los conectores expongan su esquema de manera explícita, facilitando la integración con el sistema de tipos de Beam y la conversión automática entre formatos.

Definiciones de protos URN

Cada conector debe tener un identificador único definido mediante un URN (Uniform Resource Name) en formato proto. Esto permite la identificación y el enrutamiento correcto entre diferentes lenguajes.

syntax = "proto3";

package beam.connectors;

message MyConnectorSpec {
  option (beam.urn) = "beam:connector:my_connector:v1";
  // configuration fields
}

Integración con API administrada

La API administrada de Beam proporciona una capa de abstracción sobre los conectores, permitiendo su descubrimiento, configuración y ejecución de manera consistente. Los conectores deben implementar el contrato definido por la API administrada.

Servicio de expansión entre lenguajes

Para soportar múltiples SDKs (Java, Python, Go), es necesario implementar un servicio de expansión entre lenguajes (cross-language expansion service). Esto se logra mediante el uso de gRPC y la definición de servicios proto específicos.

Pruebas

Las pruebas son fundamentales para garantizar la corrección de los conectores. Se recomienda:

  • Pruebas unitarias para transformaciones individuales.
  • Pruebas de integración con sistemas externos reales o emulados.
  • Pruebas de rendimiento para validar la escalabilidad.
./gradlew :sdks:java:io:my-connector:test

Recursos adicionales

Skills relacionados