Apache Beam es un modelo de programación unificado y de código abierto que le permite a los desarrolladores definir y ejecutar pipelines de procesamiento de datos portátiles y escalables en diferentes plataformas y entornos. Fue desarrollado por Google y lanzado como proyecto de código abierto en 2016. Posteriormente, se convirtió en un proyecto de la Fundación Apache en 2017.
En este post, veremos un poco más acerca del funcionamiento de este modelo.
Apache Beam: funcionamiento a nivel práctico
Lo primero que haremos es el import de Apache Beam. En este caso, lo vamos a llamar «beam».
Ahora lo que haremos es generar un pipeline a través de un contexto. Con un contexto de Python (que se realiza con el «with»), lo que se define allí solo se puede utilizar dentro del contexto.
Tenemos el ejemplo de «p». Si ponemos este «p» fuera del «with», ya no existiría. Teniendo esto en cuenta, dentro de este contexto es donde realizamos las transformaciones.
import apache_beam as beam
from apache_beam.options.pipeline_options import PipelineOptions
with beam.Pipeline (options = PipelineOptions ()) as p:
pass # Build your pipeline here
Ahora veremos un ejemplo muy básico donde crearemos nuestra propia colección. ¿Cómo haremos esto? Podemos realizarlo a través de un «create».
🔴 ¿Quieres entrar de lleno al mundo DevOps & Cloud Computing? 🔴
Descubre el DevOps & Cloud Computing Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en DevOps & Cloud Computing por una semanaEntonces, creamos nuestro pipeline que se llamará «p». «Words» será el resultado de la transformación que vamos a aplicar. Añadiremos una operación de tipo create a nuestro pipeline. Al tipo create lo que le pasamos es una lista, un diccionario o cualquier tipo nativo de Python (lo más habitual suele ser una lista).
El resultado será una colección que se puede procesar en paralelo, a través de la función beam.Create:
#Create a PCollection
with beam.Pipeline (options = PipelineOptions ()) as p:
words = (
p | beam.Create ([
'hello',
'welcome',
'nice',
'work',
]))
Apache Beam: funcionamiento a nivel técnico
Dentro de la cláusula with
de Python definiremos las transformaciones a aplicar. Para encadenar transformaciones a la pipeline se usará el operador | , como vemos a continuación:
[Output PCollection] = [Input PCollection] | [Transform]
[Final Output PCollection] = ([Initial Input PCollection] | [First Transform]
| [Second Transform]
| [Third Transform])
[PCollection of database table rows] = [Database Table Reader] | [Read Transform]
[PCollection of 'A' names] = [PCollection of database table rows] | [Transform A]
[PCollection of 'B' names] = [PCollection of database table rows] | [Transform B]
Transformaciones de Apache Beam
Apache Beam tiene una serie de transformaciones básicas que podemos aplicar en nuestro pipeline. Las fundamentales son las siguientes:
- ParDo
- GropuByKey
- CGroupByKey
- Combine
- Flatten
- Partition
Ahora que sabes un poco más acerca de Apache Beam, es el momento de seguir formándote en alguna de las numerosas temáticas que tiene el ámbito del Big Data. Si quieres aprender con los mejores profesionales, que te guiarán a través de la teoría y la práctica para que, en unos pocos meses, te transformes en un gran profesional IT, no faltes a nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. ¡Pide ya más información y da el paso que impulsará tu futuro!