Communitygithub.com

apache/beam

Guia completo para desenvolver corretamente novos conectores I/O do Apache Beam, incluindo transformações I/O principais, SchemaTransforms, definições de proto URN, integração com Managed API, serviço de expansão entre linguagens e testes.

O que é beam?

Este guia fornece uma visão geral detalhada do desenvolvimento de conectores I/O personalizados para o Apache Beam, cobrindo desde os conceitos fundamentais até a implementação prática. Ele explica como criar transformações I/O principais, como ReadFrom e WriteTo, utilizando a abordagem baseada em PTransform. Também aborda a integração com SchemaTransforms para expor conectores de forma padronizada e reutilizável, incluindo a definição de URNs em proto para identificação única. O guia detalha o uso da API Managed para simplificar a configuração e o gerenciamento de recursos externos, como bancos de dados e sistemas de arquivos. Além disso, descreve o serviço de expansão entre linguagens (cross-language), permitindo que conectores escritos em Java possam ser usados a partir de outros SDKs como Python ou Go. Por fim, são fornecidas diretrizes rigorosas de teste, incluindo testes unitários, de integração e de expansão, para garantir a qualidade e a confiabilidade dos conectores implementados.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add apache/beam

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que beam faz?

Guia completo para desenvolver corretamente novos conectores I/O do Apache Beam, incluindo transformações I/O principais, SchemaTransforms, definições de proto URN, integração com Managed API, serviço de expansão entre linguagens e teste.

Introdução

O Apache Beam oferece um modelo unificado para processamento de dados em lote e streaming. Para interagir com fontes e destinos de dados externos, é necessário desenvolver conectores I/O. Este guia detalha as práticas recomendadas para criar conectores robustos e reutilizáveis.

Estrutura do Guia

1. Transformações I/O Principais

As transformações I/O principais (ReadFrom e WriteTo) são implementadas como extensões de PTransform. Elas encapsulam toda a lógica de leitura e escrita, incluindo configuração de esquemas e manipulação de dados.

2. SchemaTransforms

SchemaTransform é uma abstração que permite expor conectores de forma padronizada. Cada conector deve definir um SchemaTransformProvider que descreve os parâmetros de configuração e como construir a transformação.

3. Definições Proto URN

Cada transformação I/O deve ser identificada por uma URN (Uniform Resource Name) única, definida em arquivos proto. Isso permite a descoberta e a utilização de conectores em diferentes SDKs.

4. Integração com Managed API

A API Managed simplifica a configuração de conectores através de uma interface unificada. Ela lida com a resolução de parâmetros e a criação automática de pipelines.

5. Serviço de Expansão Entre Linguagens

O serviço de expansão entre linguagens permite que conectores escritos em Java sejam usados a partir de outros SDKs (Python, Go, etc.) através de comunicação gRPC.

6. Testes

Os testes são essenciais para garantir a qualidade. Incluem:

  • Testes unitários: verificam a lógica individual das transformações.
  • Testes de integração: validam a interação com sistemas reais (ex: banco de dados).
  • Testes de expansão: asseguram que o serviço de expansão funcione corretamente entre linguagens.

Exemplo Prático

// Exemplo mínimo de uma transformação ReadFrom
public class ReadFromMySource extends PTransform<PBegin, PCollection<MyRecord>> {
    
    @Override
    public PCollection<MyRecord> expand(PBegin input) {
        return input.apply("ReadFromMySource", ParDo.of(new DoFn<...>() {
            @ProcessElement
            public void processElement(ProcessContext c) {
                // Lógica de leitura
            }
        }));
    }
}

Referências

Habilidades Relacionadas