Modelo de programación para Apache Beam

Apache Beam es un modelo unificado de código abierto para definir las canalizaciones de procesamiento paralelo de datos de transmisión y en lote. El modelo de programación de Apache Beam simplifica la mecánica del procesamiento de datos a gran escala. Con uno de los SDK de Apache Beam, puedes compilar un programa que define la canalización. Luego, uno de los backend de procesamiento distribuido admitido de Apache Beam, como Cloud Dataflow, ejecuta la canalización. Este modelo te permite concentrarte en la composición lógica de tu trabajo de procesamiento de datos, en lugar de la organización física del procesamiento paralelo. Puedes enfocarte en lo que necesitas que haga tu trabajo, en lugar de en cómo se ejecuta ese trabajo.

El modelo de Apache Beam proporciona abstracciones útiles que te aíslan de los detalles de bajo nivel del procesamiento distribuido, como la coordinación de trabajadores individuales, la fragmentación de conjuntos de datos y otras tareas similares. Cloud Dataflow administra completamente estos detalles de bajo nivel.

Conceptos

Esta sección contiene resúmenes de conceptos fundamentales. En el sitio web de Apache Beam, la Guía de programación de Apache Beam te guía a través de los conceptos básicos de compilación de canalizaciones con los SDK de Apache Beam.

Conceptos básicos

Canalizaciones
Una canalización encapsula la serie completa de procesamientos que participan en la lectura de los datos de entrada, la transformación de esos datos y la escritura de los datos de salida. La fuente de entrada y el receptor de salida pueden ser del mismo tipo o pueden ser de tipos diferentes, lo que te permite convertir los datos de un formato en otro con facilidad. Los programas de Apache Beam comienzan por crear un objeto Pipeline y, luego, usan ese objeto como la base para crear los conjuntos de datos de canalización. Cada canalización representa un trabajo único y repetible.
PCollection
Una PCollection representa un conjunto de datos de elementos múltiples que puede distribuirse y que actúa como los datos de la canalización. Las transformaciones de Apache Beam utilizan objetos PCollection como entradas y salidas para cada paso de tu canalización. Una PCollection puede contener un conjunto de datos de un tamaño fijo o un conjunto de datos no delimitado de una fuente de datos que se actualiza continuamente.
Transformaciones
Una transformación representa una operación de procesamiento que transforma datos. Una transformación toma uno o más objetos PCollection como entrada, realiza una operación que especificas en cada elemento de esa colección y produce uno o más objetos PCollection como salida. Una transformación puede realizar casi cualquier tipo de operación de procesamiento, incluidos los cálculos matemáticos de datos, la conversión de datos de un formato a otro, la agrupación de datos, la lectura y escritura de datos, el filtro de datos para mostrar solo aquellos elementos que desees o la combinación de elementos de datos en valores únicos.
ParDo
ParDo es la operación de procesamiento paralelo central de los SDK de Apache Beam, que invoca una función especificada por el usuario en cada uno de los elementos del objeto PCollection de entrada. ParDo recopila los elementos de salida en un objeto PCollection de salida. La transformación ParDo procesa los elementos de forma independiente y también puede hacerlo en paralelo.
E/S de canalización
Los conectores de E/S de Apache Beam te permiten leer datos en tu canalización y escribir datos de salida desde tu canalización. Un conector de E/S consta de una fuente y un receptor. Todas las fuentes y receptores de Apache Beam son transformaciones que permiten que tu canalización funcione con datos de varios formatos de almacenamiento de datos diferentes. También puedes escribir un conector de E/S personalizado.
Agregación
La agregación es el proceso de procesar algunos valores de varios elementos de entrada. El principal patrón de procesamiento para agregación en Apache Beam es agrupar todos los elementos con una clave y ventana comunes. Luego, combina cada grupo de elementos con una operación asociativa y conmutativa.
Funciones definidas por el usuario (UDF)
Algunas operaciones dentro de Apache Beam permiten ejecutar código definido por el usuario como una forma de configurar la transformación. Para ParDo, el código definido por el usuario especifica la operación que se aplica a cada elemento, y para Combine, especifica cómo se deben combinar los valores. Una canalización puede contener UDF escritos en un lenguaje diferente del lenguaje del ejecutor. Una canalización también puede contener UDF escritos en varios lenguajes.
Ejecutor
Los ejecutores son software que acepta una canalización y la ejecuta. La mayoría de los ejecutores son traductores o adaptadores para sistemas de procesamiento de macrodatos masivamente paralelos. Otros ejecutores existen para pruebas locales y depuración.

Conceptos avanzados

Hora del evento
Es la hora a la que se produce un evento de datos y se determina por su marca de tiempo. Esta se contrasta con la hora en que se procesa el elemento de datos real en cualquier etapa de la canalización.
Sistema de ventanas
Los sistemas de ventanas permiten agrupar las operaciones de las colecciones no delimitadas mediante la división de la colección en ventanas de colecciones finitas según las marcas de tiempo de los elementos individuales. Una función analítica le dice al ejecutor cómo asignar elementos a una ventana inicial y cómo combinar ventanas de elementos agrupados. Apache Beam te permite definir diferentes tipos de ventanas o utilizar las funciones de sistemas de ventanas predefinidas.
Marcas de agua
Apache Beam hace un seguimiento de una marca de agua, que es la noción del sistema de cuándo se puede esperar que todos los datos en una ventana específica hayan llegado a la canalización. Apache Beam realiza un seguimiento de una marca de agua porque no se garantiza que los datos lleguen en orden de tiempo o en intervalos predecibles a una canalización. Además, no hay garantías de que los eventos de datos aparezcan en la canalización en el mismo orden en que se generaron.
Activador
Los activadores determinan cuándo emitir resultados agregados a medida que llegan los datos. Para los datos delimitados, los resultados se emiten después de que se han procesado todas las entradas. Para los datos no delimitados, los resultados se emiten cuando la marca de agua pasa el final de la ventana, lo que indica que el sistema cree que se procesaron todos los datos de entrada para esa ventana. Apache Beam proporciona varios activadores predefinidos y te permite combinarlos.

Pasos siguientes

Para obtener explicaciones detalladas, consulta la Guía de programación de Apache Beam en el sitio web de Apache Beam.

Apache Beam™ es una marca registrada de The Apache Software Foundation o sus afiliados en Estados Unidos y otros países.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.