O modelo Apache Beam fornece abstrações úteis que isolam você de detalhes de baixo nível de processamento distribuído, como a coordenação de workers individuais, a fragmentação de conjuntos de dados e outras tarefas semelhantes. O Dataflow gerencia esses detalhes de baixo nível por completo.
Conceitos
Nesta seção, você verá resumos de conceitos fundamentais. O guia de programação do Apache Beam, disponível em inglês no site, orienta sobre os conceitos básicos da criação de pipelines usando os SDKs do Apache Beam.
Conceitos básicos
- Pipelines
- Um pipeline encapsula uma série inteira de cálculos envolvidos na leitura e transformação de dados de entrada, além da gravação de dados de saída. A origem de entrada e o coletor de saída podem ser iguais ou de tipos diferentes, possibilitando a conversão de dados de um formato para outro. Os programas do Apache Beam começam construindo um objeto
Pipeline
e usando-o como base para a criação dos conjuntos de dados do pipeline. Cada pipeline representa um único job repetível. - PCollection
- Uma
PCollection
representa um conjunto de dados de vários elementos potencialmente distribuído que atua como dados do pipeline. As transformações do Apache Beam usam objetosPCollection
como entradas e saídas para cada etapa do pipeline. UmaPCollection
contém um conjunto de dados de tamanho fixo ou ilimitado a partir de uma fonte de dados de atualização contínua. - Transformações
- Uma transformação representa uma operação de processamento que transforma dados. Uma transformação usa uma ou mais
PCollection
s como entrada, realiza uma operação que você especifica em cada elemento nesse conjunto e produz uma ou maisPCollection
s como saída. Uma transformação pode realizar praticamente qualquer tipo de operação de processamento de dados, inclusive cálculos matemáticos, conversão de um formato para outro, agrupamento, leitura e gravação, filtragem para apresentar como resultado apenas os itens desejados ou combinação de elementos em um único valor. - ParDo
ParDo
é a principal operação de processamento paralelo nos SDKs do Apache Beam, invocando uma função especificada pelo usuário em cada um dos elementos daPCollection
de entrada.ParDo
coleta o zero ou mais elementos de saída em uma saídaPCollection
. A transformaçãoParDo
processa elementos de maneira independente e, possivelmente, em paralelo.- E/S de pipeline
- Os conectores de E/S do Apache Beam permitem ler dados no pipeline, assim como gravar dados de saída dele. Um conector de E/S consiste em uma fonte e um coletor. Todas as origens e coletores do Apache Beam são transformações que permitem o pipeline trabalhar com dados de vários formatos de armazenamento. Também é possível escrever um conector de E/S personalizado.
- Agregação
- Agregação é o processo de calcular um valor de vários elementos de entrada. O padrão computacional primário para agregação no Apache Beam é agrupar todos os elementos com uma chave e uma janela comuns. Em seguida, combina cada grupo de elementos usando uma operação associativa e comutativa.
- Funções definidas pelo usuário (UDFs, na sigla em inglês)
- Algumas operações dentro do Apache Beam permitem a execução de código definido pelo usuário como forma de configurar a transformação. Para
ParDo
, o código definido pelo usuário especifica a operação a ser aplicada a todos os elementos, e paraCombine
, especifica como os valores precisam ser combinados. Um pipeline pode conter UDFs gravadas em uma linguagem diferente do seu executor. Um pipeline também pode conter UDFs gravadas em várias linguagens. - Executor
- Os executores são os softwares que aceitam um pipeline e o executam. A maioria dos executores são tradutores ou adaptadores para sistemas de processamento de grandes volumes de dados altamente paralelos. Outros executores existem para testes locais e depuração.
- Origem
- Uma transformação que lê a partir de um sistema de armazenamento externo. Um pipeline normalmente lê dados de entrada a partir de uma origem. A origem tem um tipo, que pode ser diferente do tipo do coletor, para que você possa alterar o formato dos dados à medida que eles se movem pelo pipeline.
- Coletor
- Uma transformação que grava em um sistema de armazenamento de dados externo, como um arquivo ou banco de dados.
Conceitos avançados
- Hora do evento
- A hora em que um evento de dados ocorre, determinada pelo carimbo de data/hora no próprio elemento de dados, ao contrário da hora em que o elemento real é processado em qualquer estágio no pipeline.
- Gestão de janelas
- Com a gestão de janelas, é possível agrupar operações em coleções ilimitadas dividindo-as em janelas de coleções finitas de acordo com os carimbos de data/hora dos elementos individuais. Com essa função, o executor sabe como atribuir elementos a uma janela inicial, assim como mesclar janelas de elementos agrupados. O Apache Beam permite definir diferentes tipos de janelas ou usar as funções de gestão de janelas predefinidas.
- Marcas-d'água:
- O Apache Beam rastreia uma marca-d'água, que é a noção do sistema quanto ao limite de tempo para todos os dados de uma determinada janela chegarem ao pipeline. O Apache Beam rastreia a marca-d'água porque não é garantido que os dados cheguem ao pipeline em ordem temporal ou em intervalos previsíveis. Além disso, não há garantias de que os eventos de dados apareçam no pipeline na mesma ordem em que foram gerados.
- Acionador
- Os gatilhos determinam quando emitir resultados agregados conforme os dados chegam. Para dados limitados, os resultados são emitidos após toda a entrada ter sido processada. Para dados ilimitados, os resultados são emitidos quando a marca-d'água transmite o final da janela, indicando que o sistema acredita que todos os dados de entrada da janela foram processados. O Apache Beam fornece vários acionadores predefinidos, além de permitir combiná-los.
A seguir
Para explicações detalhadas, consulte o Guia de programação do Apache Beam, disponível em inglês no site.